我使用 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 内部则不起作用。还没有调试过。