2021年04月30日

【自キ】JPとUSとqmk

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内で使えて、記憶しやすいように並べ直した程度。
だいぶ慣れてきたマップがあるので、
そのうち公開します。
posted by おおおかとしひこ at 08:51| Comment(0) | カタナ式 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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