Teclado do Gamer com teclas personalizadas

3

Muitos entusiastas de jogos e computadores usam teclados especiais. Um recurso comum nesses teclados é o uso de muitas chaves personalizadas destinadas a comandos especiais específicos de jogos e softwares.

O software para edição e criação de comandos que essas teclas personalizadas acionam é quase sempre no Windows

EX: Tt Esports challenger software Challnger Pro Gaming

Ao executar o software usando o Wine, não é possível localizar o teclado ou outros dispositivos e, portanto, as teclas não podem ser programadas.

Para a maioria dos teclados, as chaves personalizadas são padronizadas como ctrl+c e ctrl+v . Portanto, usar o System Settings para definir essas chaves sobrescreveria sempre que um usuário tentasse usar esses comandos.

Quais são as possíveis soluções para este problema? Existe uma maneira de permitir que o Wine detecte hardware ou existe outro método para definir chaves personalizadas?

Encontrar uma solução seria muito útil para a comunidade Linux, já que as chaves personalizadas poderiam ser usadas ao desenvolver ou usar um software especializado.

Meu teclado é um teclado HID, usando hid-generic .

Para as chaves não configuradas por padrão, nada é registrado em evtest , mas para os três valores predefinidos que eles retornam

Event: time 1488397338.016750, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1488397338.016750, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0

xev apenas registra as teclas predefinidas para ctrl + c e 2 teclas, as teclas não configuradas por padrão não são registradas

Eu tenho um sistema Windows, onde eu poderia farejar o protocolo USB. Mas como eu faria isso?

    
por Jason Ivey 01.03.2017 / 13:36

1 resposta

2

Isso provavelmente levará várias etapas / iterações, e o formato de perguntas e respostas não é uma boa opção. Por favor, atualize sua pergunta com mais informações, se você está preso, e ping me em um comentário para esta resposta. Vou editar minha resposta então.

A partir da descrição, parece que o mapeamento de teclas especiais para os principais eventos é feito no teclado, portanto, a programação deve acontecer no teclado e não em um driver.

Existem vários sniffer USB de código aberto para o Windows, por exemplo, usbpcap ou o usbsnoop mais antigo, o Google provavelmente encontrará mais e tutoriais sobre como usá-los.

Em princípio, você precisará gravar a comunicação enquanto programa diferentes teclas especiais com sequências de teclas diferentes com o software de programação. Então olhe os pacotes, compare-os e veja quais bytes mudam para diferentes teclas especiais ou seqüências programadas. Adivinhe o protocolo, reproduza-o em um programa auto-escrito usando libusb no Linux.

Como o seu teclado é HID e o HID é altamente padronizado, temos um pouco de ajuda. Familiarize-se com a documentação da HID (ou pelo menos procure as partes que você precisa). Cada dispositivo HID vem com um descritor, e o descritor descreve toda a interação possível com o dispositivo de acordo com o padrão HID. Se é assim que o teclado é programado, e se não houver muitos campos "específicos do fornecedor", podemos adivinhar o protocolo diretamente.

Você pode ler o descritor de duas maneiras.

(1) Se o seu kernel tem debugfs habilitado, como root

mount -t debugfs none /sys/kernel/debug
cat /sys/kernel/debug/hid/device_id/rdesc

onde device_id é o id do seu teclado. Isso mostrará o descritor bruto como hexadecimais e como o kernel o analisa. Se a análise do kernel não for suficiente, tente hidrd para converter o descritor bruto.

(2) Emita HIDIOCGRDESCSIZE e HIDIOCGRDESC ioctls no dispositivo hidraw (procure em dmesg para encontrá-lo no seu teclado). O samples/hidraw/hid-example.c na fonte do kernel Linux explica como fazer isso, ou usa uma ferramenta pronta como usbhid-dump .

O ideal é que você veja algumas das características ou saída que estão relacionadas à programação. Talvez você ainda precise espionar as ferramentas de software se muitos dos campos descritos não estiverem claros ou marcados como "específicos do fornecedor".

    
por 02.03.2017 / 08:54