使用 `setxkbmap` 设置 kb 布局时出错

使用 `setxkbmap` 设置 kb 布局时出错

我已经从 ubuntu 12.04 vm 设置了 x11 转发到我的 (windows) 笔记本电脑。它可以工作,但是当我输入转发的应用程序时,它使用 qwerty 布局,我希望它使用 colemak。

由于我没有在虚拟机中安装 GUI,所以我想要一个命令行解决方案。

我尝试过setxkbmap -v us -variant colemak,但是出现“加载新键盘描述错误”的情况:

$ setxkbmap -v us -variant colemak
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Warning! Multiple definitions of layout variant
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   xfree86+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+us(colemak)
geometry:   pc(pc101)
Error loading new keyboard description

我也尝试过setxkbmap -v us -variant dvorak,似乎确实有效。

哪里出了问题?Colemak 是随 ubuntu 一起提供的,我可以在 中看到它的一个部分/usr/share/X11/xkb/symbols/us,我猜想布局就是在这里定义的。

答案1

我的错误是假设重要的键盘布局是 vm (/usr/share/X11/xkb/symbols/) 中的键盘布局。

实际上,使用 x-forwarding 时,我的 x 服务器 xming(C:\Program Files (x86)\Xming\xkb\symbols)中定义的键盘布局很重要,而默认情况下 xming 不包含 colemak。我只需下载 colemak 定义并将其放入 xming 符号文件夹中即可;然后它就可以按预期工作。

答案2

很奇怪,我可以colemak用你的命令正确切换到:

#> setxkbmap -v us -variant colemak
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Warning! Multiple definitions of layout variant
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+us(colemak)+inet(evdev)
geometry:   pc(pc105)

但如果我尝试保留我的意大利语变体则无法做到:

#> setxkbmap -v it -variant colemak
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Warning! Multiple definitions of layout variant
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+it(colemak)+inet(evdev)
geometry:   pc(pc105)
Error loading new keyboard description

我建议你本文,但鉴于您没有安装任何桌面管理器,它将毫无用处。

然而,动机应该是这样的:

#> grep colemak /usr/share/X11/xkb/symbols/*
/usr/share/X11/xkb/symbols/gb:xkb_symbols "colemak" {
/usr/share/X11/xkb/symbols/gb:    include "us(colemak)"
/usr/share/X11/xkb/symbols/lv:// http://colemak.com/
/usr/share/X11/xkb/symbols/lv:xkb_symbols "colemak" {
/usr/share/X11/xkb/symbols/lv:xkb_symbols "apostrophecolemak" {
/usr/share/X11/xkb/symbols/lv:  include "lv(colemak)"
/usr/share/X11/xkb/symbols/ph:// http://colemak.com
/usr/share/X11/xkb/symbols/ph:xkb_symbols "colemak" {
/usr/share/X11/xkb/symbols/ph:xkb_symbols "colemak-bay" {
/usr/share/X11/xkb/symbols/us:// 2006-01-01 Shai Coleman, http://colemak.com/ . Public domain.
/usr/share/X11/xkb/symbols/us:xkb_symbols "colemak" {

我只能在 、 和语言中colemak选择布局。您应该会遇到类似的问题。gblvphus

在故事的最后,您可以做两件事:选择colemak一种接近us您已安装的语言(例如ukgb),或者尝试通过命令行安装colemak对语言的支持us(我真的不知道如何,抱歉)。

相关内容