【问题标题】:Trouble binding print screen in XMonad在 XMonad 中绑定打印屏幕时遇到问题
【发布时间】:2014-08-21 18:49:41
【问题描述】:

我正在尝试在 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,我找到了打印屏幕的keysym:

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 的别名)。

如何将打印屏幕键绑定到某个东西? 当然我可以使用另一个键来完成这项工作,但是不使用打印屏幕截屏感觉很傻。

【问题讨论】:

    标签: xorg xmonad


    【解决方案1】:

    尝试将 $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. 查看您遇到的错误并处理它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多