Por que o AltGr é remapeado do código de acesso 108 para o código de acesso 92 (LVL3) e onde?

2

Ao criar meu próprio arquivo de configuração xkb, consegui tornar AltGr disfuncional. A linha de fundo é: Removendo estas três linhas (uma é na verdade um bloco inteiro) ...

    xkb_keymap {
        xkb_keycodes "whatever" {
            [...]
>>>>        <LVL3> = 92;
            [...]
        };
        [...]
        xkb_symbols "anything" {
            [...]
>>>>        key <LVL3> { [ ISO_Level3_Shift ] };
>>>>        modifier_map Mod5 { <LVL3> };

... criou o problema e adicioná-lo novamente fez com que o problema desaparecesse, agora AltGr funciona como esperado novamente. Então, o problema é: meu teclado não tem uma chave que produza o código de chave 92 (essa é a razão para eu remover essas linhas em primeiro lugar). Agora, eu descobri rodando xev com dois teclados conectados (um com layout de teclado padrão do sistema e, portanto, trabalhando AltGr e outro com meu arquivo xkb quebrado) e brincando com as duas chaves AltGr , até repentinamente notou esta linha:

    KeyPress event, serial 53, synthetic NO, window 0x3000001,
        root 0x4b1, subw 0x0, time 2986451693, (63,136), root:(716,408),
        state 0x10, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
>>>>    XKeysymToKeycode returns keycode: 92
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False

Esse foi o motivo para eu tentar adicionar novamente essas linhas.

Agora, a pergunta: por que essa chave é remapeada para o código-chave 92 e onde isso acontece? (Como eu não tinha mais nenhuma definição para essa chave no meu arquivo, meu arquivo era inocente;)

    
por Bodo Thiesen 20.07.2017 / 11:36

1 resposta

0

Hoje eu tropecei nisso também, e acho que a razão para isso é que ISO_Level3_Shift está na linha de código-chave para o código-chave 92 na saída do xmodmap:

xmodmap -pk | grep -w 92
     92         0xfe03 (ISO_Level3_Shift)       0x0000 (NoSymbol)       0xfe03 (ISO_Level3_Shift)

Ou para ser mais preciso: mapeia de volta para o código-chave primeiro na lista:

$ xmodmap -pk | grep -i ISO_Level3_Shift
     92         0xfe03 (ISO_Level3_Shift)       0x0000 (NoSymbol)       0xfe03 (ISO_Level3_Shift)
    108         0xfe03 (ISO_Level3_Shift)       0x0000 (NoSymbol)       0xfe03 (ISO_Level3_Shift)
    134         0xfe03 (ISO_Level3_Shift)       0x0000 (NoSymbol)       0xfe03 (ISO_Level3_Shift)
    
por 27.07.2017 / 21:47

Tags