Я пытаюсь заставить кнопки мыши действовать точно так же, как клавиши Control_L или Super_L.
Во многих приложениях (Firefox, Консоль и т.д.) Ctrl+Scroll имеет специальные действия, такие как масштабирование, поэтому назначение кнопки мыши клавише-модификатору выглядит очень полезным.
Также я надеюсь использовать кнопку мыши, назначенную для Super, в качестве ключа для управления окнами в удивительной WM.
Поэтому я пытаюсь использовать xbindkeys и xdotool:
"xdotool keydown control"
b:8
"xdotool keyup control"
release + control + b:8
Но когда я нажимаю кнопку мыши № 8, Ксев говорит:
LeaveNotify event, serial 30, synthetic NO, window 0x1800001,
root 0x33f, subw 0x0, time 52846491, (-1,166), root:(0,186),
mode NotifyGrab, detail NotifyAncestor, same_screen YES,
focus YES, state 0
и когда я отпускаю кнопку:
EnterNotify event, serial 30, synthetic NO, window 0x1800001,
root 0x33f, subw 0x0, time 52846655, (-1,166), root:(0,186),
mode NotifyUngrab, detail NotifyAncestor, same_screen YES,
focus YES, state 0
KeymapNotify event, serial 30, synthetic NO, window 0x0,
keys: 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Поэтому приложения не получают никаких уведомлений о клавишах / кнопках (KeyPress и другие).
Я пытался играть с xmodmap, использовать xte или xvkbd вместо xdotool.
Когда я пытался назначить клавишу мыши на нормальную клавишу (не модификатор) - все работает нормально.
Кроме того, я попытался вызвать xdotool/xte/xvkbd с другой машины по ssh, и это работает!
Так что я абсолютно не знаю, что попробовать еще. Есть идеи?
Upd: Насколько я понимаю, LeaveNotify и EnterNotify, сгенерированные XGrabButton, вызваны xbindkeys, но я все еще не знаю, что делать :(