Ubuntu でキーマップを変更する

  • 普段使用しているUbuntuのキーボードの設定を変えようと思いまして、その記録です
  • やりたいことは、JIS配列キーボードのスペースキー左右にある「英語」、「かな」キーを押して、ローマ字入力、日本語入力を切り替えるようにすること
    • 手元のキーボードだと「eng」「kana」とあるので、表記はキーボードそれぞれ違うと思います
    • 普通は「無変換」「変換」かもしれない
  • Windowsではこの設定してたんですが、まぁいいかって感じで今までしてませんでした
  • 普通、左上の全角半角で日本語とローマ字を切り替えていると思うんですが、それには次の2つのデメリットがあると思ってます
    • トグル方式なので、文字を打ってから切り替えることがしばしば起きる
    • キーボードの中央から遠い
  • ちなみに今使ってるキーボードはこれ

OS

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

やったこと

  • 全体としてはこんな感じ
    • xev でキーコードを調べる
    • xmodmap でキーを割り当てる
    • mozc で入力方法が切り替わるよう設定する

xev でキーコードを調べる

  • xev というコマンドでキーボードのキーコードを調べることができるみたいです
  • ターミナルを開いて xev と打つと小さいウィンドウが出てくる
  • そのウィンドウにフォーカスがあたった状態で該当のキーを押すと、ターミナルにイベント情報が表示される
  • イベント情報の中にキーコードがあるので、それをメモる
    • 私の環境では英語が 131 日本語が 130 でした

xmodmap でキーを割り当てる

  • xmodmap を使ってキーマップを変更します
  • xmodmap に読み込ませる設定ファイルを作成
    • ファイル名は .Xmodmap としました
    • 英語キーを無変換に
    • 日本語を全角半角に
keycode 130 = Zenkaku_Hankaku
keycode 131 = Muhenkan
  • xmodmap を使うと他にもいろいろと設定ができそうな気がしますが、それはおいおいで
  • 次のコマンドで xmodmap に設定ファイルを食わせます
xmodmap ~/.Xmodmap
  • ただ、xmodmap へ設定した内容は永続化されず、毎度設定する必要があります
  • なので、下記をシェルスクリプトとして書いて、PCが起動したときに自動的に読み込むよう設定しました
    • Ubuntu で 「自動起動するアプリケーションの設定」に設定できます
xmodmap ~/.Xmodmap
  • こうすればPCが起動すると、キーマップの設定が行われるようになります

mozc で入力方法が切り替わるよう設定する

  • あとは mozc の設定画面から「キー設定の変更」の「編集」を選び、
    • 「Muhenkan」がすでに割り当てられている設定は削除
    • すべての「IMEを無効化」コマンドの入力キーを「Muhenkan」へ
    • すべての「IMEを有効化」コマンドの入力キーを「Hankaku/Zenkaku」へ
  • これで完了です