qmkは当然ながらUS配列を前提としている。
(例: S(KC_2)は@)
しかし僕らのOSはJPだ。
(例: S(KC_2)は")
毎度毎度ややこしいので、整理してみる。
・OSはUS設定、US配列を使う
・OSはJP設定、JP配列を使う
・OSはJP設定、US配列を使う
の三つのパターンがある。
・OSはUS設定、US配列を使う
Windowsの設定から、キーボードをUS配列にできる。
たとえJPキーボードを繋いでいても、
シフト2は@が出るようになる。
「」は横並びで出る。
印字とあってるかどうかは関係なく、
「そこのキーを押したらUS配列になる」が可能だ。
無刻印にしてしまえばこの違和感を解消できる。
ブラインドタッチ?覚えろ。
あるいは、自作なんだから、
「もっと合理的なUS配列以上の記号配置」を考えると良い。
このとき、qmkは仕様通りのKC_をそのまま使える。
S(KC_2)は@が出るし、
S(KC_SCLN)は:が出る。
記号やシフトの対応は、USキーキャップそのものになる。
「もうUSにするッ!」と決めてしまえば楽になれる。
ただし変換キー、無変換キー、ひらがなカタカナキー、
(いらないけど)全角半角キーは機能しなくなる。
qmkではINT○○などに当てられているが、
このキーコードを発行してもWindowsが認識しない。
それでも「捨てる」覚悟があれば捨てられる。
・OSはJP設定、JP配列を使う
僕は「再変換」がないとしんどい。
これは変換キーにバインドされた機能だけど、
US設定にすると使えなくなる。
(MS-IME側で別のバインドで再変換を定義すればいいのだが、
その設定ファイルを持ち歩く必要性が出てくる)
なので変換キーのキーコードを生かすには、
OS側をJPに設定するしかない。
記号配置はUSが合理的である。
ぐぬぬと思いながらJP配列、JP刻印キーキャップ、
印字が違うキーキャップ、無刻印を使うしかないわけだ。
qmkではややこしさを解消するため、
keymap.cに、
#include "keymap_jp.h"
を記述することで、
JP_のキーコードをエイリアスできる。
キーコード一覧は、
https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_extras/keymap_jp.h
にある。
これで、S(JP_SCLN)でちゃんと+が出るわけだ。
実際には、
OSがJPになっていればS(KC_SCLN)は+、
USになっていれば:が出るだけの話だが、
ややこしいのでJPキーコードと割り切って考えることで、
このややこしさから逃げられるぞ。
・OSはJP設定、US配列を使う
しかしながらUS記号配置は魅力的だ。
いいとこ取りが出来ないか?
と僕は考えた。
で、人力で、
「キーマップにUS記号配置のように、
JP記号を再配置する」をやっている。
シフト記号まで一致しないので、
単打は中段、そのシフトは上段、
などのように規則性を保っている。
たとえば数字段のシフトはJP準拠になってしまうから、
数字段と数字段の記号は別位置に並べ直す、
というマップを作って仕舞えば良い。
US記号配置といえども万能ではない。
たとえば四則演算や演算子関係はまとめたほうがいいと思う。
-+*/=!
|&:;
あたりはまとまるべきだし、
()[]
も同様だろう。
このへんはどの言語を使ってるかでも変わるかもだけど。
つまり、
「元々はUSだったが、さらに使いやすく進化したオリジナルマップを、
JP記号で再編成する」
ことが、最終目的になりそうだな。
僕はそこまでプログラミングはしないので、
MiniAxe内で使えて、記憶しやすいように並べ直した程度。
だいぶ慣れてきたマップがあるので、
そのうち公開します。
2021年04月30日
この記事へのコメント
コメントを書く