Skip to content
Juan Gonzalez-Gomez edited this page Nov 28, 2018 · 76 revisions

Ingeniería inversa de un teclado de PC

Notas sobre la ingeniería inversa realizada sobre un teclado DELL de 105 teclas

Contenido

Introducción

  • Objetivo: Entender cómo funciona un teclado al más bajo nivel, para poder realizar un controlador de teclado desde cero, con la FPGA. Por el mero hecho de aprender

  • Esta NO es una documentación exhaustiva. Simplemente se muestran algunos de los resultados conseguidos, y pasos intermedios, pero NO es una guía ni un tutorial de cómo realizarlo (se hará en el futuro)

Teclado DELL de 105 teclas, en Español

Este es el teclado que se ha utilizado para las pruebas. Es un teclado USB de 105 teclas, de la marca DELL

Se quitan los tornillos de la parte inferior (tiene 14 en total) y haciendo presión se quita la parte superior del teclado. En la parte inferior es donde está todo lo que necesitamos. En ella, en la esquina superior derecha está atornillada la electrónica. La desatornillamos y la sacamos. Cortamos un trozo de la parte superior para dejar hueco para sacar los cables hacia el exterior. Nos queda así:

La parte importante es el conector del PCB flexible, que es el que contiene las conexiones eléctricas con las teclas. En esta imagen se muestra ampliado. En total tiene 29 contactos. El de la izquierda es GND, y NO lo usaremos. Los 8 siguientes se corresponden con las Filas y los 18 restantes con las columnas

Se trata de un teclado matricial, cuyas 105 teclas están organizadas dentro de un matriz de 8 x 18. Mirando las conexiones de los dos PCBs flexibles que tiene, y usando un polímetro para medir la continuidad de las señales, se ha obtenido la disposición de las teclas en la matriz:

Fila C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18
1 Insert F8 F2 ª F1 Inicio ¿ 6 5 ? Ctrl Supr Re Pag F9
2 Impr pant F12 9 3 1 2 Fin 8 7 4 0 Av Pag F11 F10
3 Alt 0 (Num) F4 ESC < Up F6 H G { . (num) F5
4 5 (num) F7 F3 TAB Bloq May * Y T [ Shift 6 (num) 4(num) DEL
5 2 (num) L D A S Intro (Num) K J F Ñ Win 3(num) 1 (num)
6 Bloq Despl 8 (num) O E Q W + (num) I U R P Menu 9 (num) 7 (num)
7 / (num) : C Z X Pausa ; M V } Shift Ctrl Win * (num) Bloq num Enter
8 Alt Gr Right Left N B _ - (num) down Space

Principio de funcionamiento

Cada tecla es un simple contacto que se cierra al presionar sobre él. Está implementado mediante 4 capas

Empezando por la parte inferior, las capas son:

  • Capa 1: PCB flexible, transparente. Contiene el contacto inferior (Determina el número de columna)
  • Capa 2: Acetato. Capa no conductora, que tiene agujeros en las zonas de los contactos
  • Capa 3: PCB Flexible, transparente. Contiene el contacto inferior (Número de fila)
  • Capa 4: Silicona flexible. Tiene partes planas y partes salientes en las zonas de los contactos. Estos tetones flexibles están huecos en el interior, y se deforman al pulsarse. Luego recuperan la forma original
  • Capa 5: Es el chásis del teclado, de plástico rígido
  • Capa 6: Teclas móviles, que pueden subir y bajar. Estan apoyadas sobre la silicona flexible

En este dibujo se muestra la sección cuando la tecla no está pulsada, y lo que ocurre cuándo se pulsa: El tetón de silicona se deforma y ejerce presión sobre el contacto superior del PCB flexible empujándolo a traváes del agujero del acetato hasta tocar con el contacto inferior

Circuito eléctrico

El principio de funcionamiento es el mismo que el de los pulsadores típicos: contacto de dos partes conductoras al apretar la tecla. Por tanto, se modela eléctricamente como un pulsador que tiene dos cables. Uno es el de la fila y el otro de la columna

Las teclas están colocadas en forma de matriz de 8 filas y 18 columnas

Conexión al exterior

Para conectar los pines de los PCBs flexibles al exterior se ha utilizado el propio PCB que tenía originalmente al que se le han quitado todos los componentes discretos que tenía. Sobre las conexiones que había se han colocado tiras metálicas, que van pegadas sobre las originales:

Por la cara superior se ha pegado una tira de 28 pines macho acodados, y se han hecho las conexiones a las tiras metálicas anteriores. Con esto sacamos todas las filas y columnas hacia el exterior del teclado. Ahora ya podemos usar esos pines para conectar cables hembra y llevar las señales a la protoboard o directamente a la Icezum Alhambra

Y así es como queda el frontal del teclado

Pruebas de lectura con la FPGA

Las pruebas las haremos a diferentes nivel. En el nivel más bajo tenemos que las teclas son simples pulsadores

Prueba 1: Teclas como pulsadores

Haremos un circuito de pruebas para conectar dos teclas a la FPGA, como si fuesen pulsadores externos corrientes. Los conectaremos a las entradas D13 y D12, como se indica en el Tutorial 12: Interruptores y pulsadores externos

Cada tecla tiene dos cables, uno de la fila y otro de la columna (pero da igual la polaridad). Un cable lo conectamos a una resistencia de Pull-down menor de 2K y a la entrada de la FPGA. El otro cable lo conectamos a 5v

El montaje se muestra a continuación. Se ha utilizado una protoboard para las conexiones.Las teclas usasas son el F11 (fila 2, columna 17) y la tecla DEL (fila 4, columna 18)

El circuito en la FPGA usa dos pulsadores, uno para mover el LED hacia arriba y el otro hacia abajo. Esto se hace bien con los pulsadores SW1 y SW2, o bien con las teclas, que están conectadas en paralelo a los pulsadores anteriores. Además, se emite un pitido cuando se aprieta alguno de los pulsadores

Y en este vídeo se puede ver el sistema en funcionamiento. Primero se usan los pulsadores internos de la Icezum Alhambra, y luego se repite lo mismo pero con las teclas F11 y DEL del teclado tuneado

Click to see the youtube video

TODO: Pruebas lectura de la matriz de teclas

Teclado multimedia DELL

Fila C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
1 xxx Alt Gr - (num) Cursor <-- xxx Cursor --> Cursor Dw xxx B
2 xxx xxx * (num) Pausa Win R / (num) Bloq num C Shift R V
3 xxx Alt . (num) Cursor up xxxx 0 (num) xxx F4 G
4 xxx Bloq Desp 9 (num) + (num) xxx 8 (num) 7 (num) E R
5 xxx xxx 6 (num) xxx xxx 5 (num) 4 (num) F3 Shift L T
6 xxx Impr pant Av Pag Fin xxx F12 (num) F11 3 4
7 xxx xxx 3 (num) Intro (num) xxx 2 (num) 1 (num) D F
8 xxx xxx Re Pag Inicio xxx Insert Supr F2 5
Fila C11 C12 C13 C14 C15 C16 C17 C18 C19 C20
1 N xxx _ Space xxxx Teclado (esp)
2 M ; : } Enter X Z xxx Ctrl R Pantalla (esp)
3 H F6 xxx { F5 < ESC xxx
4 U I O P xxx W Q Menu
5 Y * F7 [ DEL Bloq May Tab
6 7 8 9 0 F10 2 1
7 J K L Ñ xxx S A Win L
8 6 ¿ F8 ? F9 F1 ª Ctrl L

Enlaces