Configurando teclas de atalho do teclado com os mesmos scancodes e diferentes keysyms

0

Eu tenho um teclado Bluetooth Samsung bkb10 . É o teclado para andoind principalmente, por isso não tem alt, super (winkey), f1-f12, menu, mas tem muitas teclas de atalho (a maioria delas funciona bem no linux). Mas algumas teclas de atalho não estão funcionando, e eu quero fazer com que elas se comportem como alt, f1-f12, menu. Também quero funções hotkeys também, então eu gostaria de fazer smth como botão Fn para hotkeys. Bem, isso é tudo que eu quero. Pelo menos eu preciso de alt, super, menu e f1-f12, não poderia imaginar que é tão difícil sem eles no linux. Então, eu estava tentando usar keytouch - sem sorte. É capaz de ler keysym corretas, mas keytouch-editor salva apenas parte delas em seus arquivos de teclado, e parece que as chaves necessárias são as mesmas para keytouch também. De qualquer forma eu não vi que funciona para mim, mesmo com muitas teclas agindo da mesma maneira. No momento chaves que eu quero fazer como Alt, super, menu, não funcionam de jeito nenhum, possuem mesmo scancodes, mas possuem diferentes keysyms:

xev mostra a mesma coisa para algumas teclas de atalho, que não funcionam:

KeyRelease event, serial 39, synthetic NO, window 0x5400001,
root 0xf5, subw 0x0, time 12647284, (224,225), root:(224,253),
state 0x0, keycode 248 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

Mas kacpimon pode reconhecer seus keyyms e são chaves diferentes:

Input Layer:  Type: 4  Code: 4  Value: 787205
Input Layer:  Type: 1  Code: 240  Value: 0
Input Layer:  Sync
Input Layer:  Type: 4  Code: 4  Value: 787207
Input Layer:  Type: 1  Code: 240  Value: 1
Input Layer:  Sync

O mesmo que getscancodes :

787205 (0xc0305)
787205 (0xc0305)
787207 (0xc0307)
787207 (0xc0307)

sudo evtest /dev/input/evt14 output para as mesmas chaves:

Event: time 1457614378.384393, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0305
Event: time 1457614378.384393, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
Event: time 1457614378.384393, -------------- SYN_REPORT ------------
Event: time 1457614378.384420, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0305
Event: time 1457614378.384420, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
Event: time 1457614378.384420, -------------- SYN_REPORT ------------
Event: time 1457614378.681877, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0307
Event: time 1457614378.681877, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
Event: time 1457614378.681877, -------------- SYN_REPORT ------------
Event: time 1457614378.775600, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0307
Event: time 1457614378.775600, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
Event: time 1457614378.775600, -------------- SYN_REPORT ------------

Como você pode ver, os scancodes são iguais mesmo em kacpimon , mas os keyyms são diferentes em kacpimon , getscancode , evtest para cada chave, mas não para xev e outras ferramentas. Também acho que getscancodes na verdade está mostrando keysyms, mas não scancodes para eles. Eu sei que o xmodmap é antigo e eu não deveria usar, e que deveria xkb. Eu era capaz de encontrar alguma resposta que poderia me ajudar, se eu não estava noob - Layouts de teclado personalizados: adicionando um caractere para o qual nenhum keysym é definido Além disso, esse link pode ser útil, mas está desatualizado, por isso não posso verificar- Não use showkey ou xev - use udev e evtest em vez disso.

Mas eu não posso fazer isso com xkb ou xmodmap, eu não consigo entender como. Por favor me ajude, trabalhando nisso por 3 dias inteiros e ainda não encontrei nenhuma solução ... Muito obrigada!

    
por user2882440 10.03.2016 / 12:50

1 resposta

0

Ok, a solução foi encontrada aqui- Faça o controle deslizante de zoom do Microsoft Natural Ergonomic Keyboard 4000 e 7000 para cima e para baixo, em 14.04 (Trusty) Leia o último comentário. Acontece que o evtest é realmente poderoso e pode mostrar também scancodes. Leia /lib/udev/hwdb.d/60-keyboard.hwdb muito cuidado, eu tive que lê-lo 100 vezes para fazê-lo funcionar. Se você precisar transformar seu hex a 4 dígitos hexadecimais eu usei isso - link

    
por user2882440 13.03.2016 / 15:51