すべてのWindowsキーのキーコードを生成するようにScroll Lockキーを再マップしようとしています。
まず、現在のキーマップをダンプします。
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)" };
};
上記のファイルを変更されたコンポーネントとして保存し、以下を実行します。
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"
シフまだ見せて78ただし、少なくともLWINおよびRWIN用にXFCEで作成されたショートカットは機能します。
何が間違っているのか知りたいxkb。ありがとうございます。
ベストアンサー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です。成功。