Scroll Lock キーを再マップして、任意の Windows キーのキーコードを生成するようにしようとしています。
まず、現在のキーマップをダンプします。
xkbcomp $DISPLAY original-dump
次に、興味のあるキーのキーコードを見つけます。
cat original-dump | grep SCLK
<SCLK> = 78;
cat original-dump | grep LWIN
<LWIN> = 133;
ここで、コンポーネント名をファイルに出力します。
setxkbmap -print > original-components
ファイルを編集してキーコードの変更を追加します。
xkb_keymap {
xkb_keycodes {
include "evdev+aliases(qwerty)"
// Remap Scroll-lock to the keycode of LWIN(133)
<SCLK> = 133;
};
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
上記のファイルを modified-components として保存し、実行します。
xkbcomp modified-components $DISPLAY
再度ダンプ:
xkbcomp $DISPLAY original-dump
キーコードを確認してください:
cat another-dump | grep SCLK
<SCLK> = 133;
ここまでは順調ですが、実行するとxev
、Scroll Lockキーのキーコードがまだ78。
実行した場合:
xmodmap -e "keycode 78 = Super_L"
xevまだ私に見せてくれる78ただし、少なくとも XFCE で LWIN と RWIN 用に作成したショートカットは機能します。
何が間違っているのか知りたい日本語。 ありがとう。
答え1
次の新しいアプローチを試しました(成功しました)
sclkfile
ディレクトリにという名前の新しいファイルを作成し/usr/share/X11/xkb/symbols/
、次の内容を追加しました。
// Make the Scroll Lock key a left Super.
xkb_symbols "sclk_super" {
replace key <SCLK> { [ Super_L ] };
modifier_map Mod4 { <SCLK> };
};
に新しいルールを追加しました/usr/share/X11/xkb/rules/evdev
:
sclkoption:sclk_super = +sclkfile(sclk_super)
ルールの説明は次のとおりです/usr/share/X11/xkb/rules/evdev.lst
。
! option
sclkoption Scroll Lock behaviour
sclkoption:sclk_super Scroll Lock is Super
ここでも/usr/share/X11/xkb/rules/evdev.xml
:
<configItem>
<name>sclkoption</name>
<description>Scroll Lock behaviour</description>
</configItem>
<option>
<configItem>
<name>sclkoption:sclk_super</name>
<description>Scroll Lock is Super</description>
</configItem>
</option>
最後に実行します:
$ setxkbmap -option sclkoption:sclk_super
エラーは発生せず、レイアウトのコンポーネントを印刷すると次のようになります。
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+sclkfile(sclk_super)" };
xkb_geometry { include "pc(pc105)" };
};
新しいルールはそこにあります。
ここで、以下を実行しますxev
:
keycode 78 (keysym 0xffeb, Super_R)
キーコードは依然として 78 ですが、キーシムは Super_R です。成功。