我试图在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_Print
代替xK_F12
。
使用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
似乎是0xff61
。但是使用此代替xK_Print
并不起作用(我使用ghci和xK_Print
进行检查只是0xff61
的别名)。
如何将打印屏幕键绑定到某个位置? 当然,我可以使用另一个键来完成这项工作,但是如果不使用打印屏幕来截取屏幕,那就太傻了。
答案 0 :(得分:0)
尝试将$ HOME更改为完整的硬编码路径。我认为当xmonad.hs运行时,它无法访问所有环境变量。
要调试此操作,请执行以下操作:
现在将该键映射到您想要的内容,但将任何错误发送到文件。如,
.... spawn" scrot -q 1 $ HOME / pictures / screenshots /%Y-%m-%d-%H:%M:%S.png> /home/me/errors.log 2>& 1")
查看您获得的错误并处理它们。