MX Mechanical Miniの特定のキーにPrintScreen
を割り当てたい。
前回の記事 Windowsでは割とサクっと出来たが、Linuxでは上手く行かなかった。
追記 2022-09-12
input-remapperが使えるなら、それでやる方が楽。
追記ここまで
キーボード -> ショートカットタブ で割り当てる
単にスクリーンショットをするためのショートカットを割り当てたいということであれば、大体は複数のショートカットの設定が可能となっているので、キーボード -> ショートカットタブ -> カテゴリ -> システム -> スクリーンショットと録画
でショートカットのキーボード割り当てが出来るので、そこで割り当ててしまえば終了である。
ただ、それだと負けた?気がするので、Windows編と同様に音量増大<VOL+>
キーをPrintScreen<PRSC>
キーとして割り当てたい。
- [xkb] Ubuntu 14.04 で Caps Lock を別のキーにする方法 - ill-identified diary
- How to remap or swap special keyboard keys in Linux?
上記サイトを参考にして、キーの入れ替え自体は出来たのだけど、ショートカットとして割り当てられているGNOME スクリーンショットが起動しない。
キーコードを調べる
$ xmodmap -pk
There are 7 KeySyms per KeyCode; KeyCodes range from 8 to 255.
KeyCode Keysym (Keysym) ...
Value Value (Name) ...
107 0xff61 (Print) 0xff15 (Sys_Req) 0xff61 (Print) 0xff15 (Sys_Req)
123 0x1008ff13 (XF86AudioRaiseVolume) 0x0000 (NoSymbol) 0x1008ff13 (XF86AudioRaiseVolume)
$ xmodmap -pke
keycode 107 = Print Sys_Req Print Sys_Req
keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
xmodmap -e "keycode 123 = XF86AudioRaiseVolume"
とすると、キーボードの割り当てどではPrint
と認識されているのだけど、Scrennshotなどが動作しない。
modifierキー
Kuriki’s HomePageのようにxmodmap -e "remove Lock = Caps_Lock"
のような削除処理がいるのか?と思ったが、
$ xmodmap
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
とremove
できるのはmodifierキーのみっぽい。
ラップトップのキーボードを無効化
そもそもラップトップのキーボードとLogitech MX Mechanical Miniと二つあるから、上手く行かないのか?と思って Is there a way to disable a laptop’s internal keyboard? - Ask Ubuntuを参考に
$ xinput list
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
xinput float 15
無効化1してCinnamonを再起動させてみるけど、駄目。
コマンドで成功
xmodmap -e "keycode 107 = "
xmodmap -e "keycode 123 = Print Sys_Req Print Sys_Req"
とやることで成功した2。
ログイン(起動)時に反映できない
じゃあ、上記コマンドを.profile
に追記したり、自動で起動するアプケーション.desktopとしてxmodmap -e "keycode 107 = " -e "keycode 123 = Print Sys_Req Print Sys_Req"
を実行させても反映されない…