As teclas AltGr não funcionam com o Ubuntu no VirtualBox

8

Acabei de instalar o VirtualBox (da Oracle) no Windows 7 e criei uma máquina virtual com o Ubuntu mais recente.

Aqui no Firefox eu posso usar a tecla Ctrl esquerda, enquanto a direita não tem nenhum efeito. No entanto, não posso usar a tecla AltGr (também conhecida como Alt Direita) para produzir, por exemplo, chaves como {} (colei isso via Ctrl V).

Em uma janela do terminal, posso mudar o "Método de entrada" para "Multipressão" e, em seguida, usar o AltGr para digitar, por exemplo, {}, que é como produzi esses caracteres para esta postagem. No entanto, com "Multipress", as teclas Ctrl parecem não ter efeito algum. Portanto, para, por exemplo, digitar Ctrl DI, clique com o botão direito do mouse e alterne o "Método de entrada" para "Sistema (IBus (Intelligent Input Bus))". Então AltGr não funciona.

Tentei especificar a tecla de composição no layout do teclado das configurações do sistema.

Com isso, nem Ctrl nem AltGr funcionaram.

Aqui está o que o xmodmap relata:

[~]
$ xmodmap -pke | controle grep -i
keycode 37 = Control_L NoSymbol Control_L
keycode 105 = Control_R NoSymbol Control_R
[~]
$ xmodmap -pke | grep -i alt
keycode 64 = Alt_L Meta_L Alt_L Meta_L
keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
[~]
$ _

Como posso consertar isso?

Informações adicionais: o teclado é um teclado padrão para PC, um Logitech K120, com layout norueguês.

Além disso, tentei fazer essa pergunta no site do Superusuário, mas não obtive resposta após dois dias ...

Alf P. Steinbach
fonte
Eu tenho a tecla AltGr trabalhando no Ubuntu. Eu só precisava saber que eu deveria criar um arquivo chamado ".Xmodmap" e adicionar esta linha: "keycode 113 = Mode_switch Multi_key". Que eu achei em um relatório de bug sobre um problema semelhante, em bugs.launchpad.net/ubuntu/+source/xkeyboard-config/+bug/349487/...
Alf P. Steinbach

Respostas:

5

Execute o comando xev. Na janela xev, pressione a AltGrtecla Você verá algo como

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

Anote o código da chave; como a chave não está fazendo o que você deseja, você verá outra coisa (possivelmente Alt_R) em vez de Mode_switch. Você deseja atribuir esse código de chave Mode_switch, que é o nome do X11 para AltGr. Coloque o seguinte comando em um arquivo chamado .Xmodmap(note capital X) em seu diretório pessoal:

keycode 66 = Mode_switch

Além disso, pode ser necessário atribuir um modificador a Mode_switch, mas se tudo o que está acontecendo for uma discrepância de código de chave, já haverá um. Consulte Definir a tecla da letra espanhola em espanhol para obter mais informações.

Execute xmodmap ~/.Xmodmappara testar seu arquivo. Em muitos sistemas, incluindo o Ubuntu 10.04, esse arquivo é carregado automaticamente no ambiente Gnome padrão. Em outras distribuições ou ambientes, pode ser necessário indicar explicitamente que você deseja executar xmodmap ~/.Xmodmapquando efetuar login.

Gilles 'SO- parar de ser mau'
fonte
É uma resposta interessante, usando o código-chave 66. No meu comentário antes de você postar essa resposta, observei que o código-chave 113, que eu apenas copiei e colei da rede, funciona para essa linha. Agora, quando corro xevcomo você sugere, ele informa o código-chave 108. No entanto, a linha que copiei da rede funciona. Então, aparentemente, não tem nada a ver com o código-chave. Mudei para 66, apenas por diversão, e reiniciei: ainda funciona. Então concluo que não é algo tecnicamente preciso, mas evidentemente um Heisenbug no Ubuntu.
Alf P. Steinbach
@ AlfP.Steinbach O código-chave é determinado pelo seu hardware (ou emulador de hardware, em uma VM) e pela sua versão do kernel e do servidor X. Nos teclados de PC, a tecla Alt direita possui o código 113 nas distribuições Linux mais antigas e 108 nas mais recentes (meu exemplo com 66 é porque eu tenho AltGr na tecla Caps Lock). Perguntei há um tempo atrás como determinar automaticamente se tenho um sistema “antigo” ou “novo” em relação às atribuições de códigos de teclas.
Gilles 'SO- stop be evil'
Bem, ainda funciona depois de renomear esse arquivo e reiniciar. E o terminal ainda se lembra do antigo histórico de comandos após a reinicialização. Com estados dinâmicos persistentes e tolos como esse, acho que deve ser bastante difícil caçar bugs: eles não podem ser reproduzidos de maneira confiável em um ambiente tão interferente. Penso que mais uma prova disso é como o bug do AltGr foi exagerado: fechado como resolvido, reaberto, fechado como resolvido, reaberto, e assim por diante. Então, acho que seria uma boa idéia punir severamente a pessoa que introduziu essa persistência de configurações e estados. :-)
Alf P. Steinbach