我试图在Xmonad中绑定打印屏幕键,但似乎不起作用。
我的xmonad.hs中有以下代码:
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[
...
, ((0, xK_Print), spawn "scrot -q 1 $HOME/pictures/screenshots/%Y-%m-%d-%H:%M:%S.png")
...
]
但是,如果我按下打印屏幕,什么也不会发生(文件不在那里)。用xK_F12
代替xK_Print
是可行的。
使用xev
,我找到了打印屏幕的关键字:
KeyPress event, serial 32, synthetic NO, window 0x1a00001,
root 0x90, subw 0x0, time 8532454, (593,435), root:(594,454),
state 0x10, keycode 218 (keysym 0xff61, Print), same_screen YES,
XKeysymToKeycode returns keycode: 107
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 32, synthetic NO, window 0x1a00001,
root 0x90, subw 0x0, time 8532501, (593,435), root:(594,454),
state 0x10, keycode 218 (keysym 0xff61, Print), same_screen YES,
XKeysymToKeycode returns keycode: 107
XLookupString gives 0 bytes:
XFilterEvent returns: False
似乎是CCD_ 4。但使用它代替xK_Print
效果不佳(我检查了ghci,xK_Print
只是0xff61
的别名)。
如何将打印屏幕键绑定到某个东西?当然,我可以用另一个键来完成这项工作,但不使用打印屏幕截图感觉很傻。
尝试将$HOME更改为完整的硬编码路径。我认为当xmonad.hs运行时,它不能访问所有的环境变量。
要对此进行调试,请执行以下操作:
- 将该密钥映射到您知道有效的东西(即,复制您用于另一个有效密钥的密钥绑定)
- 如果这有效,那么你就知道Xmonad可以"看到"钥匙
-
现在将该键映射到您想要的内容,但将任何错误发送到文件中。例如,
产卵"scrum-q 1$HOME/图片/屏幕截图/%Y-%m-%d-%H:%m:%S.png>/HOME/merrors.log 2>&1")
-
看看你犯了什么错误,然后处理它们。