maya's blog

About programming, aws and ubuntu

右ALTで英数字・日本語の入力切替

xmodmapで右ALTキーで英数字入力、日本語入力切り替えをできるようにします。

検証環境

  • OS: Ubuntu 18.10 cosmic
  • GNOME: 3.30.1
  • IMシステム: Ibus
  • 入力ソース: Mozc

f:id:maya2250:20190412094333p:plain

やりかた

  1. IMシステムを確認

    ランチャーでlangを入力し、「言語サポート」の設定を開きます。
    「言語」タブの「キーボード入力に使うIMシステム」が「IBus」であることを確認します。

    f:id:maya2250:20190412094722p:plain

  2. 入力ソースの確認

    ランチャーでsettingを入力し、「設定」→「地域と言語」を開きます。
    入力ソースの先頭に「日本語(Mozc)」があることを確認します。
    なければから追加しましょう。

    f:id:maya2250:20190412094744p:plain

  3. xevコマンドで右ALTキーのキーコードを調べる

    ターミナルでxevコマンドを実行し、右ALTキーを押すと以下のようなメッセージが表示されます。

     KeyPress event, serial 37, synthetic NO, window 0x3c00001,
         root 0x1a8, subw 0x0, time 2853855, (-428,146), root:(443,1695),
         state 0x0, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
         XLookupString gives 0 bytes:
         XmbLookupString gives 0 bytes:
         XFilterEvent returns: False
    
     KeyRelease event, serial 37, synthetic NO, window 0x3c00001,
         root 0x1a8, subw 0x0, time 2853964, (-428,146), root:(443,1695),
         state 0x8, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,
         XLookupString gives 0 bytes:
         XFilterEvent returns: False
    

    keyを「押した」「離した」のイベントが取れていることがわかります。
    各々の3行目にkeycode 108とあり、これが私の環境下での右ALTキーキーコードです。

  4. xmodmapでキーコードをキーシムに割り当てる

    xmodmapコマンドでキーコード(物理キーの番号)とキーシム(キーの役割)のマッピングがわかります。

     $ xmodmap -pke | grep 108
     keycode 108 = Alt_R Meta_R Alt_R Meta_R
    

    108Alt_R Meta_R Alt_R Meta_Rにマッピングされていることがわかります。
    それでは108Zenkaku_Hankakuに割り当てます。

     $ echo keycode 108 = Zenkaku_Hankaku Kanji > ~/.Xmodmap
     $ xmodmap ~/.Xmodmap
    

    以下のように一時的変更も可能です

     $ xmodmap -e "keycode 108 = Zenkaku_Hankaku Kanji"
    
  5. 自動起動させる

    gnome-session-propertiesコマンドを実行し、 「自動起動するアプリケーションの設定」で上記コマンドを実行させます。

    f:id:maya2250:20190412094906p:plain

さいごに

実は最初にFcitxを使って右ALTキーで入力切替設定をしました。 日本語入力状態でchromeのキー操作(Ctrl-TAB等)の動作が1秒程かかりかなりストレスに感じておりました。

上記の対策がわからなかったのとFcitxは設定項目が多く個人的によくわからなかったので、 IMシステムに以前まで用いていたibusに戻すことにしました。

参照