Q. 自作キーボードでも日本語配列を使えますか?
A. キーコードはあるので、キーマップを組めば使えますよ!
これ自体は正しい。ただいくつか乗り越えないといけないハードルがあり、
自キ勢は全部を把握してるわけではない。
まず、QMKのデフォルトはUS配列で、
これ前提で自作キーボードは組まれる。
キーキャップもUS配列がほとんどだから、
もう自キといえばUSだ。
ちなみに、
US配列とJIS配列は、
キーボード側から来たキーコードを、
OS側で解釈を変えているだけだ。
たとえば数字段の2のシフトは、
US配列だと@、JIS配列だと"が出るが、
どちらのキーボードを繋ごうが、
OS側の認識の変更で、
@にも"にもなる。
同じキーボードでさえ、OS側で切り替えられる。
これは意外と知られていないのでは。
(Windowsだと、言語設定のキーボードのオプション扱い。
切り替えたら再起動かけないと切り替わらない。
ちなみにSurfaceの工場出荷がUSで、
それを知らなかった僕はキーボードが壊れたのかと思った)
なので、
自キだろうが既成キーボードだろうが、
それをPCに繋ぐ時、
「私はUS配列/JIS配列を前提とする」
を決めなければならない。
おそらく自キ勢のコアな人はエンジニアだから、
OSはUS配列にしているはず。
だから、
「まずJIS配列に切り替えてください」は盲点だったりする。
ちなみに、OSがUS設定だと、
JIS特有キーを認識しないことに注意せよ。
変換、無変換、ひらがなカタカナ、全角半角などだ。
これらはQMKのキーコードが用意されている
(https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes_basic
のInternationalの項にまとめられている)
にも関わらず、
これを出力してもUSモードでは無視される。
たとえばJISでのIME切り替えは全角半角のトグルだが、
USではAlt+`でないと切り替わらない。
JISではCapslockは英数(IMEオフ)だが、
USではCapslockキーになる。
JISでは選択範囲を指定して変換キーで「再変換」が可能だが、
USでは何も起こらない。
ということで、
JIS特有の操作を使いたい場合は、
OSの設定をJISにした上で、
目的のキーコードを吐く必要がある。
「JISが使いたいんですが」と聞く人は、
おそらくこれらを聞いてもよく分からない初心者なので、
「ちょっと難しいけど出来ないことはないので調べてください」
と苦笑いするしかないんだよね。
だから、きちんと解説しようと思ったわけ。
QMKは一見JISに対応している。
OSをまずJISにしたうえで、
keymap.cに、
#include "keymap_jp.h"
を書き込めば、
キーコードのJP_はじまりで、
JIS記号で見た名前でキーを指定できる。
たとえば、
【Helix 5 rows】おまえらが作らないから俺が実用的なJIS配列キーマップ作ったったった【QMK】
https://qiita.com/marksard/items/ca5119c6327aaa860c6c
などを読み込めば、
どういうことが起こっていて、どう利用すればいいかの見本があるわけだ。
さて、ここからが本題。
記号配列に関してはUSのほうが合理的だ。
JISの記号配置は合理的でない。
一方、再変換やらなにやらのJIS系の操作は欲しい。
IME切り替えがトグルしかないのもクソだ。
(たとえば変換キー無変換キーにIMEオンオフを割り当てることは、
MS-IMEで可能なので、これを実現するため、
QMKから変換無変換のキーコードを吐きたいわけだ)
つまり、
ベストは、
「JIS配列の操作系を使いつつ、
記号はUS配置」だと考えられる。
そこで、先ほどの制限、
「OSをJISに設定する」が効いてくる。
記号をいくらUSを使いたくても、
変換キーを使う以上は、
2のシフトは"だと、OSが認識しやがるのだ。
これを騙すには、いくつかのやり方がある。
「中段に数字段があるレイヤーをつくり、
上段にそのシフト記号を置く」
はポピュラーなやり方だ。
数字段以外の記号キーに関しても、
中段/上段の関係で、単打/シフトにする。
つまり、「シフトキーは使わない」方法だ。
「単打系をLowerに、そのシフト記号は同じ位置のRaiseに」
も対応関係を作りやすいアイデアだ。
(僕個人はLowerを別機能に使ってるので、これは採用してない)
また、eswaiさんが仕分けするコードを書いている。
https://github.com/eswai/qmk_firmware/blob/master/keyboards/eswai/anhedral67/keymaps/srlby2/twpair_on_jis.c
これを改造するのが早そうだが、
「US配列ってなんですか?
いつも使ってるJISが使いたいです!」
レベルの初心者が手を出せるものではないかもなので、
紹介に留めておく。
これらのことを説明しないと、
「自キでもJIS配列は使えますよ!」
と言い切れないため、
自キ勢は苦笑いでお茶を濁すのだ。
あとUS配列しかオシャレキーキャップがないので、
印字が違うのを我慢することを強要するか、
無刻印を強要するしかなく、
これまた初心者にはキツイだろう。
結局、オール無刻印で記号含めてブラインドタッチレベルにならないと、
JIS配列を自キで使いこなすことは出来ない。
だから、「出来ないことはないですよ!調べてください」
と、自キ勢は笑顔で答えるのみなのだ。
(実質よくわかってない人が多く、
仕様上できるはず、という程度の認識だと思う)
で、JIS配列を使いたい理由に、
再変換やらIMEオンオフやらの、
日本語入力特化機能を使いたい勢もほとんどいないので、
情報はうまくプールしないという矛盾が起こる。
ので、ここにまとめておきました。
Q. 自作キーボードでも日本語配列を使えますか?
A. キーコードはあるので、キーマップを組めば使えますよ!
そもそも、なんのために日本語配列を使います?
そして記号系はどのように使うか決めてありますか?
まで聞かないといけないので、それはコンサル料込みですね!
2020年07月10日
この記事へのコメント
コメントを書く