【发布时间】:2017-12-15 12:31:36
【问题描述】:
我最近决定从 i3wm 切换到 xmonad。我找到了this configuration 并决定尝试一下。该配置开箱即用,没有任何问题。
问题是,我无法切换桌面工作区,因为我不使用英文键盘布局。我在 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)]]
但是,这不起作用。所以我尝试绑定至少一个键(根据this answer),看看它是否至少可以工作(上面的代码被注释掉了):
, ((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。
你能告诉我我做错了什么吗?谢谢。
编辑:
Here 是最小的配置文件。
当我在另一台机器上试试运气时,我也取得了一些进展。与
[((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)]]
我收到了不同的错误消息(对于所有 caron 键):
不在范围内:â\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 */
【问题讨论】:
-
你确定你的文件中确实有
.|.(即"\46\124\46"),而不是一些奇怪的非ASCII相似的东西吗?另外,请确保您的所有文件都是 UTF-8 编码的。 (Always!) -
是的,该行的文件中恰好有字节序列 \46\124\46。也应该在其他任何地方。而且它已经是 UTF-8 编码的。
-
那么我真的很想知道这个奇怪的
â\200\230,â\200\231是如何潜入的。这些可能是终端转义码以某种方式被破坏为明文?你用的是什么终端? — 通常,发布完整的配置文件当然也很有用,即minimal reproducible example。 -
我同意@leftaroundabout。继续删除不相关的行,直到文件尽可能小。然后将文件连同在文件(或类似文件)上运行
xxd的输出一起发布。 -
我直接去了绝对最小的一个,仍然没有运气。我用指向那个最小配置的要点链接更新了问题。 @leftaroundabout 我在一台机器上使用 gnome-terminal,在另一台机器上使用 xfce4-terminal。我尝试使用 vim 和 VS Code 编辑配置文件。