我最近决定从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 */
答案 0 :(得分:2)
在你的最小配置中,
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")
]
}
(或类似的。)
对于您的其他问题,xK_ecaron
可提供Graphics.X11.ExtraTypes.XorgDefault
。您可以查看所有可用键盘的列表(以及要导入的模块以获取它们)here,或者您可以搜索特定的一个on Hoogle。