所以我的目标只是绑定 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
您可以使用xmodmap
或xev
找出键符,然后您需要做的就是将其附加xK_
到它上面。
现在我只需要弄清楚我是否也可以将它与 EZConfig 的 ExtraKeysP 一起使用