読者です 読者をやめる 読者になる 読者になる

opukopuのメモ帳

コンピュータを使わないでいたらいろんなことを忘れてしまったので思い出しながらメモする。

LinuxMintでのキー配置変更

もうなんどやったことか。
今日も元気にEscとMuhenkanを入れ替える。

ぶっちゃけUbuntuでxkbを使った入れ換えをするのと何ら変わらない。

d.hatena.ne.jp

http://blog.cnu.jp/blog/2014/05/12/use-xkb/

こちらを参考にさせていただきました。
ただ、ログインしてもうまく反映されない部分が私の環境ではあったので少しやり方を変えます。
言ってることは前のUbuntu版とほぼ変わりません。修飾キーは特に換えないので扱いませんが、Ubuntu+xkbのことを調べれば情報はあるはず。

まずは

$ xev

としてkeycodeと名前を調べましょう。私の環境ではEsc 9, Muhenkan 102でした。

$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols  //設定ファイルを格納するディレクトリ
$ setxkbmap -print > ~/.xkb/keymap/hhkb_swap  //キーボード設定を出力 ファイル名は自由
$ echo -e "partial modifier_keys\nxkb_symbols \"swapkeys\" {\n  replace key <MUHE> { [ Escape ] };\n  replace key <ESC> { [ Muhenkan ] };\n};" >> ~/.xkb/symbols/keyswap //ファイル名は自由

設定を記したファイルをkeyswapというファイルに出力します。同じことをやるのは面倒なのでコマンドで出力しました。
中身は以下のようになっています。は/usr/share/X11/xkb/keycodes/evdevに先ほど調べたkeycodeの数字(9や102)と対応するように書かれている。自分が使うキーコードを探して<>で囲まれたものを設定ファイルに書けば良い。

partial modifier_keys
xkb_symbols "swapkeys" {
  replace key <MUHE> { [ Escape ] };
  replace key <ESC> { [ Muhenkan ] };
};

swap_keysという名前の入れ替えです。
つぎに~/.xkb/keymap/hhkb_swapを編集します。
5行目に先ほどのkeyswapというファイルのswapkeysを使うよということを追加します。

xkb_symbols { include "pc+us+jp:2+inet(evdev)+terminate(ctrl_alt_bksp)+keyswap(swapkeys)" };

$ xkbcomp -I$HOME/.xkb ~/.xkb/keymap/hhkb_swap $DISPLAY 2> /dev/null

このコマンドで変換が行われたか確認します。Warningがたくさん出てくるのですが、問題ないしようですし邪魔なので/dev/nullにエラー出力してしまいます。

以後はこれをログイン時に実行するように.profileに書いておきましょう。

$ echo -e "xkbcomp -I\$HOME/.xkb ~/.xkb/keymap/hhkb_swap \$DISPLAY 2> /dev/null" >> ~/.profile

あとはログインしなおせば変更されているはずです。

と思ったら反映されませんでした。
私の環境だけでしょうか、。なんとなくシェルの階層が違って云々みないな話題なのか、まあ原因はわかりませんが。

$ echo -e "xkbcomp -I\$HOME/.xkb ~/.xkb/keymap/hhkb_swap \$DISPLAY 2> /dev/null" >> ~/keyswap.sh
$ chmod 755 keyswap.sh

とでもしてkeyswap.shをスタートアップアプリケーションに追加して回避しました。