2021年02月17日

【自キ】キー連打の取りこぼし現象

Palette1202という左手マクロ用の自作キーボードを実戦投入したのだが、
キー連打をちょいちょい取りこぼす。
解せぬ。


MiniAxeではそんなことはない。
同一キーを秒4打以上打ったって全対応してくれる。
異なるキーのロールオーバーは秒8打くらい打っても大丈夫。
今のところ自分の速度より速い処理速度で動いている。

ところが、何が違うのか不明だが、
Palette1202は、
同一キーの連打が秒2打くらいが限界で、
秒3打以上は取りこぼすっぽいんだよね。


愛用のMiniAxeと同じ打鍵感になるように、
Config.hでは、
デフォルトの設定
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
を、
#define TAPPING_TERM 0
#define PERMISSIVE_HOLD
#define RETRO_TAPPING
に変えている。

これが原因?と思いデフォルトに戻しても、
現象は同じで、100ミリ秒分モッサリした感覚になるだけ。

Rules.mkを読み込んでMiniAxeと比較すると、
マウスやOLEDなどがyesになっているくらいしか違いが分からない。
OLEDは付けていない。

キーマップは3レイヤーしか積んでないし、
難しいことはしていない、と思う。


ググっても似た症状は出て来ず、
https://mobile.twitter.com/htomine/status/1335919497107054593
で報告されているのに似ている。
(しかもこの症例、前の版を書き込んだら治った、
みたいな曖昧な報告)

表面実装ダイオードの半田が甘いとか、
そういうことで連打を取りこぼすってあるのかしら。
アリナシの単純なことではないのかな…


一応作者には問い合わせたが、詳しい方がいたら、
と思いここにも書いておく。
分かる方いたら対処法や原因を教えてください。



(追記)
解決しました。コメント欄参照。

OLEDがついてないのに読み込みに行って帰ってくるまでの間、
こっちから見てラグに見えているということらしい。
最新のQMKでは改善してるかも。
とりあえず、rule.mkの、
OLED_DRIVER_ENABLE = no
にしとけばOK。
(またはOLEDを半田付けしても正解か)
posted by おおおかとしひこ at 09:28| Comment(6) | カタナ式 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
少し古QMKでは、OLEDを取り付けてないのに、QMKでOLED機能をオンにすると、帰ってこないOLEDの反応待ちでおかしくなる現象がありました。OLEDをnoにしてはどうでしょう。
Posted by eswai at 2021年02月17日 12:21
MiniAxeと、Palette1202は所持してないので、
あくまで私の推察です。

キー連打の取りこぼし現象の原因は
キー入力のスキャン方式は違うためではないでしょうか。

Palette1202 マトリクス方式
MiniAxe   キースイッチはMPUに直接接続

の違いがキー連打の差になるんじゃないかと。
Posted by キー坊(仮) at 2021年02月17日 15:32
>キー坊(仮)さん、eswaiさん

名探偵の皆様ありがとうございました。
犯人はOLEDがついてないのにrules.mkでOLED_DRIVER_ENABLE = yes
のままにしたことでした。
= noに書き換えたことでど安定しました。
OLED読み込み→ついてないよう→time outで戻ってくる、
みたいなアルゴリズムで動いてるっぽいですね。

これでガンガン連打可能!
同鍵連打秒4くらいまでは体感で確認!
薙刀式の次の動画の編集が捗るゥ!

ありがとうございました。作者さんにも一報入れておきます。
Posted by おおおかとしひこ at 2021年02月17日 21:31
キースキャン方式が原因かも、とコメントしましたが
この問題に関係しないようです。訂正します。

OLED_DRIVER_ENABLE = no
にすれば改善されると思います。

OLEDのコメントを読んでから検索した結果
を参考のために残しておきます。

redditにキー入力とOLED関連 2スレッド
QMK on pro micro - low matrix scan frequency (~11)
Lily58 with elite-c ghosting

原因調査するためのデバッグ情報
qmk-firmware/docs/ja/newbs_testing_debugging.md
キースキャンにかかる時間の測定
#define DEBUG_MATRIX_SCAN_RATE
Posted by キー坊(仮) at 2021年02月17日 21:43
問題解決して良かったです。
Posted by キー坊(仮) at 2021年02月17日 21:50
>キー坊(仮)さん

ちょうど入れ違いでしたね。
OLEDが犯人とは思わず全然違うところを探してました。
スピードスイッチにしたら反応は良くなるけど連打はこぼれるとか、
表面実装の半田付けとか、物理の方ばかり調べてました…

あるものの間違いと思わせといて、ないものが犯人とは。
ミステリーのネタによくありそう。
Posted by おおおかとしひこ at 2021年02月17日 22:45
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。