将鼠标按钮绑定到 Control_L 或 Super_L 键

将鼠标按钮绑定到 Control_L 或 Super_L 键

我正在尝试使鼠标按钮的功能与 Control_L 或 Super_L 键完全相同。

在许多应用程序(firefox、konsole 等)中,Ctrl+Scroll 具有缩放等特殊操作,因此将鼠标按钮分配给修饰键看起来非常有用。

我还希望使用分配给 Super 的鼠标按钮作为在 awesome wm 中操作窗口的键。

因此我尝试使用 xbindkeys 和 xdotool:

"xdotool keydown control"
    b:8

"xdotool keyup control"
    release + control + b:8

但是当我按下鼠标按钮#8时,xev 说:

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。

当我尝试将鼠标键分配给普通键(不是修饰键)时 - 一切正常。

另外,我尝试通过 ssh 从另一台机器调用 xdotool/xte/xvkbd,并且成功了!

所以我完全不知道还能尝试什么。有什么想法吗?

更新:据我所知 LeaveNotify 和 EnterNotify 是由 xbindkeys 调用的 XGrabButton 生成的,但我仍然不知道该怎么做 :(

答案1

尝试:

"xdotool keyup control"
  Control + b:8 + release

请注意,Control 以及所有其他修饰符都是大写的,修饰符列在最前面,release 列在最后。

相关内容