bouzuya.hatenablog.com

ぼうずやのにっき

QMK Firmware でデバッグ出力する

昨日 (2018-02-20) のキーマップ v17 。予想はしていたけど、バグだらけだった。英字のリピートは効かないし……。動きを見ながら直していたのだけど、ちょっとよく分からない挙動になってしまった。そこでデバッグ出力しながら進めることにした。

QMK Firmwareデバッグ出力については公式ドキュメントの Debugging FAQ を見ると良い。

とりあえず、ぼくは↓のとおりにした。例は macOS かつ Let's Split だ。

  1. QMK Toolbox をインストールする (hid_listen でも良い)
  2. Spotlight などから QMK Toolbox 起動すると、コンソールが表示される
  3. matrix.cdebug_enable = true; を入れる (Let's Split なら既に入っている)
  4. rules.mkCONSOLE_ENABLE = yes を入れる
  5. config.h#define DEBUG_ACTION を入れる (レイヤーなどの状態を見たいなら。なくてもいい)
  6. コンパイルし、書き込む (詳細は説明しない)
  7. 左 Shift + 右 Shift (これが Magic に相当) と指定のキーを押す
  8. Magic + d でデバッグを有効化
  9. その他のコマンドは TMK の README を参照
  10. ガチャガチャやる

上記に加えて #include "debug.h" して dprint などで確認してみたら、想像と全然違う挙動をしていた。きちんと見ないといけない。今日まで出力なしでやってこれたのはある意味すごい。

いろいろひどいので、また明日直す。

キーマップ v17 をつくった

キーマップ v17 をつくった。↓でツイートした。

主な変更は OSL() の独自実装化だ。

QMK FirmwareOSL() は、上から下へは設定できないし、確認していないけど押しながら別の OSL() を押すと戻り先などがまずそう。その他の状態制御もよく分からないので、 QMK の OSL() を使わず、独自で実装した。たぶん期待した動きになっていると思う。バグはありそう。

↑の制約を回避したことで実現できたのが、同時押しの排除だ。 Sticky Keys や複合キーなどと呼ばれているものだ。それも mod だけではなく layer も含めたものだ。ぼくとしてはすべての layer や mod が同時押しなしで押せるのはとても素晴らしいことだ。

これは機能的な変更でないが、ファイルを分割した。おかげで gist に残しづらくなったため、 2018-02-19 に書いた通り、フォークしたリポジトリに置いた。 bouzuya/qmk_firmware の bouzuya ブランチにある v17 を見ると良い。

これでキーマップに対しての不満のうち大きなものがなくなった。あとはちょっとした配置換えくらいだと思う。 LED などの表示や物理的なキー配置に気持ちが移っていきそうだ。

QMK Firmware の機能への依存を減らしている。これは QMK に不要な機能が多すぎるせいもあるし、リポジトリに興味のないものが多すぎるせいもあるし、今後 Rust で Firmware を書き直して移りたいからでもある。またそれはすこし先の話になりそうだけど。


今日は休んでおでかけ。腹帯を買いに行ったりした。そんなものが要るのかって感じではある。

QMK Firmware をフォークした

キーマップを触っている。 QMK Firmware をフォークして bouzuya/qmk_firmware に置いている。いままでフォークしていなかったのは驚きだ。bouzuya ブランチ で作業している。ただ、まだ push していない分がままある。一段落ついたら公開する。

v15 にバグが多くあって、 ENTER などのキーが二重で入るようになっている。今日一日つらかった。明日は用事があるので休みを取っている。空き時間でこれを直すつもりだ。

2018-W07 ふりかえり

2018-W07 をふりかえる。

2018-W07 の目標 とその記事

目標。

  • ☑ QMK Firmware の OSL / OSM を調べ・試す
  • ☐ bouzuya/node-backlog-api v2 をつくる
  • ☐ リモコンの信号のことを書く
  • ☑ 『プログラミング言語の基礎概念』を読み進める

記事。

目標の半分は達成できた。ただその半分も中途半端な感じではある。読書はペースが想定の半分くらいだ。

キーボードの件ではキーマップ v15 で mod key を排除し、理想のキーボードに向かって前進した。

リモコンの信号の件は飽きてしまっている。精度の低さが原因でいまひとつ任せられない。センサーを増やしたり、スマートスピーカーを買えば状況が変わるかもしれないけれど……。

つくったもの

2018-02-12/2018-02-18

(なし)

よんだもの

(なし)

みたもの

まだ『孤独のグルメ』を観ている。一話だけゆるキャンを観た。

その他

腰の痛みはすこし、すこしだけマシになっている気がする。

また寝坊が増えているので、なにかを観ながら寝るのはやめよう。

2018-W08 の目標

キーマップ v15 をつくった

Let's Split で使っているキーマップの v15 をつくった。

2018-W07 の目標にも「 QMK Firmware の OSL / OSM を調べ・試す」を含めていた。そこでも書いたとおり 2018-01-31 から使いはじめたキーマップに不満があって、いろいろ試していた (2018-02-13 など) 。

その不満はレイヤー切り替え後に Mod キーが残りがちな点と同時押しが多すぎる点だ。

前回の変更は Mod キーをすべて別レイヤーに持っていったことだ。これはアイデアとしては良くて、おかげで Mod キーを左右対称にできた。

以前も書いたがぼくは物理キー数 36 で Let's Split を使っている。この環境では Mod キーを 2 つずつ配置するのは難しい。 LT() などで英字キーと兼ねるなど、何かしらの工夫が必要だ。その工夫として別レイヤーに持っていったわけだ。

イデアとしては良いのだけど……と書いた。現状はあまり良くない。実態としてはいくつかの問題があるからだ。そのひとつは Mod キーが残りがちなことだ。これがひとつめの不満だ。

これはレイヤー切り替えとの相性が悪いのだと思う。感覚的には「レイヤー切り替え→押し下げ→レイヤー戻り→離し (既に別のキーになっているため残る) 」が起きているように思える。改めてレイヤーを切り替えて、押す→離すをすれば解除されるのだけど、面倒すぎる。そうならないようにそれらのキーをカタカタと押す習慣ができつつある。ダメだ。

もうひとつの不満は同時押しが多すぎる点だ。これも前に書いた気がするのだけど、ぼくは同時押しが嫌いだし、良くないものだと思っている。同時押しは入力を難しく遅くするものだと思っている。↑にも書いたとおりレイヤーなどが前提になる Let's Split のようなキーボードを使うべきでないと言われそうな不満ではあるのだけど、いつか同時押しを全廃したいと思っている。

解決策としては同時押しを順押し (?) で済むようにする。順番に押せるようにすればいい。これが意外と難しいし、別の問題も引き起こす。それはまた別で書く。

今回はどちらも中途半端なのだけど、すこしは改善に近づいた。

QMK Firmwareprocess_record_user で強引に処理した。 QMK Firmware 自体に手をいれることも考えたのだけど、調べてみたら大げさになりそうだし、いかにも非標準な感じだったので避けた。

独自に Mod を保持して、それを送るようにしただけだ。無駄にキーを送っている気がするし、一部これでいいのか怪しいところはある。

独自の Mod になってしまったので、本来の Mod キーはキーボードから消えてしまった。ぼくのキーマップは新時代に突入したかもしれない。

ユニクロからスヌーピーをもらった / PMK: PIMP MY KEYBOARD からキーキャップが届いた

ユニクロで買い物をしたら黒いスヌーピーをもらった。キャンペーンで 10,000 円以上を購入した人に先着で……とのことらしい。これは想像なのだけど、白いのをつくったら思ったより売れたので、第二弾として黒いのをつくったら思ったより売れなくて困ったんだろうな。で、キャンペーンとか言って配ってるんだろうなって。あくまで想像だけど。ぼくの使ってた Realforce (墨) みたいな見た目なので、スヌーピーな層には人気でないだろうな。想像だけど。

PMK: PIMP MY KEYBOARD から荷物が届いた。キーキャップ。ホームキー (とぼくが呼んでいる F/J に置くアレ) が欲しくて買った。 Bump / Bar / Deep Dish があったので、それぞれ買った。あと DSA のほか G20 のものも買った。ついでにマグカップも買った。届いてからこれは別に要らないなってなった。

まだすべてを試したわけではないけど、第一印象を書く。

ホームキー。 Deep Dish はちょっと深さのあるキー。思ったよりずっと良い。フィット感が良い。ただパッとキーボードに手を置いた時に場所を定めるには向いてなさそうな気がする。 Bar は線のちょぼが入っているアレ。まだ試していない。 Bump は点のちょぼがついているアレ。 Macbook もこれなので馴染んでいる。これがしっくり来る。慣れの問題かもしれない。

あと G20 。高さが低いのは良いとしてすこしだけ角度がある。あと角がとれている点で良い。親指に置くと良さそう。全体としてどうかは試していない。 DCS / DSA / G20 で比べてみたい。予想では結局 DCS がしっくりきそう。

明日は Nyquist のものをつけかえて試してみる。

Nyquist を 1 日使う、違和感なし

朝から読書。今日までで予定の半分しか進んでいない。逆に言うと、きちんと朝起きれば予定通りに進みそう。

今日は一日 Nyquist を使ってみた。意図したものではなく、仕事をはじめようとしたら Let's Split の設定が QMK Firmware の挙動を確かめようといじったままになっており、使える状態になかったため。 Let's Split と同じキー数しか使っていないし、特に違和感はない。

どうも昼頃にキーキャップが届いていたみたいなんだけど (Tracking によると) 、不在票も入っていないし、困る。はやくホームキーを差し替えたい。