comboだと定義数が多すぎてメモリが足りなくなるかもしれない。
https://x.com/catfist/status/1858358157988507854
仕様としては、
IMEオフ…通常の英字配列(qwertyとする)
IMEオン…親指シフト配列に
親指シフト配列:
親指左キー、親指右キーを新設
単打では何も起こらない、同時押し専用キー
単打…文字部分33キー+数字キー10
親指右キーと同時押し…31+10
親指左キーと同時押し…31+10
ただし数字段は左右同時押しで同じものが出る
ふつうのシフトキーを押しながら…大文字qwerty、数字段は記号
なので、
数字段とシフトキー部を省略しても、
コンボの数としては62必要。
これがメモリとして足りるかどうかはやったことないのでわからんです。
また、エミュレータなどでは簡易的にコンボ系同時押し
(n秒以内に二つが押されたら同時とみなす)で実装するけど、
オリジナル親指シフトの判定ロジックはもう少し複雑で
(ミスを取りこぼしにくくなっている。詳しくは紅皿の開発記録に)、
そこまでやるなら、益々コンボの実装ではむりかなー。
eswaiさんの実装はコンボでもオリジナル方式でもないけど、
実用上結構よいので、これを真似するのがいいかなー。
昔コンボと同じアルゴリズムの同時押しで薙刀式を使ってたけど、
早々に誤打するようになって、
タイマーの調整がなかなか難しかった
(朝の調子と夜の調子で変わるんよね)
ので、判定ロジック自体を変えたのであった。
日本語に定義がないので、
だいたい似たようなものをぜんぶ「同時押し」と表現するのが良くない。
コンボ系はタイマー同時押し、
薙刀式のは相互シフト同時押し、
オリジナルのはなんていうんだろ、
「キーの重なりを用いた同時押し判定法」とでもいうべきか。
以上大体わかってる人からの助言でした。
あとは完璧にわかってるeswaiさんに相談?
(追記)コメント欄に別ロジック実装がリンクされてます。
参考にして下さい。
2024年11月18日
この記事へのトラックバック


https://qiita.com/sadaoikebe/items/c856c563a286c7f5b471
ロジックも直されているようです。
へえ、ありがとうございます。
薙刀式つながりの部分しか把握してなかったです。
Ikebeさんといえば自作勢の古参ですね。
昔のキーボードを改造してUSB化したり、変換器を作っている人がいますね。
https://okiraku-camera.tokyo/blog/?page_id=8211
読んで同じものを作れるかは、やってみなければわからないのですが。
随分昔に見ててさっぱり意味が分からず、
自作キーボードのことが多少わかるようになった今なら分かるかなーと読んでも、
さっぱり全貌がつかめませんでしたw
配列のことと自作のことの、
二つの解説が必要なんでしょうね…
薙刀式から乗り換える気はまったくありませんが。
QMKをコンパイルできるようにしている場合の作業手順です。
qmk_userspaceを使えるようにしていれば適宜読み替えます。
(1)
https://github.com/sadaoikebe/qmk_firmware/tree/capacitive/users/nicola
上記のアドレスから7個のファイルをダウンロードし、各自の
qmk_firmware/users/nicola/
フォルダに格納します。
(2)
各自のキーマップは
qmk_firmware/keyboards/%キーボード名%/keymaps/nicola/
フォルダに作ります。
そこにdefaultフォルダの中身をコピーし、keymap.cを編集します。
親指シフト関連のコードは
https://github.com/sadaoikebe/qmk_firmware/blob/capacitive/keyboards/tc69/keymaps/nicola/keymap.c
を参考にします。
〈ヒント〉
// NICOLA親指シフト
などと書かれたところと、69行目あたりの
void matrix_init_user(void) {
から後の内容はすべて必要です。
_NICOLAレイヤーにNG_から始まる親指シフトのキーを割り当てます。
またIMEオフとIMEオン用に、KC_EISUとKC_KANA2のキーコードもどこかのキーに割り当てます。
「物理的なキー配置はANSI配列ですが、JISキーボードのキーコードを送信します。」とreadme.mdに書いてありました。
物理的なキー配置もJIS配列にする場合は、nicola.c内の書き換えがいると思われます。
情報ありがとうございます。
QMK、破壊的変更あってから触ってないので、
最近のだと機能しない可能性もありますねー。