0 votes

Comment affecter l'axe du Joypad à un bouton ?

Comment faire correspondre l'axe d'un joypad (en particulier le commutateur HAT/DPad) à un bouton avec un fichier de disposition des touches dans le logiciel de gestion de l'espace. /system/usr/keylayout/ ? J'ai actuellement cette ligne dans le fichier approprié : axis 0x10 split 0x7f BUTTON_L1 BUTTON_R1 .

Je vais vous expliquer la ligne de conduite point par point. Le premier jeton fait référence au type d'entrée. axis signifie que je lie un axe.

Le deuxième jeton est l'ID de l'axe. L'axe que je veux remapper est 0x10 .

En Page wiki du développeur Android en ce qui concerne la mention "key-layout", vous pouvez diviser un axe d'entrée en deux sorties avec split donc je l'utilise. La rupture se situe au niveau de la valeur qui suit immédiatement split dans ce cas 0x7f .

Les valeurs d'entrée inférieures au seuil de séparation sont considérées comme le premier jeton après le jeton du seuil de séparation. Ici, c'est BUTTON_L1 .

Les valeurs d'entrée supérieures au seuil de séparation sont représentées par le deuxième jeton après le jeton du seuil de séparation. Ici, c'est BUTTON_R1 .

Cependant, lorsque j'utilise la ligne mentionnée ci-dessus, l'axe ne correspond plus à rien. Êtes-vous en mesure d'associer les axes du dispositif aux boutons Android en premier lieu ? Si oui, quelle est la syntaxe appropriée ?

1voto

nondebug Points 156

Desde el Axes divisés documentation :

Un axe divisé fait correspondre un code d'axe Linux à deux noms de code d'axe Android, de sorte que les valeurs inférieures ou supérieures à un seuil sont réparties sur deux axes différents lors de la mise en correspondance. Ce mappage est utile lorsqu'un seul axe physique signalé par le dispositif code deux axes logiques différents et mutuellement exclusifs.

Dans l'exemple, ils ont divisé un axe combiné gaz/frein en plusieurs axes distincts. GAS y BRAKE axes :

axis 0x01 split 0x7f GAS BRAKE

Indice de l'axe 0x01 est le code d'événement d'entrée de Linux ABS_X . Nous prenons le ABS_X avec une plage logique de 0x00 < x < 0xFF et la diviser de manière à ce que x > 0x7F est mis en correspondance avec AXIS_GAS et des valeurs inférieures à 0x7F sont mis en correspondance avec AXIS_BRAKE .

Dans le vôtre :

axis 0x10 split 0x7f BUTTON_L1 BUTTON_R1

Indice de l'axe 0x10 est spécial, c'est le code d'événement d'entrée de Linux ABS_HAT0X qui est un axe synthétique généré par le sous-système d'entrée de Linux pour faciliter le traitement des entrées de commutateur de chapeau. En interne, les gamepads HID ne représentent pas les D-pads comme des boutons ou comme des axes X et Y séparés. Ils sont généralement représentés comme un seul axe rotatif "hat switch". Linux convertit la valeur de rotation en ABS_HAT0X y ABS_HAT0Y axes normalisés à -1 < x < 1. Ils sont considérés comme des axes 0x10 et axe 0x11 dans le mappage de la disposition des clés.

Donc, le premier problème est que votre seuil est faux. Pour diviser le ABS_HAT0X vous devez utiliser un seuil de 0.

Le deuxième problème est que vous essayez de faire correspondre les axes divisés aux événements des boutons, ce qui n'est pas pris en charge. Vous pouvez uniquement diviser un axe en plusieurs axes distincts.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X