Como posso corrigir o pressionamento de teclas ausentes ao executar o Ubuntu como uma VM no OSX?

1

Ambiente

  • OSX 10.7.4
  • Meados de 2010 iMac
  • VirtualBox 4.1.18
  • Ubuntu Precise Pangolin (todas as atualizações aplicadas)

Problema

Eu criei um novo VirtualBox vm e instalei Precise a partir do ISO da área de trabalho padrão. Como parte da instalação, selecionei o mapa-chave 'English UK (Mac International)'. Todas as teclas parecem estar emitindo o caractere correto, no entanto, para algumas teclas um caractere não será registrado até que eu tenha pressionado a tecla duas vezes .

Por exemplo, a primeira vez que eu pressiono a tecla 'nenhum caractere aparece no prompt do terminal. No entanto, a segunda vez funciona.

Isso também acontece com algumas outras teclas e combinações de deslocamento - ou seja, ~ (shift + ') também é afetado.

Mais informações

  • Isso não parece ser um problema de VM. Eu instalei o Precise no VMware Fusion e o mesmo problema parece ocorrer.
  • Não está relacionado à velocidade que estou digitando. Eu posso pressionar a tecla, esperar alguns segundos, depois pressioná-la novamente e obter o mesmo comportamento.
  • Alternando para um layout de teclado alternativo (WinKeys estendidos do inglês do Reino Unido), o problema persiste para o caractere de backtick (você deve pressionar a tecla § no teclado). Pressionar a tecla 'emite um caractere () imediatamente. Em outras palavras, o problema parece estar relacionado a caracteres específicos, em vez dos códigos de hardware emitidos por chaves específicas.

saída xev

Primeiro pressionamento de tecla:

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

Segunda pressão:

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

Terceiro pressionamento de tecla:

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

A tecla adicional "grave" só parece ser emitida em todas as outras teclas físicas.

    
por johnstok 12.08.2012 / 13:25

2 respostas

1

Parece que o mapa do teclado está incorreto para essas chaves. A solução mais simples é fazer as seguintes correções via xmodmap:

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

Para que essas modificações sejam aplicadas no login, você pode criar um arquivo chamado .Xmodmap em seu diretório pessoal com o seguinte conteúdo:

keycode 94 = grave asciitilde
keycode 48 = apostrophe quotedbl
    
por johnstok 12.08.2012 / 22:33
0

Apenas um adendo à resposta de Johnstok. Adicionar

keycode 94 = grave asciitilde
keycode 48 = apostrophe quotedbl

para arquivar .Xmodmap no diretório inicial e executar

xmodmap .Xmodmap

Para mim, isso funcionou, mas voltou ao modo antigo toda vez que eu reiniciava. Eu tive que colocar xmodmap .Xmodmap no meu arquivo .bashrc para que ele ficasse.

    
por Jacob Stevenson 02.03.2014 / 14:09