|
||
|
#21
|
||||
|
||||
|
Si haceis cambios del driver y quereis probarlos, pasadme el archivo a ver que puedo hacer con él. Recompilar un nuevo kernel con nuevo driver debería ser fácil supongo.
|
|
|
|
#22
|
||||
|
||||
|
skelton estare mas que encantado de ayudar en lo que pueda con mis limitados conocimientos ^_^
Te paso el archivo tan pronto cambie algunos detalles para que funcione como debe (en teoria :S) De todos modos estoy bastante seguro de que faltan cosas en ese archivo, debe haber mas por ahi http://pastebin.com/nwgUYKMs Espero que funcione cruzar los dedos Eso si, necesito los nombres de los botones para poner los adecuados :S Última edición por Durgeoble Día 05/03/13 a las 18:14:14. |
|
#23
|
||||
|
||||
|
Es mi primera aplicacion para Android asi que la subi a donde primero pude. |
|
#24
|
||||
|
||||
|
|
|
#25
|
||||
|
||||
|
|
|
#26
|
||||
|
||||
|
aptoide tiene mas cantidad, pero mas fakes. Blackmarket tiene menos cantidad y merkamarket no lo he usado.
|
|
#27
|
||||
|
||||
|
merkamarket va de lujo, salvo cuando se colapsa y no va.
blackmarket y aptoide hay que tener cuidado ya que hay muchos fakes |
|
#28
|
||||
|
||||
|
skelton estare mas que encantado de ayudar en lo que pueda con mis limitados conocimientos ^_^
Te paso el archivo tan pronto cambie algunos detalles para que funcione como debe (en teoria :S) De todos modos estoy bastante seguro de que faltan cosas en ese archivo, debe haber mas por ahi http://pastebin.com/nwgUYKMs Espero que funcione cruzar los dedos Eso si, necesito los nombres de los botones para poner los adecuados :S ![]() Yo estoy intentando compilar una imagen para ver si puedo montarme un entorno de desarrollo. |
|
#29
|
||||
|
||||
|
Explico como se envian parametros al kernel para configurar el mapeo.
El driver lee el contenido de este fichero (que es virtual) /sys/devices/platform/mx-adcjs.0/key En este momento hay que escribir una secuencia de 21 numeros que el driver guarda en este array. //enable, circle_x, circle_y, r, ax, ay, bx, by, xx, xy, yx, yy, lx, ly, rx, ry, l2x, l2y, r2x, r2y, view static long key_param[21]; Lo carga a traves de esta funcion: static ssize_t key_write(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { sscanf(buf, "%ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld %ld", \ &key_param[0], &key_param[1], &key_param[2], &key_param[3], \ &key_param[4], &key_param[5], &key_param[6], &key_param[7], \ &key_param[8], &key_param[9], &key_param[10], &key_param[11], \ &key_param[12], &key_param[13], &key_param[14], &key_param[15], \ &key_param[16], &key_param[17], &key_param[18], &key_param[19], &key_param[20]); if (key_param[20] == 0) key_param[20] = X3; if (key_param[20] == X1) key_param[20] = VX1; else if (key_param[20] == X2) key_param[20] = VX2; else if (key_param[20] == X3) key_param[20] = VX3; else if (key_param[20] == X4) key_param[20] = VX4; else if (key_param[20] == X5) key_param[20] = VX5; return count; } Por esto es que una de los cambios es alargar el array (o usar otra estructura mas legible) para anadir select.x, select.y, start.x, start.y, vol_up.x, vol_up.y, vol_down.x, vol_down.y, digital_mode, analog_0.mode, analog_0.x, analog_0.y, analog_0.radio, analog_0.x1, analog_0.y1, analog_0.x2, analog_0.y2, analog_1.mode, analog_1.x, analog_1.y, analog_1.radio, analog_1.x1, analog_1.y1, analog_1.x2, analog_1.y2, y todas las coordenadas para split digital_up.x, digital_up.y, digital_left.x, digital_left.y etc... |
|
#30
|
||||
|
||||
|
cruceta 4, sticks derecho e izquierdo 4, botones ABXY 4, LRL2R2 4, SELECT START VOL+ VOL- 4 eso hacen 20 valores, creo que no me falta ninguno asi que el array esta completo pero mal definido ya que realmente no son necesarios mas botones a no ser que se quiera que por ejemplo los sticks analogicos reporten 4 estados "digitales" cada uno lo que nos daria 8 "botones nuevos"
Cuento los ejes XY de cada stick como un unico valor que va de 0 a 1024 |
|
#31
|
||||
|
||||
|
cruceta 4, sticks derecho e izquierdo 4, botones ABXY 4, LRL2R2 4, SELECT START VOL+ VOL- 4 eso hacen 20 valores, creo que no me falta ninguno asi que el array esta completo pero mal definido ya que realmente no son necesarios mas botones a no ser que se quiera que por ejemplo los sticks analogicos reporten 4 estados "digitales" cada uno lo que nos daria 8 "botones nuevos"
Cuento los ejes XY de cada stick como un unico valor que va de 0 a 1024 ![]() Cada cruceta en modo digital o analogico combinado necesita centro (X Y) mas radio eso son 3 valores por cruceta. Una mejora si son analogicas seria anadir el radio de la zona muerta (otro valor mas) Cada cruceta en modo digital separado son 4 botones como has dicho y eso hace 8 valores (4 pares X Y) En ese modo las diagonales serian dobles pulsaciones. Cada boton son dos valores (X Y) Como hay 12 botones eso solo ya hace un total de 24. Ademas hacen falta valores para indicar al driver en que modo funcionan las crucetas asi que 3 valores mas, uno por cruceta. Y que no se me olvide!! El modo raton se define por un area rectangular mas un origen de coordenadas y si resetea o no puede iren el modo de funcionamiento asi que 3 puntos que hacen 6 valores. Asi que un super driver con todas las funcionalidades del mundo mundial me da un total de 3x3+ 8x3+ 12x2+ 3x1+ 6x2 -------- 72 o 74 con las zonas muertas si he contado bien. Lo mejor sera, al menos, definir constantes para los indices del array por que usar el numero es totalmente ilegible. |
|
#32
|
||||
|
||||
|
Con lo fácil que hubiese sido usar el mando como USB como es en la Archos, en vez de mezcla de extraña de teclado y ratón....
|
|
#33
|
||||
|
||||
|
skelton, por favor cocinanos una rom como dios manda.
|
|
#34
|
||||
|
||||
|
Skelton anímate y saca una ROM para que vean de lo que eres capaz
|
|
#35
|
||||
|
||||
|
Es necesario solventar esto a nivel del kernel para evitar lags y problemas de seguridad. Una aplicacion que se mostara encima de otra y fuera capaz de transmitir los eventos de teclado y pantalla a la aplicacion de debajo es un agujero de seguridad muy serio. Sigo intentando compilar el kernel.
|
|
#36
|
||||
|
||||
|
Creo que no te sigo. Te explico como lo veo yo que a lo mejor estoy equivocado.
Cada cruceta en modo digital o analogico combinado necesita centro (X Y) mas radio eso son 3 valores por cruceta. Una mejora si son analogicas seria anadir el radio de la zona muerta (otro valor mas) Cada cruceta en modo digital separado son 4 botones como has dicho y eso hace 8 valores (4 pares X Y) En ese modo las diagonales serian dobles pulsaciones. Cada boton son dos valores (X Y) Como hay 12 botones eso solo ya hace un total de 24. Ademas hacen falta valores para indicar al driver en que modo funcionan las crucetas asi que 3 valores mas, uno por cruceta. Y que no se me olvide!! El modo raton se define por un area rectangular mas un origen de coordenadas y si resetea o no puede iren el modo de funcionamiento asi que 3 puntos que hacen 6 valores. Asi que un super driver con todas las funcionalidades del mundo mundial me da un total de 3x3+ 8x3+ 12x2+ 3x1+ 6x2 -------- 72 o 74 con las zonas muertas si he contado bien. Lo mejor sera, al menos, definir constantes para los indices del array por que usar el numero es totalmente ilegible. ![]() cruceta + dpad = de dos a cuatro valores botones = doce valores stick derecho de dos a cinco valores si los sticks usan 2 valores entonces tenemos un total de 16 valores yo creo que los stick usa el izquierdo 3 valores (X,Y + dead zone) y el derecho 5 (X,Y, dead zone, area y centro) que suman los 20 que actualmente tenemos, el valor que sobra (el 21) puede ser el boton de ON/OFF Siendo asi me salen las cuentas, solo hay que descubrir que hace realmente cada boton y como lo recibe el software, el hardware esta claro que no cambia solo hay que cambiarle el mapeo para que funcione como debe |
|
#37
|
||||
|
||||
|
Estamos hablando de cosas diferentes! Yo lo de lo que te estoy hablando es de la informacion que necesita adc_js.c para poder convertir las pulsaciones del boton en pulsaciones en pantalla. Por ejemplo: Pulsa A --> Click en pantalla en coordenadas (X,Y) Luego 2 valores en el array de configuracion. Por cierto que el algoritmo en el caso de las crucetas analogicas creo que esta un poco mal pero es bien facil de arreglar. Me parece que cuando rotas una cruceta en la pantalla se dibuja una forma cuadrada y no circular equidistante al centro de coordenadas de la cruceta. Vamos que no normalizan el producto escalar. Ya te digo que es algo que podemos arreglar despues. |
|
#38
|
||||
|
||||
|
| Los siguientes 4 usuarios han agradecido a skelton su comentario: | ||
|
#39
|
||||
|
||||
|
Ya he puesto algo precido en dingoonity.
Estoy totalmente bloqueado. No soy capaz de compilar el kernel para poder arreglar el driver para el mapeo. La verdad es que necesito ayuda de verdad con eso. |
|
|
|
#40
|
||||
|
||||
|
Editr: dupe
|
![]() |
Estás aquí
|
||||||
|
||||||