メビウス式の実装について
上記記事でいう内部仕様の話ね。
現在のメビウス式
上記記事で紹介した通り、現在のメビウス式は、
キーボードファームウェア
IME(Google日本語入力)
リマッパー(Keymapper)
の3レイヤーにまたがって実装されています。
まず、僕は日本語入力新配列に手を染める前からの自作キーボードユーザーであり、
IMEを使わないわけにはいかず、
リマッパー以外で自力実装ができなかったので、
3つ揃った状態が前提だった、ということはいえます。
とはいえ、全部ひとまとめに書くことはできて、それやるんだったらリマッパーが一番簡単。僕でもできる。そのほうが管理も楽。なんでそうしないのか。
複数レイヤーにまたがって実装している理由
いくつかあります。
リマッパーが停止したときキーマップが変わると困る
「やべっ設定書き間違えた」とかでリマッパー停止させて修正したりとか、単に不具合で落ちるときもありますわな。
その時、普段のキーマップと全然違ったりすると不愉快なので、日本語入力に関係しない部分はキーボードに乗せてます。
全角アルファベット変換のため
全角アルファベットを1文字とか2文字だけ入力する時は、かな入力してから置換するのが一番簡単です。
しかし、ファームウェアやリマッパーで全部実装した場合、例えばメビウス式で「か」を入力すると、IMEにはかな文字「か」を直接、あるいはローマ字「ka」を送ることになり、「v」は送られません。よって全角「v」を入力するには、IMEを全角英数モードにするしかなくなります。
ローマ字テーブルで「v」を「か」に置換する方式であれば、「v」が送られているので、全角「v」への変換もできるというわけです。
変換キーバインドのため
変換キーバインドはIMEでしか実装できない(こともないが変換ステータスの外部参照は至難)、IMEだけでは全体を実装できない(こともないがタイムアウト判定による3キー同時押しはほぼ使い物にならない)ので致し方なし。
「,」後付で単かなカタカナ置換とか、「,S」で「→」とかの一部特殊キーシーケンスも同様。
同時押し判定をファームウェアでやると調整しやすい
濁音半濁音シフト・拗音合成をファームウェアでやるのは難しくて僕がまだできないので、これは一部特殊キーの割り当ての話。
二大巨頭であるバックスペースエンターは単打が割り当てられていますが、他の特殊キーのうちそれに次いで使用頻度が高いもの、すなわち
Space
Tab
Escape
かな
英数(無変換)
の5つと、あと頻度はそんなでもないがとっさに出したいものとして
PrintScreen
ランチャー(Alfred等)呼び出しキーバインド
辞書登録キーバインド
の合計8つを、文字キーの同時タップ(コンボ)に割り当てています。
これはメビウス式の(外部)仕様として悩ましいところで、準最上位5つを小指に置くのはやめろーーーーーー!として、親指に置くのは別にいいと思うし、別に定義しなくていいと思うんだよな。好きにすれば。
ともあれ、僕は今こうなっていて、コンボの同時押し判定はファームウェア(QMK、というかVIAL)でやるのが楽だからそうしてます。
拗音合成とMOD-TAPの競合問題
本題。宿痾。仕様整理しろよマジで案件。ずーーーーーーーーーっと悩んでいる。
メビウス式は拗音合成を含む。つまり文字キー同士の同時押しが多数ある。
メビウス式はスモールキーボードに特化した、使用キーの少ないメソッドである。
Shiftは親指だからいいとして、他の修飾キー(とレイヤーキー)が指の届かないところにあったら意味がない。
さらに修飾キー同士、修飾キーとレイヤーキーの同時押しもカバーできないといけない。
これを解決する方法が、デュアルロールしか思いつかない。
フィンガーにデュアルロールで置くと、例えば「にょ」と「Cmd D」が同じキーコンビネーションというか運指である、ということが起こる。
これは、ファームウェアでタッピングターム未満の同時押しをタップ判定にし、リマッパーで文字キー同士の同時押しを定義する、つまり、
すぐ離したら「C D」=「にょ」扱い
長く押し続けたら「Cmd D」扱い
とすることで解決でき……てねえな!!!!
絶対良くない。実際良くない。どうしよう。ずっと悩んでます。
結論
VIME-Chord欲しい!!!!!



コメント