2012年12月2日日曜日

xmodmap ubuntu/mintで、全角/半角キーとESCを入れ替える。最近 xkb

追記:

もうずいぶん前から、xkbに移行しています。

全角/半角キーとESCだけなら、以下のサンプルでうまくいくと思います。説明の手抜きですが貼り付けておきます。ごめんなさい。ubuntu16.04LTSでも同じです。再設定というか、~/.xkbをコピーしてそのまま使っています。だから手順を追った説明が書けないので、サンプルをダウンロードできるようにしました。

また、他のアサインがあるので半角/全角キーなんていらない!! っていう方もいるでしょう。それだけなら、標準のキーボードレイアウト(システム設定)のカスタマイズで、半角全角キーを第2のESCAPEにするオプションをチェックすればいいのではないかと思います。ノートPCだとそういうほうが使いやすいかもしれませんね。

サンプルファイル:全角とESC入れ替え 

説明を書くのがめんどくさいので、ストレージ置き場(https://sites.google.com/)に、使っている&研究中のファイルをサンプルとして置いておきます。よかったら、そのまま使ってみたり、直してみたり、いろいろしてみるとわかりやすいかもしれません。アクセスが多いのでなんとなく申し訳ない気がしていたのでした。

dot.xkb.rar そのまま使えるxkb設定ファイルのダウンロード 簡便版:中身はテキストだけです。

~/.xkb をそのまま固めただけです。作成済み.xkbがなければそのまま~/ に展開します。そして、以下のコマンド発行するとよいです。

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

試行錯誤した記録などのゴミも含めて固めています。めんどくさいのでそのままです。

カスタマイズに便利というか、必要なツール

xevを起動して、スキャンコードなどを確認しつつ作業すると捗ります。

これは、右ビル・ゲイツキーのメニューに、Hyper_Rを割り当ててみた場合です。

キーコードの一覧を確認するには、 次のコマンドを発行します。

xmodmap -pke

として、テキストにしておくと便利かも。 

xmodmap -pke > keycode.txt

みたいに。


(解決済み)何かのはずみでfcitxでキーアサインがデフォルト値に戻るのを防ぐ。という記事で以下の問題は解決しました。野帳なので残しています。
何かの弾みでデフォルトに戻る場合がありますね。 当方の環境では、少なくともmozcを再起動すると元に戻ります。だから、

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

という1行スクリプトを都度実行しないといけないですね。 ランチャーに登録してマウス・クリックでもいいです。Windowsならレジストリを書き換えたら恒久的に触らなくていいので楽なんですけど。あはは。何も考えなくていい、楽ちんな方法があればと思いますが、ま、いいか。 右クリックのスクリプトにXKBというメニューでもいいか。

●基本ファイル

xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+japan" };
xkb_symbols { include "pc+jp(OADG109A)+inet(evdev)+
terminate(ctrl_alt_bksp)+mykeys(bindkeys)" };
xkb_geometry { include "pc(pc105)" };
};

迷ったらここ。
http://www.charvolant.org/~doug/xkb/html/

http://madduck.net/docs/extending-xkb/

●カスタマイズ

# replace key { [ backslash, bar ] }; は著しく個人的な好み
partial modifier_keys
xkb_symbols "bindkeys" {
replace key { [ Zenkaku_Hankaku, Kanji ] };
replace key { [ Escape ] };

#replace key { [ backslash, bar ] };
};

#OK? replace key { [ Caps_Lock ] };
#OK replace key { [ Control_L ] };
#OK replace key { [ Menu ] };
#OK replace key
{ [ Caps_Lock ] };

# 以下要研究
#NG replace key { [ Control_L ] };
#NG replace key { [ Return ] };
#NG replace key { [ Return ] };
#NG replace key { [ Return ] };
# replace key { [ Bar ] };
# <キー>に{機能}を割り当てる
# http://www.charvolant.org/~doug/xkb/html/
#cf. xdg-open /usr/share/X11/xkb

●起動時反映させる

.profileなり.bashrcに、

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

-----------

過去稿:xmodmap から xkbになってきたかんじなので。

20年来OS問わず、このKeyassignにして使っています。

gedit ~/.Xmodmap

以下の内容で作成。貼り付けましょう。

keycode 49 = Escape
keycode 9 = Zenkaku_Hankaku

再起動。もしくは、

xmodmap ~/.Xmodmap

で即時反映。mint,debianも共通。

長いこと使っています。問題が出たことはありません。

ちなみに、Windows7ではマイクロソフトのリソースキットで同様に設定しています。詳しく覚えていません。一旦設定してレジストリを書き換え、そのレジストリファイルを保存すれば、.regファイルをクリックするだけです。Windows10でも同じです。

OADG109。その他のキーを入れ替えたい場合は、xmodmapで検索してみてください。また標準GUIの設定ツールで事足りるかもしれませんので、設定/キーボードを確認してみるといいかも。たとえば、Pauseキーに、Muteを割り当てるなど。フレイバーによる差はあるかもしれませんが標準的な機能を使うほうがいいのかな、とも。


反映されない場合の回避策




追記、いつのまにか当方の3つの環境で自動反映されなくなりました。検索してみると英語圏の方も同じような状態になっているようです。.profileなどでも反映されません。不思議です。

いろいろ考えてみたんですが、最終的に、
mint/ubuntuの「自動起動するアプリケーション」に追加設定することで対応できています。\(^o^)/ これがいちばん簡単かもしれません。

xmodmap .Xmodmaprc などが効かなくなった方は一度試してみてください。画像がみにくいですが、コマンドは、xmodmap /home/ユーザ名/.Xmodmaprc です。rcになんとなくしてみました。

追記

自動認識は、mint cinnamon はだめで、mateなら選択ダイアログが出てきますので大丈夫です。 12.10。


gconf-editor でCinnamonの場合にどう修正すればいいのかわかりませんでした。
以下のコマンドを発行すれば結果オーライなわけなので、

xmodmap /home/ユーザ名/.Xmodmaprc

結果として、

gedit /home/zish/.config/autostart/keychange.desktop

というファイルを作成。その中身が、

以下になっていればOKということですね。小手先ですが。

[Desktop Entry]
Type=Application
Exec=xmodmap ~/.Xmodmaprc
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[ja_JP]=Xmodmap
Name=Xmodmap
Comment[ja_JP]=force Xmodmap
Comment=force Xmodmap

さらに追記、単純にXmodmap /home/user/.Xmodmaprc ではうまく行かないケースが当方では出てきました。理由はわかりません。12月にバグとしてあげた方がいらっしゃるようですが、アサインされていませんね。

本家のubuntuフォーラムでも解決できていないのようなので、上記を参考にやってみてください。だめなのはCinnamonです。

0 件のコメント:

コメントを投稿