Ubuntu キーバインド変更(xmodmap)

キーバインドはWinと同等にする。

Windows 初期設定

xmodmap -pke > .xmodmap_def
このファイルを改造してリセット用のファイルを作成する。

先頭に以下を追加
clear shift
clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5

末尾に以下を追加
add shift = Shift_L
add shift = Shift_R
add lock = Eisu_toggle
add control = Control_L
add control = Control_R
add mod1 = Alt_L
add mod1 = Alt_R
add mod1 = Meta_L
add mod2 = Num_Lock
add mod4 = Super_L
add mod4 = Super_R
add mod4 = Super_L
add mod4 = Hyper_L
add mod5 = ISO_Level3_Shift
add mod5 = Mode_switch

コンソールからxevを実行してキーコードを調べる。

xmodmap -pm でモディファイを確認しておく。(xmodmap -pke で割り当ての一覧)

keycode xxx  = キーシム 1 2 3 4 5 6 となる。

1: そのキーだけを押した時の出力
2: Shiftで修飾の出力。
3: mod2で修飾の出力。
4: Shift+mod2で修飾の出力。

モディファイキーを移動する場合、モディファイから削除しておく。
remove control = Control_L等

移動後、再度追加。
add control = Control_L等

最終的に以下のように設定。

注意点として、xmodmapを繰り返すと、一度摘要された設定に再度設定するので、半角/英数などの部分でエラーになってしまう。defを一度実行すれば大丈夫。

WinがAutohotkeyで対応している部分は後々考える。

自動起動について

/etc/rc.local に xmodmap ~/.xmodmap
.profile に xmodmap .xmodmap
等に書いてもダメ。unable to open displayになってしまう。

GUI側のターミナルで、echo $DISPLAY とすると、:0 と表示されるので、
.profileには
export DISPLAY=”:0″
xmodmap .xmodmap
の2つを追記する。

これで一応SSHから入るとxmodmapが読み込まれるようだが、GUI側のターミナルを開いただけでは読まれない模様。(上記2行を/etc/profileに書いても同じ症状)
SSHで入ると、GUIの方にもxmodmapが読み込まれるようだけど。

GUIの自動起動に追加してみる。

~/.config の中に autostart フォルダを作成する。
(全ユーザ共通は /usr/share/gnome/autostart となる)
そのフォルダの中にファイルを作りファイル名は *.desktop とする。

ファイルの中に
[Desktop Entry]
Exec=xmodmap .xmodmap
Type=Application
を書いておく。

これで問題なく動いた。

作るタイミングによっては自動で.xmodmapを検出して自動起動するか確認される場合もあって気がするが、今回はなかった。

1 /etc/profile 全ユーザ共通。
2 .bash_profile なくてもいい。
3 .bash_login 上記2がない場合読まれる。なくてもいい。
4 .profile  上記2,3が無い場合読まれる。なくてもいい。
5 .bashrc シェルごとに読まれる。