1 votes

Boutons de casque et adaptateurs USB-C

Je dois un appareil qui n'a pas de prise casque de 3,5 mm. À la place, il utilise mes écouteurs avec un adaptateur USB-C vers 3,5 mm. Si les haut-parleurs et le micro fonctionnent, ce n'est pas le cas des boutons. Les fonctions qui leur sont attribuées sont incorrectes. Play/Pause fonctionne, mais Vol+ diminue le volume et Vol- sélectionne des éléments à l'écran.

Je veux changer ce comportement. En utilisant l'application "KeyEvent Display", j'ai compris que

  • Vol+ déclenche "numéro de code de la clé linux" 114
  • Vol- déclencheurs "numéro de code de la clé linux" 259
  • Play/Pause déclenche "numéro de code clé linux" 226

L'utilisation de la Documentation Android J'ai compris que les boutons sont tous gérés par la fonction /system/usr/keylayout/Generic.kl . J'ai pu obtenir le comportement attendu en modifiant les lignes suivantes :

key 114 VOLUME_UP
key 226 HEADSETHOOK
key 259 VOLUME_DOWN

Cependant, cela interfère avec la fonction d'autres boutons de mon téléphone !

C'est pourquoi je souhaite créer un fichier de configuration spécifique à l'appareil. Pour cela, j'ai besoin soit du nom de l'appareil, soit des identifiants du vendeur et du produit. (Comme expliqué dans la documentation Android.) Cependant, je ne sais pas comment les obtenir. L'application "USB Device Info" ne montre aucun appareil connecté. Voici le résultat abrégé de cat /proc/bus/input/devices :

I: Bus=0000 Vendor=0000 Product=0003 Version=2061
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
I: Bus=0000 Vendor=0000 Product=0000 Version=0000

Pleine puissance : ici .

Résultats pertinents de "Under the Hood" : pastebin.com/kDeBNS0H

J'ai créé un fichier contenant le code ci-dessus et j'ai essayé de lui donner les noms de fichiers suivants (en redémarrant à chaque fois) : Vendor_0000_Product_0003.kl , Vendor_0000_Product_0000.kl , Vendor_0001_Product_0001.kl mais rien n'y fait.

Quelqu'un peut-il m'aider ?

0voto

MrTomRod Points 171

L'utilisation de la test clé Dans l'application, j'ai découvert que l'identifiant de l'écouteur (2) était différent de celui des boutons de volume (7 et 3). Il ne me restait plus qu'à trouver le nom de l'appareil correspondant à l'ID de l'appareil. C'est ce que j'ai fait en utilisant un émulateur de terminal :

$ su
$ getevent
add device 1: /dev/input/event7
name: "msm8976-skun-snd-card Headset Jack"
add device 2: /dev/input/event6
name: "msm8976-skun-snd-card Button Jack"
add device 3: /dev/input/event4
name: "qpnp_pon"
add device 4: /dev/input/event3
name: "qwerty"
could not get driver version for /dev/input/mouse1, Not a typewriter
add device 5: /dev/input/event2
name: "hbtp_vm"
add device 6: /dev/input/event1
name: "input_mt_wrapper"
could not get driver version for /dev/input/mice, Not a typewriter
add device 7: /dev/input/event5
name: "gpio-keys"
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 8: /dev/input/event0
name: "synaptics_dsx_s2"

Selon la la documentation tous les caractères autres que 0-9 , a-z , A-Z y - sont remplacés par _ . J'ai donc créé un nouveau fichier : /system/usr/keylayout/msm8976-skun-snd-card_Button_Jack.kl avec le contenu suivant :

# Configuration file for LeEco Le 2 headphone buttons
key 114 VOLUME_UP
key 226 HEADSETHOOK
key 259 VOLUME_DOWN

Après un redémarrage, j'ai obtenu le comportement attendu !

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