有馬総一郎のブログ

(彼氏の事情)

2022年07月30日 22:42:35 JST - 2 minute read - Linux

Logitech MX Mechanical Miniに画面キャプチャ(PrintScreen"PrtSc")できるキーを追加する Linux編 その2

ということで、 前回の続き。永続的に音量増大<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  ]       };

XF86AudioRaiseVolumePrintに変更。

大本のファイルを直接編集した。

成功!!

いっそ、これらを ~/.xkb/symbols/mypc ~/.xkb/symbols/myinet とコピーして読み込ませればイケるんじゃない?とやってみたのに、それでも駄目!!

まあ、出来るようになったから良いんだけどね。


  1. 実際にこのコマンドで運用(適用)していくときは、警告などが出るので、xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/nullとする。 ↩︎