fc2ブログ

本を読む

読書やコンピュータなどに関するメモ

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

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly