xbindkeys 配置中的 c: 和 m: 是什么?

xbindkeys 配置中的 c: 和 m: 是什么?

在 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:0x4xbindkeys -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.

相关内容