[英]How to rebind workspace switching to accented keys in xmonad?
我最近决定从i3wm切换到xmonad。 我找到了此配置,并决定尝试一下。 该配置可以直接使用,没有任何问题。
问题是,我无法切换桌面工作区,因为我不使用英文键盘布局。 我在F键行下加了重音符号而不是数字。
因此,我搜索了这些密钥的xK_名称,并将其放入配置文件中,如下所示:
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_plus, xK_ecaron, xK_scaron, xK_ccaron, xK_rcaron, xK_zcaron, xK_yacute, xK_aacute, xK_iacute]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
但是,这没有用。 因此,我尝试绑定至少一个键(根据此答案 ),以查看它是否至少有效(上面的代码已注释掉):
, ((0 .|. modMask, xK_plus), windows $ W.greedyView "1")
, ((shiftMask .|. modMask, xK_plus), windows $ W.shift "1")
但事实并非如此。 在这两种情况下,错误消息均为:
xmonad.hs:292:9:输入â\\ 200 \\ 230,â\\ 200 \\ 231解析错误
引用此行: , ((0 .|. modMask, xK_plus), windows $ W.greedyView "1")
,特别是|
如果我没有记错的话。
当我尝试
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
但是,当我尝试时,它没有任何问题
, ((0 .|. modMask, xK_1), windows $ W.greedyView "1")
, ((shiftMask .|. modMask, xK_1), windows $ W.shift "1")
抛出相同的错误。
我正在使用捷克QWERTY布局和xmonad 0.12。
你能告诉我我在做什么错吗? 谢谢。
编辑:
这是最小的配置文件。
在另一台机器上尝试运气时,我也取得了一些进步。 用
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_plus, xK_ecaron, xK_scaron, xK_ccaron, xK_rcaron, xK_zcaron, xK_yacute, xK_aacute, xK_iacute]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
我得到了不同的错误消息,上面说(对于所有纸箱钥匙):
不在范围内:â\\ 200 \\230xK_ecaronâ\\ 200 \\ 231
也许您的意思是â\\ 200 \\230xK_macronâ\\ 200 \\ 231(从XMonad导入)
由于建议的解决方案是完全不同的键,因此我简单地删除了所有xK_〜caron并进行了令人惊讶的编译。 现在我可以切换工作区,但切换到与第二工作区ý
关键是7日在该行是有点儿奇怪。
现在我不明白为什么不接受caron密钥,因为xK_ecaron是完全有效的密钥:
~ $ cat /usr/include/X11/keysymdef.h |grep ecaron
#define XK_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */
在您的最小配置中,
import XMonad
import qualified XMonad.StackSet as W
--bind xK_plus to workspace 1
, ((0 .|. modMask, xK_plus), windows $ W.greedyView "1")
, ((shiftMask .|. modMask, xK_plus), windows $ W.shift "1")
main = xmonad def
{ terminal = "gnome-terminal"
}
...您的文件中间没有任何键绑定。 这些必须出现在绑定列表中。 逗号是列表元素的分隔符。 所以:
main = xmonad def
{ terminal = "gnome-terminal"
, keys = \conf@(XConfig { modMask = modMask }) -> keys def conf `mappend` M.fromList
[ ((0 .|. modMask, xK_plus), windows $ W.greedyView "1")
, ((shiftMask .|. modMask, xK_plus), windows $ W.shift "1")
]
}
(或类似)。
对于您的其他问题,可以从Graphics.X11.ExtraTypes.XorgDefault
获得xK_ecaron
。 您可以在此处查看所有可用的keyyms的列表(以及要导入的模块以获取它们),也可以在Hoogle上搜索特定的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.