无法在XMonad中绑定打印屏幕

时间:2014-04-18 13:49:26

标签: xorg xmonad

我试图在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的别名)。

如何将打印屏幕键绑定到某个位置? 当然,我可以使用另一个键来完成这项工作,但是如果不使用打印屏幕来截取屏幕,那就太傻了。

1 个答案:

答案 0 :(得分:0)

尝试将$ HOME更改为完整的硬编码路径。我认为当xmonad.hs运行时,它无法访问所有环境变量。

要调试此操作,请执行以下操作:

  1. 将该密钥映射到您知道的密钥(即,复制您用于另一个密钥绑定的密钥绑定工作密钥)。
  2. 如果有效,那么你知道Xmonad可以"看到"关键。
  3. 现在将该键映射到您想要的内容,但将任何错误发送到文件。如,

    .... spawn" scrot -q 1 $ HOME / pictures / screenshots /%Y-%m-%d-%H:%M:%S.png> /home/me/errors.log 2>& 1")

  4. 查看您获得的错误并处理它们。