Como mapear o botão PowerOff como End no XWindows?

2

Eu tenho este infeliz botão PowerOff no meu laptop situado no lugar da tecla End:

Eujá tem um jeito de desabilitar o manipulador PowerOff acionado pelo SO (Ubuntu 14.04 no meu caso). Agora quero fazer algo útil com isso, como usá-lo como uma chave end .

As teclas pressionadas para o PowerOff são manipuladas pelo dispositivo Botão Power , ao contrário de todas as outras chaves (incluindo End ), que são manipuladas pelo usual AT Translated Set 2 keyboard :

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ USB2.0 UVC HD Webcam                      id=10   [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                          id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]

Acho que isso tornaria o mapeamento um pouco mais difícil, mas acredito que ainda seja factível.

Além disso, os pressionamentos de tecla para o PowerOff são apenas parcialmente visíveis para o sistema X Window, ou seja, sem os eventos KeyRelease e KeyPress :

$xev
...
KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
...

O que eu acho que me impede de atribuí-los usando o próprio gerenciador de atalhos de teclado do Ubuntu:

A chave é atribuída bem na interface do usuário. O problema é que a ação nunca é disparada quando é pressionada. E eu não quero executar um comando - eu quero que o sistema interprete esta chave como outra tecla end .

E isso é basicamente o que eu tenho.

    
por Adam Ryczkowski 03.02.2015 / 10:49

0 respostas