AltGr密钥不适用于VirtualBox中的Ubuntu


8

我刚刚在Windows 7中安装了VirtualBox(来自Oracle),并使用最新的Ubuntu创建了一个虚拟机。

在Firefox中,我可以使用左Ctrl键,而右Ctrl键没有任何作用。但是,我不能使用AltGr键(也称为Right Alt)来产生例如{}的花括号(我通过Ctrl V粘贴)。

在终端窗口中,我可以将“输入法”切换为“ Multipress”,然后可以使用AltGr键入例如{},这就是我为此次发布产生这些字符的方式。但是,使用“ Multipress”时,Ctrl键似乎没有任何作用。因此,例如要键入Ctrl DI,必须右键单击并将“输入法”切换到“系统(IBus(智能输入总线))”。然后AltGr不起作用。

我尝试在系统设置键盘布局中指定组合键。

这样,Ctrl和AltGr都不起作用。

这是xmodmap报告的内容:

[〜]
$ xmodmap -pke | grep -i控制
键码37 = Control_L NoSymbol Control_L
键码105 = Control_R NoSymbol Control_R
[〜]
$ xmodmap -pke | grep -i alt
键码64 = Alt_L Meta_L Alt_L Meta_L
键码204 = NoSymbol Alt_L NoSymbol Alt_L
[〜]
$ _

我怎样才能解决这个问题?

其他信息:键盘是标准PC键盘,Logitech K120,采用挪威布局。

另外,我首先尝试在超级用户站点上问这个问题但是两天后没有任何回应。


我在Ubuntu上使用了AltGr密钥。我只知道我应该创建一个名为“ .Xmodmap”的文件并添加以下行:“ keycode 113 = Mode_switch Multi_key”。我在bugs.launchpad.net/ubuntu/+source/xkeyboard-config/+bug/349487/…
Alf P. Steinbach,

Answers:


5

运行命令xev。在xev窗口中,AltGr按键。您会看到类似

KeyPress event, serial 29, synthetic NO, window 0x6400001,
    root 0x105, subw 0x0, time 966635535, (243,-207), root:(1891,26),
    state 0x0, keycode 66 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

注意键码;由于键不能满足您的要求,因此您会看到其他的内容(可能是Alt_R),而不是Mode_switch。您想将此键码分配给Mode_switch,这是X11的AltGr名称。将以下命令放在主目录中的文件中.Xmodmap(请注意capital X):

keycode 66 = Mode_switch

此外,您可能需要为分配一个修饰符Mode_switch,但是如果所有更改都是由于键码差异引起的,那么就已经有一个。有关更多信息,请参见设置西班牙字母的密钥

运行xmodmap ~/.Xmodmap以测试您的文件。在许多系统上,包括Ubuntu 10.04,该文件会在默认的Gnome环境中自动加载。在其他发行版或环境上,您可能需要xmodmap ~/.Xmodmap在登录时明确表示要运行。


这是一个有趣的答案,使用键码66。在发布此答案之前的评论中,我注意到刚从网上复制并粘贴的键码113适用于该行。现在,当我xev按照您的建议运行时,它将报告键代码108。但是,我从网络复制的行仍然有效。因此,它显然与键码无关。我将其更改为66,只是为了好玩,然后重新启动:它仍然有效。因此,我得出结论,从技术上讲这根本不是准确的东西,但是显然是Ubuntu中的Heisenbug。
Alf P. Steinbach

@ AlfP.Steinbach密钥代码由您的硬件(或VM中的硬件仿真器)以及您的内核和X服务器版本确定。在PC键盘上,右侧的Alt键在较旧的Linux发行版上具有键码113,在较新的Linux发行版上具有108(我的示例是66,因为我在Caps Lock键上具有AltGr)。不久前,我问如何自动确定有关键码分配的系统是“旧”系统还是“新”系统。
吉尔斯(Gilles)“所以,别再邪恶了”,

好了,重命名该文件并重新启动后它仍然可以工作。并且终端在重新启动后仍会记住旧的命令历史记录。对于像这样愚蠢的持久性动态状态,我认为要找到错误必须相当困难:在这种干扰环境中无法可靠地复制它们。我认为,这进一步证明了关于AltGr的错误是如何溜溜的:已解决已关闭,已重新打开,已解决已关闭,已重新打开等等。因此,我认为严厉惩罚引入环境和状态持久性的人将是一个好主意。:-)
Alf P. Steinbach
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.