Как я могу исправить отсутствующие нажатия клавиш при запуске Ubuntu в качестве виртуальной машины под OSX?

Среда

  • OSX 10.7.4
  • Середина 2010 г. iMac
  • VirtualBox 4.1.18
  • Ubuntu Precise Pangolin (все обновления применены)

Issue

Я создал свежий VirtualBox vm и установил Precise из стандартного рабочего стола ISO. В ходе установки я выбрал карту ключей «English UK (Mac International)». Кажется, что все клавиши излучают правильный символ, однако для некоторых клавиш символ не будет зарегистрирован, пока я не нажму клавишу дважды .

Например, при первом нажатии клавиши `в строке терминала не появляется символ. Однако второй раз работает.

Это также происходит для некоторых других комбинаций клавиш и смены - то есть ~ (shift + `) также затрагивается.

Дополнительная информация

  • Похоже, это не проблема виртуальной машины. Я установил Precise под VMware Fusion, и, похоже, возникает та же самая проблема.
  • Это не связано со скоростью, которую я печатаю. Я могу нажать клавишу, подождать пару секунд, затем нажать ее снова, и я получу то же поведение.
  • При переключении на альтернативную раскладку клавиатуры (английская расширенная WinKeys) проблема сохраняется для символа обратной черты (вы должны нажать клавишу § на клавиатуре). Нажатие клавиши `немедленно выдает символ (). Другими словами, проблема, кажется, связана с определенными символами, а не с аппаратными кодами, испускаемыми конкретными ключами.

xev output

Первое нажатие клавиши:

KeyPress event, serial 30, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3935772, (317,33), root:(320,141),
    state 0x0, keycode 94 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: True

KeyRelease event, serial 33, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3935884, (317,33), root:(320,141),
    state 0x0, keycode 94 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XFilterEvent returns: False

Второе нажатие клавиши:

KeyPress event, serial 33, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3939630, (317,33), root:(320,141),
    state 0x0, keycode 94 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: True

KeyPress event, serial 33, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3939630, (317,33), root:(320,141),
    state 0x0, keycode 0 (keysym 0x60, grave), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 1 bytes: (60) "`"
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3939777, (317,33), root:(320,141),
    state 0x0, keycode 94 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XFilterEvent returns: False

Третье нажатие клавиши:

KeyPress event, serial 33, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3956078, (317,33), root:(320,141),
    state 0x0, keycode 94 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: True

KeyRelease event, serial 33, synthetic NO, window 0x4a00001,
    root 0x138, subw 0x0, time 3956214, (317,33), root:(320,141),
    state 0x0, keycode 94 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XFilterEvent returns: False

Дополнительное «серьезное» нажатие клавиши, похоже, генерируется только при каждом другом нажатии физической клавиши.

1
задан 31 January 2014 в 22:07

2 ответа

Кажется, что карта клавиатуры неверна для этих клавиш. Самое простое решение - сделать следующие исправления с помощью xmodmap:

$ xmodmap -e 'keycode 94 = grave asciitilde'
$ xmodmap -e 'keycode 48 = apostrophe quotedbl'

Чтобы применить эти изменения при входе в систему, вы можете создать файл с именем .Xmodmap в вашем домашнем каталоге со следующим содержимым:

[ 111]
0
ответ дан 31 January 2014 в 22:07

Просто добавление к ответу Джонсток. Добавьте

keycode 94 = grave asciitilde
keycode 48 = apostrophe quotedbl

в файл .Xmodmap в домашней директории и запустите

xmodmap .Xmodmap

Для меня это помогло, но каждый раз, когда я перезагружался, он возвращался к старому. Мне пришлось положить xmodmap .Xmodmap в мой файл .bashrc, чтобы он прикрепился.

0
ответ дан 31 January 2014 в 22:07

Другие вопросы по тегам:

Похожие вопросы: