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

ちゃっくのメモ帳

ちゃっくがメモしときたいことをメモしとくよ

Linuxでキー変更

キーバインド変更を試みた。その方法をメモっておく。
環境はubuntu 15.04
使用するのはxkb

なんかいろいろググると~/.xkb/keymap/.mykbdと~/.xkb/symbols/mysmbolを変更していろいろやってたけどそれをしてもうまくいかなかった。3時間位頭かかえたけどどうしようも無いから某氏に聞いてやった方法。

まずは設定ファイルを置くフォルダ

mkdir -p ~/.xkb/keymap
setxkbcomp -print > ~/.xkb/keymap/mykbd

なんかいろいろなサイトだとここで~/.xkb/symbolsとか作ってそこにmyswapを作ったりするらしいんだけどそうするとうまくいかなかった。

結局mykbdファイルに直接書き込む。
mykbdは次のような構成になっていた(これは環境とかで多少変わりそう)

xkb_keymap{
    xkb_keycodes  {include "evdev+aliases(qwerty)"   };
    xkb_types     {include "complete"    };
    xkb_compat    {include "complete"    };
    xkb_symbols   {include "pc+jp+us:2+inet(evdev)+ctrl(nocaps)"    };
    xkb_geometry  {include "pc(pc104)"   };
};

ここにとりあえず「変換キーをctrlに」「無変換キーをescに」割り当てた。次のようにxkb_symbolsの""の外に書き込めばいいらしい。

xkb_keymap{
    xkb_keycodes  {include "evdev+aliases(qwerty)"   };
    xkb_types     {include "complete"    };
    xkb_compat    {include "complete"    };
    xkb_symbols   {include "pc+jp+us:2+inet(evdev)+ctrl(nocaps)"    

        key <HENK> {[Control_L]};
        key <MUHE> {[Escape}];

    };
    xkb_geometry  {include "pc(pc104)"   };
};

これで設定は完了する。


ついでに某氏に教えてもらった元の設定の確認方法のコマンドは以下のようである。

vim <(xkbcomp $DISPLAY -)

これで設定をみれる。(ここから必要な部分を探せばいい)。


あとは自分で適当に調べたもののメモ。
キーコードを知りたければ

xev

とかすればよかった気がする。
後は一応zshrcにググって書いてあった

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

とかしているけどこれが何をしていて必要なのかわかってない(-_-;)

なんか記事についてあったらコメントでもtwitterでリプでもくださいな(・・)

追記

「カタカナひらがなローマ字キー」にShiftを割り当てようとおもって上記の通りに

    key <HKTG> {[Shift_R]};

としたが適用されなかった。
そこで

    key <HKTG> {[Shift_R}];
    modifier_map Shift { <HKTG> };

としたら適用された。
あと多分xkbcomp ... というのは必要で書き直したらzshrcを再度読み込む必要がある気がする。