Ubuntu 16.04: キーボードのカスタマイズ設定

メインPC を Ubuntu 16.04 にアップデートしたらキーボードのカスタマイズが 15.04 の時の方法では機能せず、少し変更が必要になった。

変更点

Ubuntu 15.04: キーボードのカスタマイズ設定」の記事で紹介した手順は必要だが、さらにもうひと手間必要になる。

以前の記事ではキーマップファイル ~/.xkb/keymap/hhk はテスト用に作成しただけだが、Ubuntu 16.04 ではこれが必要になり、デスクトップにログイン後に xkbcomp -I$HOME/.xkb ~/.xkb/keymap/hhk $DISPLAY を実行しないとキーマップが反映されなくなった。

xkbcomp の設定だけでは以前と同様、入力メソッドを fcitx-mozc に切り替えるなどの操作でキーマップがリセットされてしまう。

デスクトップログイン時に xkbcomp を実行するため、まずシェルスクリプト ~/bin/hhk_setup.sh を作成する。

#!/bin/sh
xkbcomp -I~/.xkb ~/.xkb/keymap/hhk $DISPLAY 2>/dev/null

これを起動させるために gnome session のスタートアップで起動するデスクトップファイル ~/.config/autostart/hhk_setup.desktop を作成する。

[Desktop Entry]
Type=Application
Exec=/home/hoge/bin/hhk_setup.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[ja]=HHK Setup
Name=HHK Setup
Comment[ja]=Happy Hacking Keyboard のキーマップ設定
Comment=Happy Hacking Keyboard のキーマップ設定

hoge のところはユーザ名に置き換え。~/ や $HOME が使えないのでフルパスで書くしかない模様。以前は GNOME のスタートアップで xkbcomp を実行しても設定が反映されなかったが今回は大丈夫なようだ。

右 Alt キーを Super キーにする

GNOME Flashback は metacity 版を使っていたが、radeon ドライバになってから動画の再生でティアリングが発生するので compiz 版に乗り換えた。compiz 版では gnome-panel の右クリックメニューを出すのに Super キーを押さないといけなくて、HHK にはそんなキーがないので右 Alt キーを Super キーにするように hhk_swap を以下のように書き換えた。

partial modifier_keys
xkb_symbols "alt_keys" {
  replace key <MUHE> { [ Alt_L ] };
  replace key <HENK> { [ Alt_R ] };
  replace key <LALT> { [ Super_L ] };
};

これで Super キーは使えるようになったが、Emacs で Meta キーが効かなくなった。M-x のつもりが s-x になってしまう。Meta キーが Super_L と解釈されている? でも xev で見ても Alt_L にちゃんとなっているのだが…

とりあえず .emacs

(setq x-super-keysym 'meta)

を追加して Super キーを Meta キーと解釈させることで問題を回避した。