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_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运行时,它不能访问所有的环境变量。

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

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

    产卵"scrum-q 1$HOME/图片/屏幕截图/%Y-%m-%d-%H:%m:%S.png>/HOME/merrors.log 2>&1")

  4. 看看你犯了什么错误,然后处理它们。

最新更新