単純な再マップに setxkbmap を使用する (xmodmap と同様)

単純な再マップに setxkbmap を使用する (xmodmap と同様)

xmodmap でキーボードを再マッピングした後、いくつかの問題が発生しました。適用後 2 ~ 20 分後に設定がランダムにリセットされます。Google で検索しましたが、役に立ちませんでした。何かがリセットしますが、言及されているものはすべて xfce に適用されますが、私は通常の 14.04 Ubuntu と unity を使用しています。

「xkb を使用し、xmodmap は忘れてください」のようなフレーズを見ましたが、まだそれをどうすればよいのかわかりません。それに関する情報の量は xmodmap の方法よりも大幅に少ないため、機密事項であるか、非常に複雑です。

カスタマイズのリストは次のとおりです。

xmodmap -e "keycode 84 = Down"
xmodmap -e "keycode 79 = Home"
xmodmap -e "keycode 80 = Up"
xmodmap -e "keycode 83 = Left"
xmodmap -e "keycode 85 = Right"
xmodmap -e "keycode 87 = End"
xmodmap -e "keycode 90 = Insert"
xmodmap -e "keycode 91 = Delete"
xmodmap -e "keycode 89 = Next"
xmodmap -e "keycode 81 = Prior"

ここで、キーコードは、numlock がオフの状態で、テンキーの対応するキーです (基本的に、KP_Del を Delete に、KP_Home を Home などに置き換えています。理由は聞かないでください))

誰か、xkb を使用して、少なくとも 1 行を実行する方法を見つけるのを手伝ってくれませんか? また、他のキーの「名前」はどこで見つければ、残りの部分を例で実行できますか?

答え1

一般的な考え方は、同様の問題に対する私の回答; レイアウトの切り替えが必要な場合(ただしまだかなり壊れている) あなたがすべき新しいレイアウトまたはバリアントを定義する

キーパッドを編集するためにコピーして変更するテンプレートが少し見つけにくいことに注意してください。たとえば、私のキーボードでは、ジオメトリは「pc105」です/usr/share/X11/xkb/symbols/pc。これはで定義されています。調べてみると、含む:

[...]
key <SPCE> {        [        space          ]       };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {        [ BackSpace, BackSpace  ]       };
[...]

キーパッドはファイルで定義されます/usr/share/X11/xkb/symbols/keypad

[...] 
default  partial hidden keypad_keys
xkb_symbols "x11" {
   include "keypad(operators)"

   key  <KP7> {        [  KP_Home,     KP_7    ]       };
   key  <KP8> {        [  KP_Up,       KP_8    ]       };
[...]

キー シンボル (keysims) の名前については、ファイル を調べるのが最適です/usr/include/X11/keysymdef.h。このファイルを入手するには、開発パッケージをインストールしておく必要があります (または をインストールしてインストールしますx11proto-core-dev)。

[...]
/* Cursor control & motion */

#define XK_Home                          0xff50
#define XK_Left                          0xff51  /* Move left, left arrow */
#define XK_Up                            0xff52  /* Move up, up arrow */
[...]

キーシム名は、「XK_」文字列を削除したものになります。

関連情報