Teclas CTRL e ALT mapeadas para Shift por algum motivo

3

Eu instalei o Ubuntu 14.04 e estou adorando. No entanto, ao jogar um jogo chamado Garry's Mod, notei que minhas teclas CTRL e ALT no meu teclado com fio estavam sendo detectadas como Shift . Eu olhei para o gráfico do layout do teclado e confirmei isso. Eu também notei que o meu Windows, ou a tecla Super , a Right CTRL e a direita ALT estão sendo mapeadas para Left Shift .

Eles estão todos trabalhando perfeitamente, eles estão apenas sendo detectados errado. Eu selecionei o layout dos Estados Unidos, que é o que o meu teclado deve ser e está no Windows. Alguém pode ajudar? Meu teclado está sendo detectado como um teclado SONiX USB (a marca de teclado atual é o Avazz).

  • minha saída xev -event keyboard é essa para cada uma delas:

    KeyRelease event, serial 28, synthetic NO, window 0x4a00001,
        root 0xdc, subw 0x0, time 2446369, (730,547), root:(795,599),
        state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    

    A única coisa que muda é a hora.

  • O comando sudo evtest mostra todas as teclas modificadoras como

    type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e1v type 1 (EV_KEY), code 42 (KEY_LEFTSHIFT), value 0
    
  • para lsusb , o driver que ele está usando é o usbhid driver.

    lsusb mostra algo confuso; a mesma porta que meu teclado está sendo mostrada em outros comandos está aparecendo em lsusb como o driver do meu mouse sem fio, Logitech, Inc. Unifying Receiver . Este pode ser o problema, mas provavelmente estou simplesmente enganado em qual porta ele está. Devido a isso, não tenho certeza do que é o driver. Vou postar todos eles, embora isso possa ser irritante. Eu tenho um teclado separado conectado ao lado do meu principal para usar a CTRL , Super , ou ALT , então não fique confuso com o Logitech Classic Keyboard Driver.

    Bus 001 Device 009: ID 0bda:8172 Realtek Semiconductor Corp. RTL8191SU 802.11n WLAN Adapter
    Bus 001 Device 008: ID 046d:c315 Logitech, Inc. Classic Keyboard 200
    Bus 001 Device 007: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
    Bus 001 Device 006: ID 0480:0200 Toshiba America Info. Systems, Inc. 
    Bus 001 Device 004: ID 0c45:6340 Microdia 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
    Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
    Bus 002 Device 002: ID 0c45:7603 Microdia 
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    

    Para lsusb -t , o driver usado é usbhid .

  • for i in $(ls /sys/module/usbhid/parameters/); do echo -ne "$i\t"; more /sys/module/usbhid/parameters/$i; done é:

    ignoreled   0
    mousepoll   0
    quirks  (null),(null),(null),(null)
    
  • Eu não acho que você precise disso desde que eu disse que é usbhid , mas aqui está mesmo assim.

    for i in $(ls /sys/module/hid/parameters/); do echo -ne "$i\t"; more /sys/module/hid/parameters/$i; done da saída.

    depuração 0 ignore_special_drivers 0

  • A saída de

    modinfo usbhid é:

    filename:       /lib/modules/3.18.3-031803-generic/kernel/drivers/hid/usbhid/usbhid.ko
    license:        GPL
    description:    USB HID core driver
    author:         Jiri Kosina
    author:         Vojtech Pavlik
    author:         Andreas Gal
    srcversion:     A395FA22EA2729BAC1557C9
    alias:          usb:v*p*d*dc*dsc*dp*ic03isc*ip*in*
    depends:        hid
    intree:         Y
    vermagic:       3.18.3-031803-generic SMP mod_unload modversions 
    signer:         Magrathea: Glacier signing key
    sig_key:        29:DB:FD:FC:5A:CC:82:3C:C5:2C:39:4C:C1:C7:4C:01:C3:BE:BF:78
    sig_hashalgo:   sha512
    parm:           mousepoll:Polling interval of mice (uint)
    parm:           ignoreled:Autosuspend with active leds (uint)
    parm:           quirks:Add/modify USB HID quirks by specifying  quirks=vendorID:productID:quirks where vendorID, productID, and quirks are all in 0x-prefixed hex (array of charp)
    
  • cat /sys/kernel/debug/usb/usbmon/2u > /tmp/usb.mon.out está me dizendo que não foi encontrado, embora eu tenha alterado 2 para meu ID de barramento. O que estou fazendo de errado aqui? Esclareça se você pode, por favor, meio confuso lá. Eu tentei colocar 2 , 02 e 002 . A saída de sudo ls /sys/kernel/debug/usb/usbmon/ é 0s 0u 1s 1t 1u 2s 2t 2u

por Vardogor 11.01.2015 / 08:23

2 respostas

6

Meu teclado é um Perixx P1800. É como a mesma identificação de lsusb (0c45: 7603 Microdia) Aparentemente, ele usa a mesma placa também como o teclado azio L70.

O driver Linux para o teclado foi feito à mão e está disponível em este endereço .

No Debian, funciona muito bem para mim (depois de update-initramfs ), exceto por uma única tecla perto de Enter (* no teclado do Azerty, o * do teclado está funcionando bem).

    
por Grégory 28.03.2015 / 21:42
1

Eu também tive esse problema. Eu aguentei por meses, mas depois tentei encontrar o caminho para resolvê-lo.

Aqui está o motorista; embora meu teclado não seja da marca, funcionou perfeitamente. Eu espero que isso resolva o seu problema também. O Driver e as instruções estão AQUI:

link

PD: Eu não escrevi o driver, apenas o encontrei.

-Editado após as sugestões de um #GrammarNazy xD

    
por Alberto 30.07.2015 / 23:12