将键盘键分配给鼠标按钮(反之亦然)

将键盘键分配给鼠标按钮(反之亦然)

我使用 xbindkeys,我想将一些键盘键映射为鼠标按钮。我不想使用鼠标键,因为布局不适合我的打字。目前我这样做:

"echo ButtonPress 1 | xmacroplay :0"
    KP_Insert

"echo ButtonRelease 1 | xmacroplay :0"
    release + KP_Insert

然后我关闭 KP_Insert 的按键重复(我的设置上的键码是 90):

xset -r 90

不幸的是,xbindkeys 运行的 xmacroplay 按钮似乎没有被窗口管理器接收,因此不能用它来执行诸如调整窗口大小之类的操作。

我愿意考虑将键盘键映射到鼠标按钮的其他选项,但使用鼠标键功能不仅会占用整个数字键盘,而且似乎不允许更改哪些键是按钮,并且在我的系统上,我只能通过按下任何键盘键来获得按钮 3。

答案1

啊 - 问题不在于某种特权级别,无法让窗口管理器访问这些键。问题在于我使用了修饰符,例如“alt + Button1”来移动窗口。

当我执行“alt”+我分配给鼠标按钮 1 的键(在上面的例子中为“KP_Insert”)时,我正在执行不同的组合键,而 xbindkeys 无法识别该映射。

因此解决方案是(使用 KP_Insert ,即我键盘上的键码 90):

1)关闭要转换为鼠标按钮的特定键的重复功能:%xset -r 90

2)将鼠标按钮的绑定添加到.xbindkeysrc:

"echo ButtonPress 1 | xmacroplay :0"
  KP_Insert

"echo ButtonRelease 1 | xmacroplay :0"
  release + KP_Insert

3)为您可能想要使用的任何修饰符+鼠标按钮添加绑定,例如“Alt”:

"echo KeyStrPress Alt_L | xmacroplay :0 ; echo ButtonPress 1 | xmacroplay :0"
  alt + KP_Insert

#"/home/dave/bin/xmacro kr Alt_L br 1"
"echo ButtonRelease 1 | xmacroplay :0 ; echo KeyStrRelease Alt_L | xmacroplay :0"
  release + alt + KP_Insert

4)启动或重新加载xbindkeys:

% xbindkeys
# or if xbindkeys is running:
% killall -HUP xbindkeys

虽然我会说这在启动 compiz 插件热键时会遇到一些问题,我还没有弄清楚,在 xbindkeys 外部运行这些行可以正常工作,但在 xbindkeys 内部则不起作用。还没有调试过。

相关内容