LoginSignup
9
14

More than 3 years have passed since last update.

Windows/Ubuntuで日本語109キーボードのIMEオンオフ設定とCapsLock/左Ctrlキー配置を、Macキーボード風に変更する

Last updated at Posted at 2017-03-30

この記事の目的

Windows/Ubuntuにて、標準でIMEオンオフが割り当てられている「半角全角」キーは、日本語109キーボードでは上段「1」キーの左にあってホームポジションから遠いし「ESC」キー入力のつもりで押してしまうことも多い。MacOSのMacキーボードは「スペース」キーの左右にある「英数」「カナ・かな」キーにIMEオンオフが割り当てられていて使いやすい。
そこで、その操作感に似せて以下のように割り当てを変えてみた。

  • IMEオン機能を「スペース」キー右隣りの「変換」キーに割り当てる
  • IMEオフ機能を「スペース」キー左隣りの「無変換」キーに割り当てる
  • IMEオンオフ機能を「Ctrl + スペース」キーに割り当てる(Ubuntuのキー割り当ての真似)
  • 変換機能は「スペース」キーに割り当て済みなので、それを使うことにする
  • 「変換」キーに割り当てられていた再変換機能は「Ctrl+変換」キーに割り当てる

さらに、Macキーボード配列に似せて

  • 「全角半角」キーを「ESC」キーにマッピングする
  • 「Caps英数」キーと「左Ctrl」キーのマッピングを入れ替える

Windows編

Windows MSIMEキー割り当てを変更する

  1. タスクトレイのMSIMEモードアイコンを右クリックして、ポップアップメニューの「プロパティ(R)」を選択する
    MSIME-main.PNG

  2. ダイアログの「詳細設定(A)」ボタンをクリックする
    MSIME-detail.PNG

  3. 詳細設定の編集操作のキー設定(Y)列右端の「変更(D)」ボタンをクリックする
    MSIME-keymap.PNG

  4. キー設定の「無変換」「変換」の機能割り当てを下表に従って変更する

キー 「入力/変換済み文字なし」欄
Ctrl+SPACE ー → IMEオン/オフ
ESC ー → IMEオフ
無変換 かな切替 → IMEオフ
ひらがな ひらがなキー → IMEオン
変換 再変換 → IMEオン
Ctrl+変換 メニュー → 再変換

Windows GoogleIMEキー割り当てを変更する

MSIMEではなく、GoogleIMEを使っている場合はこちら

  1. タスクトレイのGoogleIMEモードアイコンを右クリックして、ポップアップメニューの「プロパティ」を選択する
    googleIME-main.PNG

  2. ダイアログの「キー設定の選択」列右端の「編集...」をクリックする
    googleIME-keymap1.PNG
    googleIME-keymap2.PNG

  3. 日本語入力キー設定の「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機能に割り当て

nocaps.reg
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を入れ替え

swapcaps.reg
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機能に割り当て

nocaps+nohanzen.reg
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機能に割り当て

swapcaps+nohanzen.reg
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 入力メソッドのオンオフキー割り当てを変更する

  1. 画面の右上端にあるアイコントレイにあるキーボードアイコンをクリックし、ドロップダウンメニューの「現在の入力メソッドの設定」を選択する
    mozc-iconmenu.PNG

  2. 入力メソッドの設定ダイアログの「全体の設定」タブを選び、最下行の「拡張オプションの表示」をチェックオンする
    im-main.png
    im-keymap1.png

  3. 「入力メソッドのオンオフ」列の「Zenkakuhankaku」ボタンを押して、fcitx-config-gtk3のポップアップダイアログに対してエスケープキーを入力して割り当てを解除する。「入力メソッドをオンに」列にて「変換」キーと「ひらがなカタカナ」キーを割り当てる。「入力メソッドをオフに」列にて「無変換」キーを割り当てる。
    im-keymap2.png

Ubuntu Caps / Ctrl キー 入れ替え、半角全角キーをESCに置き換え.

xmodmap

過去の主流の方法でしたが、最近のUbuntuではMozcを起動すると設定がリセットされるので使えなくなりました。参考までに設定ファイル内容を残しておきます。

~/.Xmodmap
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側にてキー割り当てを本記事記載のレジストリ設定による方法で変更することで解決した。ホストとゲストで同じキー割り当てが使えるので、これで良い。

参考資料

9
14
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
14