QMK Firmware を色々改造して最強の Corne Cherry を仕立てる - 壁ツェーン
Performance Mode
あんまり気にする人いないと思うんですが、OLED の更新ってそこそこ時間かかるんですよね。それがキー入力のレイテンシーに影響するとなると音ゲーするときちょっとやだなあと思って、 OLED の更新を完全に止めるモードを実装しました。
こう書くと簡単そうですがやってみると意外と大変で、更新を止めたはずなのに勝手に再開してしまうという現象に数時間悩まされました。結果からいうとこれは oled_active 変数周りの挙動の仕様で、OLED の自動消灯がビルドオプションで有効になっている場合ループ毎に毎回 oled_on が走るという罠にも程がある挙動をしていました。いやまあわかるけどさ……。
この変数だけを使っていたのではどうにもならなさそうだぞ、ということで oled_driver.c に追記して oled_paused という変数を新たに導入、これが true の間は OLED に I2C でコマンドを送信する関数は全て即座に終了するという感じにしました。これでようやく所望の動作になりました。
Keychron C1 Pro/C2 Pro Review - RTINGS.com
- 4 Chord Split Delay
- 2.9 ms
- 8 Chord Split Delay
- 7.2 ms
現状のQMK仕様のほぼ理論値出てるね.
ErgoDox EZ Review - RTINGS.com
- 4 Chord Split Delay
- 2.9 ms
- 8 Chord Split Delay
- 7.5 ms
こっちもほぼ理論値に近い.
"build": { "debounce_type": "sym_eager_pr" }, "ws2812": { "pin": "D7" }, "rgb_matrix": { "driver": "is31fl3731" }, "processor": "atmega32u4", "bootloader": "halfkay", "debounce": 30,
QMK Firmwareなキーボードの中でErgoDox EZだけSingle-key Latency小さいのは工場出荷時点でEager Debounceに直してあるんだろうなと思ったけど案の定.
sym_eager_pk
じゃなくてsym_eager_pr
なのはなんでだろう. ATmega32U4だから負荷小さい方を選んだのかな? DZ60RGB-WKLではsym_eager_pk
でもScan 1,300Hz出てたから問題ないと思うけど.何度も書いてるけど高性能なMCU積んだところで本当に誤差でしかないな. Single-key Latencyや8k Chord Split Delayが精々~0.5ms減る程度. ATmega32U4で十分.
notes.sumadoratyper.net
で公開予定の『音ゲー用QMK Firmwareの設定等』に載せるデータを纏めてるけど, ゲーミングデバイスメーカーのhypeは酷いなあと思う次第であります. Polling Rate 8,000Hzとか音ゲー的にはマジで何の意味もないし, 光学スイッチがメカニカルスイッチより速いみたいなのも大嘘.一部抜粋:
Keyboard Firmware Polling Rate (Hz) Single-key Latency (Wired, ms) 4k Chord Split Delay (ms) 8k Chord Split Delay (ms) Notes Corsair K70 MAX N/A 8,000 4.4 4.5 6.8 磁気スイッチ, ラピッドトリガー Keychron C1 Pro/C2 Pro QMK 1,000 9.4 2.9 7.2 STM32L432KB (80MHz)/STM32F402RC (84MHz) ErgoDox EZ QMK 1,000 2.9 2.9 7.5 ATmega32U4 (16MHz), sym_eager_pr, debounce time 30ms EVGA Z20 N/A 4,000 2.2 5.5 8.6 光学スイッチ Corsair K65 PRO MINI N/A 8,000 0.8 5.1 8.7 ZSA Moonlander QMK 1,000 11.2 3.0 8.9 STM32F303 (72MHz) Corsair K70 PRO MINI WIRELESS N/A 8,000 1.2 4.7 9.0 ASUS ROG Strix Flare II Animate N/A 8,000 2.2 5.3 9.0 Razer Huntsman V2 N/A 8,000 0.9 5.9 9.6 光学スイッチ Keychron Q Pro Series [Q1 Pro, Q2 Pro, etc.] QMK 1,000 9.0 4.2 9.7 STM32L432 (80MHz) Razer BlackWidow V4 Pro N/A 8,000 1.7 6.1 9.7 Razer BlackWidow V4 75% N/A 8,000 1.6 4.5 9.8 仕様上Chord SplitなQMKより遅延してるPolling Rate 8,000Hzさん……w いやマジでこれ詐欺だろ. 訴えていいか?
Razer Huntsman V2の値が間違っていた(テーブルがずれていた)のを修正しました.
Break-in Machine, 3時間 ≒ 54k actuations回し終わった. 一応様子見ながら回してたけど, 少なくとも3時間連続で回しても全く問題ないみたい. というか1時間半と3時間の時点でモーターの温度に変化なかったからもっと長時間回して大丈夫だと思う.
Broken-in Nixieは…… ThereminGoatの言う通り120kくらいまではまあ改善の余地ありそうだなって感じ. 50k程度じゃ不十分っすね.
さて洗浄と乾燥ですよ……
水溶性ペースト + 超音波洗浄器でも完全には取れないようだ. 特にボトムハウジング. 諦めて乾燥させてからマイクロアプリケータで除去しよう.
箸ネイティブで良かった. パーツ取るのにめっちゃ便利.
しかしバネが全く汚れてないあたりドームとの接触は皆無ってことよな. いや知ってるけど. MX2Aでドームが研磨されてるのはマジで何なんだ……?
流石にドライブースはいいわ. 小さい洗濯ネット(ダイソーのマスク用のものを使用)に入れて振って水切って干しておけば明日には組み立てられるでしょう.
Diamond-Polished NK Dream Creamを先に作った方がいいか. 一旦それをDZ60RGB-WKL/Frog Mini HHKB Navyに載せて使えるようにする. 使えるキーボード一枚できてからDiamond-Polished Cherry MX Brownを作ってFM60-Sに半田付け, Frog Mini HHKB Silverに載せて完成させる. そうするとNK Dream Creamを半田付けしてる最中でもまともに使えるキーボードができる.
色々と分散してるの面倒だしやっぱりこの日記以外は全部
sumadoratyper.net
以下でやるか.テンプレート書くのめんどくせ〜.