ということで、
前回の続き。永続的に音量増大<VOL+>
キーをPrintScreen<PRSC>
キーとして割り当てたい。
追記 2022-09-12
input-remapperが使えるなら、それでやる方が楽。
追記ここまで
を参考に作業を進める。
ユーザー環境ファイルを作成
編集するディレクトリ、元ファイルを作成。
$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols
$ setxkbmap -print > ~/.xkb/keymap/mykbd
~/.xkb/keymap/mykbd
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+group(win_space_toggle)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
/usr/share/X11/xkb/symbols/pc
hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
/usr/share/X11/xkb/symbols/inet
// Evdev Standardized Keycodes
partial alphanumeric_keys
xkb_symbols "evdev" {
key <MUTE> { [ XF86AudioMute ] };
key <VOL-> { [ XF86AudioLowerVolume ] };
key <VOL+> { [ XF86AudioRaiseVolume ] };
キー再割り当てするファイルを作成
コマンドとして
xmodmap -e "keycode 107 = "
xmodmap -e "keycode 123 = Print Sys_Req Print Sys_Req"
とやれば良いのだから、2コマンドに該当するように作成する(したつもり)。
~/.xkb/symbols/myswap
hidden partial alphanumeric_keys
xkb_symbols "swapkeys1" {
replace key <PRSC> { [ ] };
};
partial alphanumeric_keys
xkb_symbols "swapkeys2" {
replace key <VOL+> { [ Print ] };
};
上記作成したファイルを追加する(+myswap(swapkeys1)+myswap(swapkeys2)
)。
~/.xkb/keymap/mykbd
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+group(win_space_toggle)+terminate(ctrl_alt_bksp)+myswap(swapkeys1)+myswap(swapkeys2)" };
xkb_geometry { include "pc(pc105)" };
};
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
と実行してみたが、駄目。特にエラーも出てない1。
他にも空でなく[ NoSymbol ]
としたり、symbols[Group1]= [ ]
としたり、replace key <I218> { [ ] };
を追記したり、
replace key <VOL+> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
としたり、とあれこれやってみた。でも駄目。
大本のファイルを直接編集する(成功)
なので、元ファイルはバックアップして、
/usr/share/X11/xkb/symbols/pc
hidden partial alphanumeric_keys
xkb_symbols "editing" {
// key <PRSC> {
// type= "PC_ALT_LEVEL2",
// symbols[Group1]= [ Print, Sys_Req ]
// };
<PRSC>
部分をコメントアウト。
/usr/share/X11/xkb/symbols/inet
// Evdev Standardized Keycodes
partial alphanumeric_keys
xkb_symbols "evdev" {
key <VOL+> { [ Print ] };
XF86AudioRaiseVolume
をPrint
に変更。
大本のファイルを直接編集した。
成功!!
いっそ、これらを ~/.xkb/symbols/mypc ~/.xkb/symbols/myinet とコピーして読み込ませればイケるんじゃない?とやってみたのに、それでも駄目!!
まあ、出来るようになったから良いんだけどね。
-
実際にこのコマンドで運用(適用)していくときは、警告などが出るので、
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
とする。 ↩︎