この記事の目的
Windows/Ubuntuにて、標準でIMEオンオフが割り当てられている「半角全角」キーは、日本語109キーボードでは上段「1」キーの左にあってホームポジションから遠いし「ESC」キー入力のつもりで押してしまうことも多い。MacOSのMacキーボードは「スペース」キーの左右にある「英数」「カナ・かな」キーにIMEオンオフが割り当てられていて使いやすい。
そこで、その操作感に似せて以下のように割り当てを変えてみた。
- IMEオン機能を「スペース」キー右隣りの「変換」キーに割り当てる
- IMEオフ機能を「スペース」キー左隣りの「無変換」キーに割り当てる
- IMEオンオフ機能を「Ctrl + スペース」キーに割り当てる(Ubuntuのキー割り当ての真似)
- 変換機能は「スペース」キーに割り当て済みなので、それを使うことにする
- 「変換」キーに割り当てられていた再変換機能は「Ctrl+変換」キーに割り当てる
さらに、Macキーボード配列に似せて
- 「全角半角」キーを「ESC」キーにマッピングする
- 「Caps英数」キーと「左Ctrl」キーのマッピングを入れ替える
Windows編
Windows MSIMEキー割り当てを変更する
-
キー設定の「無変換」「変換」の機能割り当てを下表に従って変更する
キー | 「入力/変換済み文字なし」欄 |
---|---|
Ctrl+SPACE | ー → IMEオン/オフ |
ESC | ー → IMEオフ |
無変換 | かな切替 → IMEオフ |
ひらがな | ひらがなキー → IMEオン |
変換 | 再変換 → IMEオン |
Ctrl+変換 | メニュー → 再変換 |
Windows GoogleIMEキー割り当てを変更する
MSIMEではなく、GoogleIMEを使っている場合はこちら
-
日本語入力キー設定の「Henkan」「Muhenkan」の機能割り当てを下表に従って変更する
モード | 入力キー | コマンド |
---|---|---|
直接入力 | Henkan | 再変換→IMEを有効化 |
直接入力 | Ctrl+Henkan | なし→再変換 |
入力文字なし | Escape | なし → キャンセル後 IME を無効化 |
入力文字なし | Ctrl+Henkan | なし→再変換 |
入力文字なし | Muhenkan | 次のかな文字種に入力変換 → IME を無効化 |
入力文字なし | Hiragana | なし → 次のかな文字種に入力変換 |
直接入力 | Ctrl+Space | IMEを有効化 |
入力文字なし | Ctrl+Space | 半角空白を入力 → IME を無効化 |
変換前入力中 | Ctrl+Space | 半角空白を入力 → IME を無効化 |
変換中 | Ctrl+Space | 全角空白を入力 → IME を無効化 |
Windows Caps / Ctrl キー 入れ替え、半角全角キーをESCに置き換え.
Windowsのキーコード値は次の通り
キー名称 | コード値 |
---|---|
左Ctrl | 00 1d |
CapsLock | 00 3a |
ESC | 00 01 |
半角・全角 | 00 29 |
このキーコード値の入れ替え設定をレジストリに登録してOSを再起動すればOK。
レジストリに登録するには、下記内容のレジストリ設定ファイルを作ってダブルクリックする。
CapsをCtrl機能に割り当て
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
CapsとCtrlを入れ替え
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00
CapsをCtrl機能に割り当て、半角全角をEsc機能に割り当て
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,01,00,29,00,00,00,00,00
CapsとCtrlを入れ替え、半角全角をEsc機能に割り当て
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,1d,00,3a,00,3a,00,1d,00,01,00,29,00,00,00,00,00
元に戻したい場合は、登録したレジストリキー「Scancode Map」を削除すればよい。
Ubuntu編(16.04LTS+fcitx)
Ubuntu 入力メソッドのオンオフキー割り当てを変更する
-
画面の右上端にあるアイコントレイにあるキーボードアイコンをクリックし、ドロップダウンメニューの「現在の入力メソッドの設定」を選択する
-
「入力メソッドのオンオフ」列の「Zenkakuhankaku」ボタンを押して、fcitx-config-gtk3のポップアップダイアログに対してエスケープキーを入力して割り当てを解除する。「入力メソッドをオンに」列にて「変換」キーと「ひらがなカタカナ」キーを割り当てる。「入力メソッドをオフに」列にて「無変換」キーを割り当てる。
Ubuntu Caps / Ctrl キー 入れ替え、半角全角キーをESCに置き換え.
xmodmap
過去の主流の方法でしたが、最近のUbuntuではMozcを起動すると設定がリセットされるので使えなくなりました。参考までに設定ファイル内容を残しておきます。
remove Lock = Caps_Lock
remove Control = Control_L
keysym Caps_Lock = Control_L
keysym Control_L = Caps_Lock
!!keysym Escape = Zenkaku_Hankaku
keysym Zenkaku_Hankaku = Escape
add Lock = Caps_Lock
add Control = Control_L
XKB
最近の方法です。引数の意味は man xkeyboard-config
参照。
$ setxkbmap -option ctrl:swapcaps,japan:hztg_escape
やはりMozcを起動すると設定がデフォルト値にリセットされるので、上記コマンドで動作を確認できたら、設定ファイル /etc/default/keyboard の XKBOPTIONS= に内容を書き込み、dpkg-reconfigure を実行してデフォルト値を書き換える。設定ウィザード画面が立ち上がり、キーボード種別について2〜3の確認を求められるが、すべてEnterを押して進んでいけば良い。
$ sudoedit /etc/default/keyboard
$ cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
## ctrl:nocaps Caps Lock as Ctrl
## ctrl:swapcaps Swap Ctrl and Caps Lock
## japan:hztg_escape Make Zenkaku Hankaku an additional ESC
XKBOPTIONS="ctrl:swapcaps,japan:hztg_escape"
BACKSPACE="guess"
$ sudo dpkg-reconfigure keyboard-configuration
dconf
参考資料によれば、GUIに対してキー入れ替えをするには dconf を使え、とあるのだが、私の環境(Ubuntu 16.04LTS + Unity)では、上記の XKBOPTIONS設定 を行えば、コンソールもXTERMもGUIもキー入れ替えが有効になるので必要なかった。色々と試行錯誤して、設定が重複して動作が怪しくなった場合には、下記の確認とリセットをやってみる価値あり。
### キー設定の確認
$ dconf read /org/gnome/desktop/input-sources/xkb-options
### キー設定のリセット
$ dconf reset /org/gnome/desktop/input-sources/xkb-options
### キー設定の変更
$ dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:swapcaps','japan:hztg_escape']"
仮想マシン上のUbuntuでの問題点
VMware仮想マシンに入れたUbuntuでは、XKBOPTIONS= に ctrl:swapcaps を指定すると、VMwareが干渉して両キーともにCaps動作になってしまう。そこでゲストのUbuntu側ではキー割り当てを変更せず、ホストのWindows側にてキー割り当てを本記事記載のレジストリ設定による方法で変更することで解決した。ホストとゲストで同じキー割り当てが使えるので、これで良い。
参考資料
-
Macの英数/かな切り替えに慣れたらWinの「半角/全角」が不便|Mac
http://weekly.ascii.jp/elem/000/000/188/188160/ -
キーボードの「Caps Lock」を「Ctrl」にする(Windows XP〜10)
http://l-w-i.net/t/windows/keyboard_001.txt -
Windows 2000 / XP / Vista / 7 / 8 / 10 CapsLockキーとCtrlキーを入れ替え、さらに半角・全角キーとESCキーを入れ替える
http://www.salutesound.com/~oss_keyswap.html -
LinuxでCapsLockをEscにしたりする
https://endaaman.me/memo/linux_keyboard_config -
CapsLockをCtrlにするまとめ
http://lambdalisue.hatenablog.com/entry/2013/09/27/212118 -
XKBでCapsLockをEscに割り当てる(Ubuntuでキーマッピング変更)
http://qiita.com/oyas/items/a39baab89908294516a7 -
CAPSキーをCTRLキーにする(Ubuntu 15.10)
http://kuma35-memo.readthedocs.io/en/latest/ctrl-nocaps.html -
Caps LockキーをCtrlキーにする(Ubuntu 15.10)
http://l-w-i.net/t/ubuntu/key_002.txt