XKBのキー配列でCtrlとCapsを入れかえ、変換と無変換をShiftにする
最近のLinuxのデスクトップ環境では、キーをXKBという機構で管理しています。最近、新規でLinuxデスクトップ環境をセットアップしたので、ついでに自分のキーカスタマイズ方法をメモしておきます。カスタマイズ内容は、タイトルのとおり、CtrlキーとCapsキーを入れかえるのと、変換キーと無変換キーをShiftキーにすることです。
まず設定ファイルのディレクトリを作ります。
$ mkdir -p ~/.xkb/{keymap,symbols}
使っているキーコンポーネント名をファイルに保存します。
$ setxkbmap -print > ~/.xkb/keymap/mykbd
symbolsディレクトリの下に新規ファイルを作ります。ここでは仮に「henkan」とします。
$ vi ~/.xkb/symbols/henkan
無変換キーに左Shiftキーを、変換キーに右Shiftキーを割り当てるには、以下のような内容を書き込んで保存します。
partial modifier_keys xkb_symbols "thumb_shift" { replace key <MUHE> { [ Shift_L ] }; replace key <HENK> { [ Shift_R ] }; };
キーコンポーネント名を保存したファイルをテキストエディタで開きます。だいたい7行ぐらいだと思います。
$ vi ~/.xkb/keymap/mykbdf
こんな感じで変更します。
xkb_symbols { include "pc+jp+inet(evdev) }; ↓ xkb_symbols { include "pc+jp+inet(evdev)+ctrl(swapcaps)+henkan(thumb_shift) };
「henkan(thumb_shift)」は、symbolsディレクトリの下に作ったファイル名と、そのファイルでxkb_symbolsで定義した名前です。
設定を読み込みます。
$ xkbcomp -w0 -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
「$HOME」と書いているのは、「-I」の直後の「~」はシェルが展開してくれないためです。
なお、IMフレームワークにiBus使っていると、IMを切りかえたときに、カスタマイズされたキー配列がクリアされます。これは、iBusではIMがキー配列と結びついているための必然です。
iBusではなくFcitxを使っていて、半角/全角キーによりIMをオン/オフしたときにも、キー配列がクリアされてしまう場合があります。これはGNOMEとiBusの統合機能が有効になっていて、iBus方式のキー配列管理がされているからです。Fcitxでこのようになる場合には、統合機能を無効にします。
$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
コメント
コメントの投稿
トラックバック
https://emasaka.blog.fc2.com/tb.php/1441-524ed451