キーボード





[-] 1. キーボード遍歴

[-] 1.1. 2025年候補

分離型キーボードを探しています。

[-] 1.1.1. 根拠

  1. column staggered vs row staggered → column staggered
    • row staggered(旧来のキーレイアウト)は、タイプライターのアーム同士が絡まない ようにするための措置なので、今となってはずらす意味がありません。 → https://salicylic-acid3.hatenablog.com/entry/key-layout 指の曲げ伸ばしでキーを選ぶことを考えれば、column 方向に一列であることには 意味があります。 また、指の長さ(中指が一番長く小指が一番短い)を考えれば、 指の長さに応じてずらすことにも意味があります。これ、すなわち column staggered 。
  2. 40% or 60%
    • 私の場合、フルキーボードのテンキーやファンクションキーはほとんど使いません。 カーソルキーの上にある Home, End, Insert, Print Screen, Num Lock, Pause もほとんど使いません。
    • なので、60% キーボード + カーソルキー、が私的にはベストフィットです。
    • 他方、40% キーボード。60% キーボードから更に数字キー +α を省いたものです。 どうやって数字キー(及びその shift にある !,@,# などの記号キー)を押すか、 というところでで 'Layer' が登場します。 キーに複数の意味をもたせる機能ですね。
    • shift, ctrl, alt も layer と言えないこともないですが、それに更に独自拡張を 施したもの、とざっくり理解しています。
    • layer を増やすか、キーを増やすか。 仮に layer を 0..3 の 4 種類とします。上記の shift, ctrl, alt も加えると 計 7 種類。これに掛けるとことの qwerty(10キー) x 3、つまり
10 x 3 x 7 = 210 種類

打てることになります。これに対して、layer のない 100% キーボードは

(10 x 3) x 3 + 70 = 160 種類

となります。(shift, ctrl, alt は 10 x 3 にかかり、残りの 70 にはその機能は

ない、というざっくりとした計算です。

ちょっと雑ですが、この式の意味するところは、

  キー数の上限が決まっているなら、(x,y,z)は立方体に近いほど全組み合わせは多くなる。

ということです。

layer の威力です。
  • 40% キーボードのメリットが見えてきました。実際、 「column staggered の 60% キーボードは数字が打ちにくい」 という動画を見て、その通りだと私も思った次第です。 E, I の先のキーってかなり遠いです…。

[-] 1.1.2. 参考情報

[-] 1.2. 2020年 REALFORCE R2 TKL キーボード テンキーレス ALL30g

で、次に選んだのがこれ。

今のお気に入りはこれです。

腱鞘炎気味の老人(私)には一番軽い 30g で正解でした。

[-] 1.2.1. Tips

よく忘れるのでメモw

Ctrl <-> CapsLock 入れ替え:Fn + F11

[-] 1.2.2. 参考

[-] 1.3. 20??年〜2020年 HHKB

カーソルキーにどうしても馴染めず断念。

[-] 2. 要件

[-] 3. Keyball44 on Linux

腱鞘炎気味でとうとう手首も痛くなってきたので、セパレートタイプを 使ってみることにしました。色々見てみましたが、トラックボール付きのこれ: が良さそうと思い、試してみています(2924-11時点)

[-] 3.1. 製作

3-8.ProMicroの書き込みと動作確認

テスト用のファームウェアをProMicroに書き込みましょう。
...
Keyball44のファームウェアは、トラックボールを右手と左手のどちらに載せた場合でもファームウェアは共通です。REMAPに登録してあるKeyball_test.hex を書き込み(FLASH)してください。上記リンクにあるFLASHボタンを押すと、書き込み方法の説明が表示されます。 USBケーブルを接続しているのにキーボードが認識されない場合は、半田付けしたRESETスイッチを素早く2回押すと認識されると思います。

とありますが、 Linux 環境では動作しませんorz…。

どうやら、https://keymap.app というサイトは javaScript > USB > keyboard firmware という経路で firmware を書き込もうとするようですが、 Linux ではエラーになるようです。

[-] 3.1.1. 「片方ずつはんだごてを当てる」大事

2箇所ハンダがついてなかった。

[-] 3.1.2. ソケットの隙間に注意

[-] 3.1.3. firmware が書き込めない

取り急ぎ windows で。

[-] 3.1.4. ピンセットでショートしない

1つキーをつけて確認した。

[-] 3.1.5. キースイッチのはめ込み

わかりにくかったのでメモ。

はめ込みは上から。上下左右は、基盤のソケットの向きを見ればわかる。

  • ハイプロ: 端子は下
  • ロープロ: 端子は上

[-] 3.1.6. ロープロの場合、ミドル基盤は使わない

[-] 3.1.7. セラミックボールは米粒よりも小さい

最初、紛れ込んだプラゴミかと勘違いしてました。

落とすとまず見つからなさそう。

[-] 3.1.8. ネジ間違いに気をつける

はい。白状します。3箇所で間違ってました。

後でネジが足りなくなったり別のものが余っていたりw

[-] 3.1.9. 正規ファームウェアの書き込みは1つづつ

写真がケーブルで左右つながっているので、ついそのまま書き込みしてしまいましたが、 誤ってました。エラーが出て焦りましたが、 ケーブルは外して左右別々に2回行う必要がありました。

[-] 3.1.10. 4連ピンヘッダの長さに注意

4連ピンヘッダ、長いのと短いの2種類 x2 合計4つあって間違えました。 短いほうが正解だったようです。

[-] 3.2. Keymap

[-] 3.2.1. 凡例

忘れていたので、メモします:

  • レイヤーの移動方法
    • MO(n): 押している間、対象のレイヤーに移動
    • TG(n): 対象のレイヤーにトグルで切り替わる
    • 長押し: これが便利。指をホームポジションにおいたまま長押しでレイヤーを 指定できるようになります。

参考: https://salicylic-acid3.hatenablog.com/entry/remap-manual

[-] 3.2.2. remap on linux

下記設定がないと linux で remap-app が動作しない(web アプリがローカルの usb にアクセスできない)。

  1. 下記を /etc/udev/rules.d/92-viia.rules に作成
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"
  2. 更新
    $ sudo udevadm control --reload-rules && sudo udevadm trigger

参考:

[-] 3.2.3. tool

QMK:keyboard firmware
VIA:GUI。closed
Vial:open source VIA
Remap:web I/F

[-] 3.2.4. 基本方針

[-] 3.2.5. 共通用語

場所を便宜的に excel のセル様に名付けます:

| A1  | B1  | C1  | D1  | E1  | F1  |     ||     | I1  | J1  | K1  | L1  | M1  | N1  |
| A2  | B2  | C2  | D2  | E2  | F2  |     ||     | I2  | J2  | K2  | L2  | M2  | N2  |
| A3  | B3  | C3  | D3  | E3  | F3  |     ||     | I3  | J3  | K3  | L3  | M3  | N3  |
|     |     | C4  | D4  | E4  | F4  | G4  || H4  | I4  |     |     |     | M4  |     |

[-] 3.2.6. v2025-02-17

layer0

| tab |  Q  |  W  |  E  |  R  |  T  |     ||     |  Y  |  U  |  I  |  O  |  P  | bs  |
|*ctrl|  A  |  S  |  D  |  F  |  G  |     ||     |  H  |  J  |  K  |  L  | ;:  |enter|
|     |  Z  |  X  |  C  |  V  |  B  |     ||     |  N  |  M  | ,<  | .>  | /?  | '"  |
|     |     | _   |*alt |MO(1)|space|MO(2)||LM(1)| alt*|     |     |     | esc |     |

layer1

|  v  |  !  |  @  |  ↑  |  $  |  %  |     ||     |  ^  |  &  |  *  |  (  |  )  | del |
|  v  | `~  |  ←  |  →  |  #  | [[  |     ||     | ]}  | MB1 | MB2 | MB3 |  v  |  v  |
|  v  |  v  | \|  |  ↓  |  -_ | =+  |     ||     |  v  |  v  |  v  |  v  |  v  |  v  |
|     |     |  v  |  v  |  v  |  v  |  v  ||  v  |  v  |     |     |     |  v  |     |

layer2

|  v  | F1  | F2  | F3  | F4  | F5  |     ||     |  ,  |  7  |  8  |  9  |  -  |  v  |
|  v  | F6  | F7  | F8  | F9  | F10 |     ||     |  .  |  4  |  5  |  6  |  +  |  v  |
|  v  | F11 | F12 |  v  |  v  |  v  |     ||     |  0  |  1  |  2  |  3  |  =  |  v  |
|     |     |  v  |  v  |  v  |  v  |  v  ||  v  |  v  |     |     |     |  v  |     |

layer3

|  v  |     |     | CA↑ |     |     |     ||     |  ,  |     |     |     |     |     |
|  v  |     | CA← | CA→ |     |     |     ||     |     |     |     |     |  v  |  v  |
|  v  |     |     | CA↓ |     |     |     ||     |     |     | Kb2 |     |  v  |  v  |
|     |     |     |     |  v  |  v  |  v  ||  v  |  v  |     |     |     |  v  |     |

凡例

_:NO(No Operation; 動作無し)
MBn:n番目 Mouse Button
v:TRNS(Transparent; 透過; 先の layer と同動作)
CA...:ctrl + alt + カーソル; 仮想デスクトップ切り替え
Kb2:トラックボール感度 +100 cpi
L:長押しで layer3 に
;:長押しで layer2 に
LM(1):実際には shift を追加した LM(1, shift) を割り当てています
alt*:長押しで layer1 に。E4 の MO(1) と被るかも

コメント

  • layer2 の10キーが押しにくかったので、変更しました。 右手の小指 + 右手の残りの指、というのは意外と混乱します。 他の方の例を見てて、左手で layer を切り替え、右手は10キーに専念、 というのを見て拝借させていただきました。
    • 合わせて、10キーの左を物理10キーと同じように -+= を配置しました。
  • [], {} が打ちにくかったので、layer1 のホームポジションに近い場所に 配置し直しました。

[-] 3.2.7. v2024-12-07

2024-12-07 時点で、下記のようになりました。

layer0

| tab |  Q  |  W  |  E  |  R  |  T  |     ||     |  Y  |  U  |  I  |  O  |  P  | bs  |
|*ctrl|  A  |  S  |  D  |  F  |  G  |     ||     |  H  |  J  |  K  |  L  | ;:  |enter|
|     |  Z  |  X  |  C  |  V  |  B  |     ||     |  N  |  M  | ,<  | .>  | /?  | '"  |
|     |     | _   |*alt |MO(1)|space|  _  ||LM(1)| alt*|     |     |     | esc |     |

layer1

|  v  |  !  |  @  |  ↑  |  $  |  %  |     ||     |  ^  |  &  |  *  |  (  |  )  | del |
|  v  | `~  |  ←  |  →  | -_  | =+  |     ||     |  v  | MB1 | MB2 | MB3 |  v  |  v  |
|  v  |  v  | \|  |  ↓  | #   | [{  |     ||     | ]}  |  v  |  v  |  v  |  v  |  v  |
|     |     |  v  |  v  |  v  |  v  |  v  ||  v  |  v  |     |     |     |  v  |     |

layer2

|  v  | F1  | F2  | F3  | F4  | F5  |     ||     |  ,  |  7  |  8  |  9  |  v  |  v  |
|  v  | F6  | F7  | F8  | F9  | F10 |     ||     |  0  |  4  |  5  |  6  |  v  |  v  |
|  v  | F11 | F12 |  v  |  v  |  v  |     ||     |  .  |  1  |  2  |  3  |  v  |  v  |
|     |     |  v  |  v  |  v  |  v  |  v  ||  v  |  v  |     |     |     |  v  |     |

layer3

|  v  |     |     | CA↑ |     |     |     ||     |  ,  |     |     |     |     |     |
|  v  |     | CA← | CA→ |     |     |     ||     |     |     |     |     |  v  |  v  |
|  v  |     |     | CA↓ |     |     |     ||     |     |     | Kb2 |     |  v  |  v  |
|     |     |     |     |  v  |  v  |  v  ||  v  |  v  |     |     |     |  v  |     |

凡例

_:NO(No Operation; 動作無し)
MBn:n番目 Mouse Button
v:TRNS(Transparent; 透過; 先の layer と同動作)
CA...:ctrl + alt + カーソル; 仮想デスクトップ切り替え
Kb2:トラックボール感度 +100 cpi
L:長押しで layer3 に
;:長押しで layer2 に
LM(1):実際には shift を追加した LM(1, shift) を割り当てています
alt*:長押しで layer1 に。E4 の MO(1) と被るかも

コメント

  • layer0
    • 基本、QWERTY
    • 左端列 A1..2 は、sun や hhkb 的標準
    • shift は space 長押し(いわゆる SAS(Space And Shift))としてみました。
    • 右alt は AX キーボードの名残。これで PC 側にて IM on/off としています。
      • 長押しで layer1 としました。このおかげで、右手だけでトラックボールでの マウスクリック操作が出来るようになります。
    • esc を置く場所がなかったと頻度が ctrl や tab より低いので、右下 M4 に配置してみました。 肉球キートップにしたので、小指を曲げて感触ですぐ分かりますw。
  • layer1
    • B1..M1 に、普通キーボードの shift + 数字キーで出る記号をイメージしやすいここに置きました。
    • del は要らないと思っていたのですが、やはり GUI の選択肢の削除で使用するので、 MO(1) + BS で del としました。
    • 最も個人的事情と思われるのが、D1, C2, D2, D3 に割り当てたカーソルキー。 ダイヤモンドカーソルに慣れた年寄りには 分割型キーボードでもそれを採用しようとしたのですが、簡単にはいきませんでしたorz。 row staggered だと
      ─────────────
       │E│
      │S│D│
       │X│
      ─────────────
      でカーソルっぽいのですが、column staggered だと
      ─────────────
      │ │E│
      │S│D│
      │X│
      ─────────────
      となって、どうしても下移動としての X を C に打ち間違えてしまいます。 そこで、カーソルを e-s-d-x から e-s-d-c に変えてみました:
      ─────────────
      │ │E│
      │S│D│
      │ │C│
      ─────────────
    • 40%キーボードでダイヤモンドカーソルを使おうとする者(小生くらい?)の宿命ですが、 どうしても E(↑) と記号キー '#' がぶつかってしまいます。 ちょっと変則的ですが '#' は E3 に配置しました。
    • 角括弧/波括弧は、物理的に場所をイメージしやすい F3,I3 としてみました。 ネットでそのようにされている方がおられたので参考にしていますm(__)m
      • 波括弧{} は MO(1) + shift + 角括弧、で打ちますが、指が足りないので、 ここは H4 を LM(1, shift) とし、同時押しを割り当てました。
    • マウスボタン 1..3 をJ2..L2 としています。E4 の MO(1) + 右手ホームポジション で、結構使い勝手がよいと思ってます。
    • 記号系は layer1 にまとめたかったので、その他を B2, E2, F2, C3 に置いてみました。
  • layer2
    • Fn, テンキーをこのレイヤーにまとめました。Fn はほとんど使わないので 今の所困っていません。
    • 数字キーはそこそこ打つのですが、60%以上のキーボードにある定位置である必要はなく、 layer に置けることこそが電子時代のキーボードなので、数字の配置がイメージしやすい ここに置いてみました。まだ慣れていませんが、それほど苦でもありませんw。
      • '0' は普通のテンキーでは J4 くらいの場所にありますが、 40% キーボードでは4列目が普通はないので、1 の横の I3 に置くことをまずは 思いつきますが、I3 は人差し指的に遠い割には結構打つキーなので、もう少し 打ちやすく場所的に違和感もない I2 としてみました。
    • テンキーの周りに、よく使うであろう , や . を置いてみましたが、今の所 使ってはいません。
  • layer3
    • ctrl + alt + カーソルキーに割り当てられている仮想デスクトップの切り替えを 頻繁に行うので、カーソルキーの layer3 上に配置してみました。 layer3 への切り替えは L 長押し、としています。結構便利です。
    • layer3 + トラックボール、によるスクロールが keyball44 には既に組み込まれています。 そのため、L 長押し + トラックボールで画面スクロールができるわけです。 これで、マウス相当のことが出来るようになりました。これはかなり便利です!
    • キーボードのケーブルを外すとトラックボールの移動が遅くなるので、 感度を 400 cpi に上げるのによく使用するのが Kb2 です。 default の配置をそのまま使用しています。

[-] 3.2.8. v2024-12-05

  • テンキー(layer2)の 0 が打ちにくいので移動。
  • 左下の shift をつい使ってしまっているので改めて廃止。

[-] 3.2.9. v2024-12-03

  • a, f 長押しを layer(2), layer(3) にすることのデメリットは、 キーリピートが効かなくなること。ワード単位でのカーソル移動でも キーリピートはあって欲しいので、変更することに。候補は:
    • 左手のホームポジション近く。
    • 右手のホームポジションかその近く。
      • 右手の使用頻度が低いので、意外と良いかも。

[-] 3.2.10. v2024-12-01

  • 長押し S を layer(2) にするのは失敗。カーソルキーなので、長押しで リピートして欲しいのに layer(2) に割り当ててしまっているのでリピートしない ことが判明。そこで、カーソル(esdc)以外のところに layer(2) を割り当てる 必要がありました。
    • ホームポジションかつカーソル以外、ということで F の長押しを layer(2) としてみます。

[-] 3.2.11. v2024-11-30

  • 大胆にダイヤモンドカーソルを e-s-d-x から e-s-d-c に変えてみます。
    • それに合わせ、通常のカーソルも同じキーに
  • テンキーを S 長押しで使えるように
    • それに合わせ、Fnn をずらす

[-] 3.2.12. v2024-11-29

  • 左下の MO(3)、多少改善されたけどやはり押しにくいので、

 A(左人差し指)の長押し(hold)に割り当ててみる。

  • 当初、同じくホームポジションの F に割り当ててみたのですが、 仮想デスクトップの切り替え(ctrl + alt + カーソル)と相性悪いので A としました。

[-] 3.2.13. v2024-11-29

  • 左側に MO(3) を置くことで、トラックボールによるスクロールを解決
    • A3 に配置しました。
    • A3 にあった *shft は SpaceAndShift(通称 SaS)に移動。
    • コードを修正して *Ctrl などでやろうとしたけど上手く行きませんでしたorz
  • 仮想デスクトップ間の移動に ctrl + alt + カーソルとしているがこれが打ちにくかったので MO(3) に配置。

[-] 3.2.14. v2024-11-23-2

  • layer1 に記号をシフト無しで打てるように。
    • [], {} はイメージしやすい場所に移動。
    • プログラミングには、数字より記号の方を多様するため。
  • layer2 に Fn キーとテンキーを集める

[-] 3.2.15. v2024-11-23

  • mo(2) に記号をシフト無しで打てるよう配列した

[-] 3.2.16. v8

  • mo1 を tg1 に。 意図は、やはり layer キーを押しながら記号(! など。mo1 + shift + Q..P ) は辛いのが分かったから。 ただし、tg1 も戻すのが面倒…。つい、いつのまにか layer1 モードのまま alphabet を押そうとしてしまう。

layer0

| tab | Q   | W   | E   | R   | T   |     |     | Y   | U   | I   | O   | P   | bs  |
|*ctrl| A   | S   | D   | F   | G   |     |     | H   | J   | K   | L   | ;:  |enter|
|*shft| Z   | X   | C   | V   | B   |     |     | N   | M   | ,<  | .>  | /?  | '"  |
|     |     | ?   |*alt | tg1 |space| mo2 | mo3 | alt*|     |     |     | esc |     |

layer1

|     | 1!  | 2@  | 3#  | 4$  | 5%  |     |     | 6^  | 7&  | 8*  | 9(  | 0)  |     |
|     | `~  | \|  | -_  | =+  |     |     |     | ←   | ↓   | ↑   | →   |     |     |
|     |     |     |     |     |     |     |     | [{  | ]}  |     |     |     |     |
|     |     |     |     |     |     |     |     |     |     |     |     |     |     |

layer2

|     | F1  | F2  | F3  | F4  | F5  |     |     | F6  | F7  | F8  | F9  | F10 |     |
|     | F11 | F12 |     |     |     |     |     |     |MsBt1|MsBt2|MsBt3|     |     |
|     |     |     |     |     |     |     |     |     |     |     |     |     |     |
|     |     |     |     |     |     |     |     |     |     |     |     |     |     |

layer3

(original と変わらず)

[-] 3.2.17. v?

Layer 0

TAB   Q   W   E   R   T               Y   U   I   O   P   BS
*Ctrl A   S   D   F   G               H   J   K   L   ;:  Enter
*Shft Z   X   C   V   B               N   M   ,<  .>  /?  '"
          //  Win Ctrl  Sp  //    Enter Alt*            ESC

Layer 1

1!  2@  3#  4$  5%              6^  7&  8*  9(  0)
                                ←   ↓   ↑   →   
`~                              [{  ]}  \|
    //  Win Ctrl  Sp  //    Enter Alt*            ESC

Layer 2

F1  F2  F3  F4  F5              F6  F7  F8  F9  F10
F11 F12                             M1  M2  M3

    //  Win Ctrl  Sp  //    Enter Alt*            ESC

Layer 3

備考

/../ 動作せず

[-] 3.3. Error: Unsupported device: Vendor ID: 5957 Product ID: 400

Windows での remap サイトでのみ表示。Linux desktop では一般的なエラー

Error: Opening a USB device failed: SecurityError: Failed to execute 'open' on 'USBDevice': Access denied.

しか出ませんorz。さて、Win のエラーメッセージでググると https://github.com/Yowkees/keyball/discussions/594 より、 https://remap-keys.app/catalog/tAJ9Htme4oNabUkx4832/firmware からダウンロードした hex ファイルを使って:

$ cd [qmk.git-dir]
$ qmk flash -m ATmega32U4 -bl avrdude PATH/TO/Keyball44-1711413474675.hex

で書き込めるとのこと。無事、これで remap app も動作しました。

[-] 3.4. トラックボールの感度が急に悪くなった

[-] 3.4.1. 発端

突然、いくらトラックボールを高速回転してもマウスポインタが超スローに。

思い当たるのは、裏返しにして裏のネジを締めようとしたくらい…。

[-] 3.4.2. 対応

まずは結論から。Layer3 の Kb2..Kb5 で調整可能でした。

[-] 3.4.3. 原因

いつのまにか Layer3 kb5,3 辺りを押していて最低値(100)にしていたみたいです。

これが分からず、6時間以上(ただし、風呂と食事と休憩時間を挟む) 下記の試行錯誤を繰り返していましたw。

[-] 3.4.4. 試行錯誤

  • トラックボールの汚れかと思い拭いてみる → 違う。
  • レンズ側の汚れかと思い拭いてみる → 違う。
  • デスクトップ側でマウス感度を最大値にしてみても相変わらず。
  • キーボードを裏返したことでトラックボールケースが圧迫され歪んだ・壊れた・ レンズを覆ってしまい受光できなくなった → どれも違う。
  • 「トラックボール 感度」でググって、ようやくヒントを見つけました。 いつのまにかトラックボールの感度が最低値(100)になっていたようです。
    • 500 cpi くらいが小生には丁度よいみたいです。
Key   | R3Cr KC2c      ------
Ball  |     0   0   0   0   0
      | CPI 5100 SCR off DIV3
Layer | -------  AML off  650

Ball  |     1   1

[-] 3.5. qmk による make

  1. 'qmk' を install
    1. install
      $ python3 -m pip install --user qmk
    2. (optional) ~/.local/bin/ を PATH に登録
    3. setup 色々 warning や error を報告してくるが、[y]es で ok:
      $ qmk setup
      ...
      Warn: Missing or outdated udev rules for 'atmel-dfu' boards. Run 'sudo cp /home/ido/p/github/qmk_firmware.git/util/udev/50-qmk.rules /etc/udev/rules.d/'.
      ...
      Err:  Can't find arm-none-eabi-gcc in your path.
      ...
      Would you like to install dependencies? [Y/n] y
      ...
      Would you like to clone the submodules? [Y/n] y
    4. test Clueboard 66% rev3 を例に:
      $ qmk compile -kb clueboard/66/rev3 -km default
  2. 'keyball44' 用をビルド https://github.com/Yowkees/keyball/tree/main/qmk_firmware/keyboards/keyball より
    1. git clone
      $ git clone https://github.com/Yowkees/keyball.git keyball.git
    2. 隣に qmk_firmware を git clone
      $ cd ..
      $ git clone https://github.com/qmk/qmk_firmware.git --recurse-submodules qmk_firmware.git
      $ cd qmk_firmware.git
      $ git co 0.22.14
      $ cd ..
      • ディレクトリ名は .git 付き
      • とりあえず全部ダウンロード
    3. keyball.git を symlink
      $ ls
      ... keyball.git/ ... qmk_firmware.git/ ...
      $ cd ../qmk_firmware.git/keyboards/
      $ ln -s ../../keyball.git/qmk_firmware/keyboards/keyball keyball
      $ ls keyball/
      drivers  keyball39  keyball44  keyball46  keyball61  lib  one47  readme.md
      $ cd ..
    4. make!
      1. エラーが出るので、指示に従って下記を実行:
        $ python3 -m pip install -r /home/ido/p/github/qmk_firmware.git/requirements.txt
      2. make!
        $ SKIP_GIT=yes make keyball/keyball44:default
        エラーが出る:
        keyboards/keyball/lib/keyball/keyball.c:54:24: error: initializer element is not constant
        .pressing_keys = { BL, BL, BL, BL, BL, BL, 0 },
        -> https://github.com/Yowkees/keyball/discussions/622
    5. flash!
      $ qmk flash -kb keyball/keyball44 -km ax
      ...
      Waiting for USB serial port - reset your controller now (Ctrl+C to cancel)...
      と出るので、キーボード側のリセットスイッチを(慣例により)2回押す。
      ...
      Device /dev/ttyACM0 has appeared; assuming it is the controller.
      ...
      と出て一応終了するが、どうも変だw。 端末が変なモードになり、変なキーが印字される。 リセットでは収まらず、usb の挿し直しでようやく収まる。 設定したキーは有効になっているようだ。

[-] 3.5.1. debug

  1. rule.mk に以下を記述。使用前に compile & flash:
    CONSOLE_ENABLE = yes
  2. dprint() などを使って printf-debug
  3. DB_TOGG キーをキーにアサイン(か Command なる feature)。
  4. compile & flash
  5. 通常はデバッグ情報は印字されないが、DB_TOGG キーで debug mode on
  6. qmk console コマンドで印字される。

参考

[-] 3.5.2. 参考

[-] 3.6. ctrl + トラックボールでスクロールしたい

[-] 3.6.1. そのものずばり

https://docs.qmk.fm/features/pointing_device#examples に例があったので これでいけそう。

[-] 3.6.2. 試行錯誤

現在は layer3 に切り替えることでトラックボールがスクロールモードになる (通常は、もちろんマウスカーソル移動)。

コードを見てみる。

pointing_device_driver_get_report()             // QMK callback
  motion_to_mouse()
    keyball_on_apply_motion_to_mouse_scroll()
  • is_keyboard_left() は QMK で定義されており、分離キーボードでは常に true の模様。
  • QMK からの callback pointing_device_driver_get_report() で、トラックボールの 移動量をスクロール量としてパソコンに伝えている模様。
  • スクロール量かカーソル移動量かは bool as_scroll = keyball.scroll_mode で指定。
layer_state_set_user()                          // layer 変更時 callback
  keyball_set_scroll_mode(get_highest_layer(state) == 3)
  • keyball.scroll_mode は keyball_set_scroll_mode() で layer3 の時のみ true にセットしている。

ソース:

qmk_firmware/keyboards/keyball/lib/keyball/keyball.c qmk_firmware/keyboards/keyball/keyball44/keymaps/ax/keymap.c

[-] 3.7. 移行中は新旧どちらのキーボードでも違和感ばかり

移行中、新キーボードに違和感感じるのは当然だけど、 もたもたしている訳にはいかないケースで旧キーボードを使うと、こちらもまた違和感がありますw。

新しい環境に慣れつつあるんだな、と前向きに捉えるようにしていますw。

[-] 3.8. TODO

  • space にポチをつけたい。





Generated by juli 2.3.2