(追記)コメント欄にFakeymacsの作者さんより、Fakeymacsで日本語キーボードのUS配列対応がなされていた旨のコメントがありました。神様ありがとうございます。ありがとうございます。ありがとうございます。なので以下の記事ではなんかゴチャゴチャ書いていますが、Fakeymacsの設定一発でまるっと解決です。本当にありがとうございました。
US配列愛好家にとって、ノートPC選び最大の関門はキーボードと言っていい。いいと思ったやつが都合よくUS配列であることは稀だし、カスタマイズできる商品もそう多くはない。かといって個人輸入も手間や税金だのなんだの考えると億劫だ。そして、安さに釣られてJIS配列キーボードのノートPCを購入することになるのである。そう、僕だ……。
まぁドライバ変えたらいけるでしょくらいの軽いノリでやってみたが、それをやるとJISキーボードならではのキー、たとえば変換キーが死ぬなど起こり、やはりちょっと不便なのであった。変換キーでIMEを有効化/無効化は20億人がやっているカスタマイズであろう。
本記事では、変換キーなどJISキーボードならではのキーを生かしつつ、JISキーボードをUS配列として使う方法について記述する。ついでに全国民が熱望するEmacsキーバインドにも対応する。
環境
- Windows 10 Home
- バージョン 21H2
- OSビルド 19044.1566
- (Emacsキーバインドまでやる場合)
- keyhac 1.82
- fakeymacs 20220215_01
レジストリエディタでドライバを変更
レジストリエディタで以下の設定をする。
コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
名前 | データ |
LayerDriver JPN | kbdlk41a.dll |
OverrideKeyboardIdentifier | PCAT_101KEY |
OverrideKeyboardSubtype | 0 |
US配列の設定をベースにしたうえで、ドライバをkbdlk41a.dllにしている。このkbdlk41a.dllはHHKBを使っている人なら見覚えがあると思うが、HHKBで推奨されるドライバである。もしかしてこれ使えるんじゃね?と思って入れてみたら、いい感じだった。
ちなみに識別子とサブタイプの設定をJISキーボードの値にしても、ちゃんと動く。何がどう変わるのかはよくわからない。。。バックスラッシュと¥マークが変わる?と思ったけれど、これもアプリの挙動によってまちまちだし……。
英かな変換
ここで言う英かな変換とは、Mac系キーボードに代表される、かなキーと英数キーで全角半角をトグルすることである。多くの人がやっているカスタマイズと思う。
やり方ついては複数あると思うのだが、一番メジャーなのは変換キーと無変換キーをIMEの設定でIMEの有効化/無効化に割り当てることだろう。
自分はGoogle日本語入力を使っているので、その設定だけ書いておく。
モード | 入力キー | コマンド |
入力文字なし | Henkan | IMEを有効化 |
直接入力 | Muhenkan | IMEを無効化 |
まぁ方法については死ぬほど出てくるので適宜調べられたい。
ところで、後述するEmacsキーバインドの実現では、keyhac + fakeymacsを使っているのだが、fakeymacsは初期設定だと日本語キーボードによる英かな変換まで対応している。なので、fakeymacsを利用するならこれは飛ばしていい(やっても実害はないと思う)。ただ、自分はその設定を無効化している。理由は後述する。
CtrlとCAPS LOCKのスワップ
これもよくあるカスタマイズと思われる。スワップさせるだけならば、PowerToys のインストール | Microsoft Docsを使うのが良いと思われる。何しろ開発にMSが参加しているのだから安心感が違う。
が、しかし、自分は前述したようにEmacsキーバインドの実現をしたいので、keyhacを使っており、Powertoysによるキーリマッピングがkeyhacではうまくきかないため、レジストリを直接書き換えている(Powertoysはキーリマッピングで再起動を必要としないため、恐らくレジストリはいじっていないと思われる)。
レジストリの書き換えはレジストリエディタを使ってやるのが王道だが、自分はあまりレジストリの値を手動でいじりたくないので、キーマッピングのソフトウェアを利用しており、昔から「Change Key」非常駐型でフリーのキー配置変更ソフト - 窓の杜を使わせてもらっている。
~(チルダ)と`(バッククォート)どうする問題
さて、半角/全角(0x0029)は普通にUS配列ならば`と˜のキーになる。が、今回のドライバだと半角/全角のままだ。このままだと、`および˜が入力できないということになり、これは技術者にとってはちょいちょい困る。
これの対処法だが……わからん。HHKBを繋いでやってみても、`を入力したら半角/全角になってしまう。困った。
仕方ないので、Google日本語入力のローマ字テーブル機能を使って、日本語入力時におけるz + [ および z + ]をそれぞれ`および˜に割り当てることにした。非常にダサい。
なんとかなる方法があるなら教えてほしい……。
Emacsキーバインドの対応
さて、ここまで書いてきたEmacsキーバインドに対応する。したい人だけすればいい。
これもやり方は色々あるのだが、自分はkeyhacと有志のコンフィグをそのまま使わせてもらっている。まぁこの辺の話は以前書いたとおりであり、話すと長くなるので記事だけ貼らせてもらおう。

デフォルトの設定をそのまま使うと、どうやら変換・無変換キーでうまいこと英かな変換までしてくれているようだ。
ただ、前述のように自分はこの設定を無効化している。理由は、IMEの無効化をする時にプチフリっぽい挙動が頻発したから……なのだが、その後色々いじって、それは多分「無変換キーを押していたつもりでALTキーを押していた可能性が高い」という結論に至る😂
が、せっかくなので無効化する場合の設定も書いておこう。無効化させるには、config_personal.pyで下記部分をコメントアウトすればよい。
# fc.set_input_method_key += [["(29)", "(28)"]]
正直あまり意味をわかっていないのだが、ここを有効にしてGoogle日本語入力のキー設定をすると、変換・無変換キーがHenkan/Muhenkanにならなかったので、なにかしらキーリマップしているのだろうか。それがどうしてこの式になるのかはよくわからない。。。
ついでに、自分は前述のChangeKeyを使って、WinキーをCtrl右キーに割り当てている。これによって、通常のショートカットも使えるというわけだ。まぁこれはWinキーを使わない人向けの設定になるが。
ところで、自分はASUSのASUS TAF GAMING F15を使っているのだが、なんとこのPC、デフォルトでWinキーが無効化されているうえ(FPSなどでは誤動作の原因になりがちだかららしい……)、有効化の方法が微妙にわかりづらく、若干右往左往する羽目になってしまった。
色々いじっていたら休日が潰れた。でも休日の使い方として適切だったのかもしれない。
コメント
コメント一覧 (2件)
Fakeymacs で日本語キーボードを英語配列キーボードとして利用できるように対応しました。
config_personal.py の fc.use_usjis_keyboard_conversion を True にすると利用できます。
(OS の設定は一般の日本語キーボードの設定に戻す必要があります。)
これで、「~(チルダ)と`(バッククォート)どうする問題」も解決すると思います。
また、次の拡張機能を併せて利用すると、Enter キーと右 Shift キーが1キー分近い位置で利用できるようになります。
https://github.com/smzht/fakeymacs/tree/master/fakeymacs_extensions/change_keyboard2
以上、お試しいただければと思います。
!!!
おおぉ……ありがとうございます。
Fakeymacs助かりまくってます、これのおかげでWindowsをまた使えるようになりました。
使わせていただきます😭