mac/linux/windowsに全対応した日本語入力切り替えキー
文脈
僕のmacbookにはVMWare Fusionが入っていて、その上でLinux(Ubuntu)とWindowsを動かしている。仕事は主にLinuxでやっていて、Excelなどが必要なときはWindows、それ以外はmacという使い分けなのだが、ここで問題になるのが日本語入力切り替えキーである。
IMEはmac/linux/winのいずれもgoogle日本語入力(mozc)をインストールしている。そのためIME on/offが環境によらず同じキーでできるのが理想なのだが、macbook本体のキーボードに加えLet's Split(自作キーボード)を併用していることもあり全ての環境で条件を揃えるのが難しかった。
今回、ようやくそのような状況を構築できたので、手順をメモしておく。
理想
IME on/offのキーマップについては、onとoffを別のキーに配置する方法と、1キーでトグルする方法の二種類が考えられる。windowsでは1キーでトグルする方法が主流だが、macのデフォルトは「かな」でIME on、「英数」でIME offと別キーになっている。
個人的には慣れている別キーにできるのが理想だが、難しければ1キーでのトグルで妥協することも可とする。その場合、全てのos/キーボードで「かな」キーでのトグルができることが理想。
問題点の整理
mac
mac mozcの場合「かな」でIME on、「英数」でIME offとなる。このうちoffの方はカスタマイズできるが(「キャンセルしてIMEを無効化」を設定)、onの方はカスタマイズできない。(一方で、設定→キーボード→入力ソース から、入力ソースを順に移動するキーが設定できる。これにより、トグル方式であれば好きなキーを設定することが可能である)
windows (on VMWare Fusion)
mozcでかな・英数が認識されない…と思っていたが、そういえば設定が英語キーボードになっていた。設定→時刻と言語→地域と言語→日本語→オプション→レイアウトを変更する から日本語キーボードを選ぶと、「かな」「英数」が「Hiragana」「Eisu」としてmozcに認識されるようになった。
暫定案
ここまでの状況から、以下の案が導かれる。
- ON/OFFをかな/英数で行う
- キーボードは日本語配列として認識させる
1.を採用するには、linuxで以下を達成する必要がある。
- かな/英数をmozcのON/OFFに割当てられること
2.を採用するには、以下が必要となる。
- linuxで、キー配列を日本語配列と認識させること
- レツプリのキー配置を日本語配列前提のものに修正すること
linux (Ubuntu 18.04 on VMWare Fusion)
まずキー配列を日本語配列と認識させる方法について。
Ubuntu 18.04のデフォルトはiBusなのだが、BusはIMEの設定とキーボードレイアウトの設定が癒着しており、「日本語(Mozc)」を選ぶと英語キーボードになってしまう。これを回避するためにいろいろ試したのだが、以下の手順でうまく行った気がする。(駄目な場合はfcitxに乗り換えるという方法がありそう)
- localectlでjpにする
- sudo localectl set-keymap jp
- sudo localectl set-x11-keymap jp
- 設定→地域と言語→入力ソース のところを、「日本語(Mozc)」と「日本語」の2つになるようにする
次に、英数がCAPSLOCKとしても機能してしまう問題について。
日本語配列設定にするとibus-mozcでEisuを割り当てられるようになるのだけど、英数を押すとなぜかCAPSLOCKがonになってしまうという謎の挙動が起こる。この記事を見て/usr/share/X11/xkb/symbols/jpというファイルを見てみると、確かにCAPSがEisuとCapslockの両方に割り当てられているように見える。これを修正してUbuntuを再起動したところ、CAPSLOCKがonになることはなくなった。
47c47
< key <CAPS> { [ Eisu_toggle ] };
---
> key <CAPS> { [ Eisu_toggle, Caps_Lock ] };
186c186
< key <CAPS> { [ Eisu_toggle ] };
---
> key <CAPS> { [ Eisu_toggle, Caps_Lock ] };
以上でかな/英数をIME on/offに割り当てる準備が整ったので、最後の作業としてレツプリのキーマップ修正を行った。
レツプリのキーマップの修正
Ergodox/Let's splitは英語配列としてキーマップを書いていたので、日本語配列として使うには修正が必要だった。例えばアットマークを入力する部分はKC_ATと書いていたが、日本語配列だとダブルクオートと見なされてしまう。#include "keymap_jp.h"
することで、JP_XXのようなキーコードが使えるようになるので、これを使えば記号をおおむね元の通りに配置できた。(追記:マクロのためにsendstring_jis.hも必要だった)
ただしShiftを押したときに変わる記号がある(Shift+;
が:
から+
に、Shift+-
が_
から=
に)ので、完全に元のままとはいかなかった。一応回避策としては、SHIFTレイヤーのようなものを作ってShiftを代替するという手があるが、これはこれでShiftキーを使うシューティングゲームとかで困る可能性はある。
まとめ
本稿ではmac上にVMWare FusionでWindows 10とUbuntu 18.04を入れた際に、いずれのmozcでもかな/英数でIMEをon/offする方法を解説した。