如何绑定 shift+alt 来运行脚本

如何绑定 shift+alt 来运行脚本

所以我的目标只是绑定 alt+shift 来在 xmonad 中运行脚本。我的 mod 键是 super(win)(mod4Mask)。我该怎么做?这是我现在尝试的方法:

这是我的 xmonad.sh 现在的样子(只是路径改变了)

import XMonad
import XMonad.Config.Desktop
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.
import XMonad.Util.EZConfig
import System.IO

main = xmonad $ desktopConfig
  { terminal = "urxvt"
  , modMask  = mod4Mask
  } `additionalKeys`
  [ ((mod1Mask, shiftMask), spawn "/home/my-login/some-folder/my-script.sh"
  ]

这是我得到的错误: 输出

答案1

该错误的重要部分似乎是(为了便于阅读,添加了额外的空格):

Expected type: KeySym

Actual type: KeyMask

In the expression: shiftMask

因此,显然您需要使用 KeySym 而不是 KeyMask 作为组合键的第二部分。这可能是因为“修饰键”(Ctrl、Alt、Shift、Cmd/Win/Super)是“掩码”(位掩码),当按下其他键时,它们会更改内部生成的代码,但它们不会相互更改。

如果你可以使用 2 个修饰键 + 1 个常规键来实现此效果,你可以按照以下方式“或”将修饰键组合在一起这个答案并选择尚未映射到该 3 键组合的 KeySym。

如果丢失或移动其中一个修饰键是可以的,那么回答下面那个来自使用 xmodmap 将左 Ctrl 键重新映射到左 Super/Win 键的人。因此,如果值得的话,您可以将 KeyMask 重新映射到 KeySym。

答案2

是啊,我找到了:

, ((shiftMask, xK_Alt_L), spawn "$HOME/.local/bin/dmscripts/dm-lang"  ) -- Language Switching

您可以使用xmodmapxev找出键符,然后您需要做的就是将其附加xK_到它上面。

现在我只需要弄清楚我是否也可以将它与 EZConfig 的 ExtraKeysP 一起使用

相关内容