在 xbindkeys 的默认示例配置中,有一个直接指定键码的示例:
# set directly keycode (here control + f with my keyboard) #"xterm" # c:41 + m:0x4
c:
和是什么m:
意思? xbindkeys 的文档没有对此进行任何说明。
另外,我知道您可以用来xbindkeys -k
查找钥匙的代码。如果这不起作用(对于非标准 fn 键之一,该命令不会响应按键,而是执行正常操作),是否意味着无法xbindkeys
处理该键?即使我知道密钥代码showkey -k
(在我的例子中是 217)?
答案1
c:41 + m:0x4
是xbindkeys -k
当您按下要绑定的键时报告的内容。
如果这不起作用(对于非标准 fn 键之一,该命令不会响应按键,而是执行正常操作),这是否意味着 xbindkeys 无法处理该键?
可能是。
但是,您有可能让它发挥作用,具体取决于系统的哪个部分“窃取”了密钥。
如果是X11应用程序,窃取密钥称为“抢夺”。很遗憾,识别谁拿了钥匙很困难。如果您设法禁用抓取,那么 xbindkeys 将有机会抓取它。
如果它不是 X11 应用程序(或者即使是),请检查系统日志以查看按下该键时是否记录了任何内容。如果有的话,这将为您提供有关谁在处理按键的重要线索。
即使我知道 showkey -k 中的键码(在我的例子中是 217)?
这不是您想要的关键代码。showkey
显示 Linux 键码,但是Xorg 有自己的键码。 Xorg 键码通常移动 8,键码可能是 225。但是xbindkeys -k
这是显示键码的方式,如果这不起作用,则意味着 xbindkeys 无法检测到您的键。
答案2
这似乎没有记录,但三个修饰符b:
、c:
和m:
分别引入了鼠标按钮、键码和修饰符掩码的数值。所以
c:41 + m:0x4
表示“代码为 41 的键”(f在键盘上),修饰符为 4,IE Ctrl。修饰符值定义在/usr/include/X11/X.h
:
/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
state in various key-, mouse-, and button-related events. */
#define ShiftMask (1<<0)
#define LockMask (1<<1)
#define ControlMask (1<<2)
#define Mod1Mask (1<<3)
#define Mod2Mask (1<<4)
#define Mod3Mask (1<<5)
#define Mod4Mask (1<<6)
#define Mod5Mask (1<<7)
我不确定你的第二个问题的答案,但你应该尝试使用c:217
.