Paso 1: antecedentes
No dude en saltar esta descripción del fondo.
El teclado inalámbrico de PalmOne envía sus datos a través de un LED de infrarrojos en un tallo, con IrDA. Mientras que uno podría utilizar un detector IR para descifrar los datos, hay una manera más fácil. Si usted semidesnuda el teclado, tres cobre tiras están expuestos. El medio es tierra y el inferior es una línea de transmisión. Poniendo a un osciloscopio verifica que la señal en la línea de transmisión se codifica en 9600 8 N 1, con el alto nivel alrededor de 1.56V y con irDA formar del pulso: 1 alta y pulsos positivos 3/16 del tiempo de bit.
Lamentablemente, todo esto significa no sólo enchufe esto en un simple módulo de Bluetooth (al menos no sin hacer el firmware personalizado para que), como hice en mi proyecto de Mindflex. Afortunadamente, atxmega en el Brainlink tiene un modo de irDA para la UART. Es fácil de añadir un poco de código para el firmware de Brainlink permitiendo un código "J1" para cambiar al modo de IrDA. Esperaba la 1.56V de alto nivel para que no sea suficiente para el atxmega, pero me sorprendió gratamente cuando conecté el tiras de cobre a GND y UART reciban la Brainlink y ver los resultados en Realterm: me metía a secuencias de bytes de seis agradable desde el teclado.
Resultó que la secuencia de seis bytes sólo es empaquetado para un código de byte único scan (con el bit alto lanzamiento de la marca). En concreto, la secuencia es FF C0 xx yy zz C1, donde xx es el código de exploración, yy es xx xor'ed con FFy zz es xx xor'ed con 67. (En efecto, el código de exploración se transmite tres veces: dos veces y una vez claro codificado. Supongo que es porque irDA es propensa a la corrupción, y para que puedas usar mayoría-descifrar para conseguir el octeto.)
Después de eso, la dificultad de hardware sólo fue encontrar un lugar para la soldadura de un conector del teclado. Y que no era difícil.
En el lado del software, mientras que tal vez podría tal vez cambiar el módulo Bluetooth RN-42 en el Brainlink a modo HID, que tenía bricking potencial, puesto que si el módulo no cambia al SPP, yo sería capaz de hablar con el Brainlink sobre su Protocolo de Bluetooth.
Lo más fácil era sólo tomar la aplicación de teclado de BluezIME de código abierto que permite varios gamepads Bluetooth funcionar como controladores de Android y añade un modo para las secuencias de la palma un teclado inalámbrico seis bytes. La aplicación resultante es el libre P1 Teclado en Google Play ahora (código fuente en github).