Клавиши AltGr не работают с Ubuntu в VirtualBox

8

Я только что установил VirtualBox (из Oracle) в Windows 7 и создал виртуальную машину с последней версией Ubuntu.

Здесь, в Firefox, я могу использовать левую клавишу Ctrl, тогда как правая не имеет никакого эффекта. Однако я не могу использовать клавишу AltGr (также известную как Right Alt) для создания, например, фигурных скобок, таких как {} (я вставил это с помощью Ctrl V).

В окне терминала я могу переключить «Метод ввода» на «Multipress», а затем я могу использовать AltGr, чтобы напечатать, например, {}, как я создал эти символы для этой публикации. Тем не менее, с «Multipress» клавиши Ctrl, кажется, не имеют никакого эффекта. Так, например, чтобы набрать Ctrl DI, нужно щелкнуть правой кнопкой мыши и переключить «Метод ввода» на «Система (IBus (интеллектуальная шина ввода))». Тогда AltGr не работает.

Я попытался указать ключ композиции в раскладке клавиатуры системных настроек.

При этом ни Ctrl, ни AltGr не работали.

Вот что сообщает xmodmap:

[~]
$ xmodmap -pke | grep -i control
код клавиши 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
[~]
$ _

Как я могу это исправить?

Дополнительная информация: клавиатура представляет собой стандартную клавиатуру ПК, Logitech K120, с норвежской раскладкой.

Кроме того, я сначала попытался задать этот вопрос на сайте Superuser, но не получил ответа через 2 дня ...

Альф П. Штайнбах
источник
Я получил ключ AltGr, работающий в Ubuntu. Мне просто нужно было знать, что я должен создать файл с именем «.Xmodmap» и добавить следующую строку: «keycode 113 = Mode_switch Multi_key». Который я нашел в отчете об ошибке по аналогичной проблеме, на bugs.launchpad.net/ubuntu/+source/xkeyboard-config/+bug/349487/…
Альф П. Штайнбах

Ответы:

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(note capital X) в вашем домашнем каталоге:

keycode 66 = Mode_switch

Кроме того, вам может потребоваться назначить модификатор Mode_switch, но если все, что происходит, это несоответствие кода ключа, то оно уже будет. См. Установка ключа для испанского письма для получения дополнительной информации.

Запустите, xmodmap ~/.Xmodmapчтобы проверить ваш файл. Во многих системах, включая Ubuntu 10.04, этот файл автоматически загружается в среду Gnome по умолчанию. В других дистрибутивах или средах вам может понадобиться явно указать, что вы хотите запустить xmodmap ~/.Xmodmapпри входе в систему.

Жиль "ТАК - перестань быть злым"
источник
Это интересный ответ, использующий код ключа 66. В своем комментарии перед тем, как вы опубликовали этот ответ, я отметил, что код ключа 113, который я только что скопировал и вставил из сети, работает для этой строки. Теперь, когда я запускаю, xevкак вы предлагаете, он сообщает код ключа 108. И все же строка, которую я скопировал из сети, работает. Так что, очевидно, это не имеет никакого отношения к коду ключа. Я изменил его на 66, просто для удовольствия, и перезагрузил: он все еще работает. Итак, я пришел к выводу, что это не что-то технически точное, а скорее всего Heisenbug в Ubuntu.
Альф П. Штайнбах
@ AlfP.Steinbach Код ключа определяется вашим оборудованием (или аппаратным эмулятором в виртуальной машине) и вашей версией ядра и X-сервера. На клавиатурах ПК правая клавиша Alt имеет код 113 в старых дистрибутивах Linux и 108 в более новых (мой пример с 66 - потому что у меня AltGr на клавише Caps Lock). Некоторое время назад я спросил, как автоматически определить, есть ли у меня «старая» или «новая» система в отношении назначения кодов клавиш.
Жиль "ТАК - перестань быть злым"
Ну, это все еще работает после переименования этого файла и перезагрузки. И терминал все еще запоминает старую историю команд после перезагрузки. С такими глупыми, устойчивыми динамическими состояниями, как это, я думаю, должно быть довольно трудно выискивать ошибки: они не могут быть надежно воспроизведены в такой мешающей среде. Я думаю, что еще одним свидетельством этого является то, как ошибка в AltGr исчезла: закрыто как решено, повторно открыто, закрыто как разрешено, повторно открыто и так далее, и так далее. Поэтому я думаю, что хорошей идеей (TM) было бы сурово наказать человека, который ввел это постоянство настроек и состояния. :-)
Альф П. Штайнбах