1 votos

Botones de auriculares y adaptadores USB-C

Debo un que no tiene una toma de auriculares de 3,5 mm. En su lugar, utiliza mis auriculares con un adaptador de USB-C a 3,5 mm. Si bien los altavoces y el micrófono funcionan, los botones no. Tienen asignadas funciones incorrectas. Play/Pause funciona, pero Vol+ disminuye el volumen y Vol- selecciona cosas en la pantalla.

Quiero cambiar este comportamiento. Usando la aplicación "KeyEvent Display", he descubierto que

  • Vol+ desencadena "número de código de linux" 114
  • Vol- desencadena "número de código de linux" 259
  • Play/Pause desencadena "número de código de linux" 226

Utilizando el Documentación de Android Me he dado cuenta de que los botones están gestionados por /system/usr/keylayout/Generic.kl . Pude obtener el comportamiento esperado cambiando las siguientes líneas:

key 114 VOLUME_UP
key 226 HEADSETHOOK
key 259 VOLUME_DOWN

Sin embargo, ¡esto interfería con la función de otros botones de mi teléfono!

Por eso quiero crear un archivo de configuración específico para el dispositivo. Para ello, necesito el nombre del dispositivo o las identificaciones del proveedor y del producto. (Como se explica en la documentación de Android.) Sin embargo, no sé cómo conseguirlos. La aplicación "USB Device Info" no muestra ningún dispositivo conectado. Esta es la salida abreviada 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

Salida completa: aquí .

Salida relevante de "Under the Hood": pastebin.com/kDeBNS0H

Hice un archivo que contiene el código anterior y probé dándole los siguientes nombres de archivo (reiniciando cada vez): Vendor_0000_Product_0003.kl , Vendor_0000_Product_0000.kl , Vendor_0001_Product_0001.kl pero nada funcionó.

¿Puede alguien ayudarme?

0 votos

¿El convertidor es activo (digital) o pasivo (analógico)? Si no lo sabes, el precio puede ser una pista.

0 votos

Creo que es pasivo.

0voto

FatTony Puntos 41

Utilizando el keytest descubrí que el ID de dispositivo de los auriculares (2) era diferente del ID de dispositivo de los botones de volumen normales (7 y 3). Ahora, sólo tenía que averiguar el nombre del dispositivo correspondiente al ID del dispositivo. Esto lo hice utilizando un emulador 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"

Según la documentación todos los caracteres que no sean 0-9 , a-z , A-Z y - se sustituyen por _ . Así, he creado un nuevo archivo: /system/usr/keylayout/msm8976-skun-snd-card_Button_Jack.kl con el siguiente contenido:

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

Tras un reinicio, obtuve el comportamiento esperado.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X