Converting a TI Silent keyboard (Micro Switch SD switches)

Slom

17 Feb 2018, 22:43

overview.JPG
overview.JPG (854.65 KiB) Viewed 2829 times
Hardware

You will need a multimeter to trace the hall sensors of the switches to the connector of the keyboard. The switches will have 4 pins. The outer pins are +5V and GND, the inner pins are used to drive the matrix.

To differentiate between +5V and GND, have a look at the switches underneath the shift and control keys: two of the pins on these switches should be directly connected.
shift (47) and control (32) keys with directly connected input
shift (47) and control (32) keys with directly connected input
shift_control.JPG (693.09 KiB) Viewed 2829 times
The outer of these two pins is the GND pin. The pin next to GND is the input pin for the switch, and for the switches where it is not connected directly to GND, we will drive the pin low to activate the corrosponding switch.

The pin on the opposite site of GND is the +5V. The inner pin next to +5V is the output pin of the switch, and we will read it to determine if the key ispressed or not.
  1. Use the multimeter to determine which connections on the edge connector are connected to
    • GND and +5V.
    • the output pins of control and shift.
    • the input and output pins of the other switches. You should have 7 input connections and 8 output connections on the edge connector.
    connector with pin numbers (1 to 12 and 13 to 24)
    connector with pin numbers (1 to 12 and 13 to 24)
    connector.JPG (676.31 KiB) Viewed 2829 times
  2. Connect GND and +5V to the corrosponding pins on the teensy.
  3. Connect the input pins of the switches to pins D0 up to D6.
    (You might not want the LED to light up all the time. In that case use D7 instead of D6 and change the array 'outputPins' in the software accordingly )
  4. Connect the output pins of the switches to pins B0 to B7.
  5. Connect the output pin of shift to pin F0 and the output pin of control to pin F1.
Here are the resulting connections for my keyboard:
Spoiler:

Code: Select all

+-----+----------+----------------+
| PIN |  TEENSY  |    FUNCTION    |
+-----+----------+----------------+
| 1   |          |                |
|     |          |                |
| 2   |          |                |
|     |          |                |
| 3   |          |                |
|     |          |                |
| 4   |  VCC     |                |
|     |          |                |
| 5   |  GND     |                |
|     |          |                |
| 6   |          |                |
|     |          |                |
| 7   |  D0      |  matrix input  |
|     |          |                |
| 8   |  B0      |  matrix output |
|     |          |                |
| 9   |  B1      |  matrix output |
|     |          |                |
| 10  |  B2      |  matrix output |
|     |          |                |
| 11  |  B3      |  matrix output |
|     |          |                |
| 12  |  D1      |  matrix input  |
|     |          |                |
| 13  |  B4      |  matrix output |
|     |          |                |
| 14  |  D2      |  matrix input  |
|     |          |                |
| 15  |  D3      |  matrix input  |
|     |          |                |
| 16  |  D4      |  matrix input  |
|     |          |                |
| 17  |  B5      |  matrix output |
|     |          |                |
| 18  |  D5      |  matrix input  |
|     |          |                |
| 19  |  B6      |  matrix output |
|     |          |                |
| 20  |  D6      |  matrix input  |
|     |          |                |
| 21  |  B7      |  matrix output |
|     |          |                |
| 22  |  F1      |  ctrl output   |
|     |          |                |
| 23  |  F0      |  shift output  |
|     |          |                |
| 24  |          |                |
+-----+----------+----------------+
And here is the layout of the matrix on my keyboard, switch numbers as printed on the backside of the PCB:
Spoiler:

Code: Select all

+---+----+-------------------------+
|        |        OUTPUTS          |
+        +-------------------------+
|        | 8  9  10 11 13 17 19 21 |
+---+----+-------------------------+
|   | 7  | 61 48 45 44 30 46 15 16 |
|   |    |                         |
|   | 12 | 57 31 14 55 11 1  10 56 |
| I |    |                         |
| N | 14 | 29 43 42 27 28 33 12 13 |
| P |    |                         |
| U | 15 | 25 39 40 41 54 17 26 53 |
| T |    |                         |
| S | 16 | 37 52 50 35 19 24 38 36 |
|   |    |                         |
|   | 18 | 7  2  3  4  5  9  8  6  |
|   |    |                         |
|   | 20 | 18 20 34 21 23 22 49 51 |
+---+----+-------------------------+
hardware ready
hardware ready
hardware.JPG (582.45 KiB) Viewed 2829 times
Software

I have posted the software as a gist for now, because I'm to lazy to create a github account ;)
https://gist.github.com/anonymous/c4d13 ... 8b2c66db1d

This is an Arduino sketch and I use it with a Teensy 2.0. If the keyboard does not emit the keys you want, you will have to edit the 'keys' array in the code. If you activate the serial monitor in arduino you should see a print statement with the row and column of pressed keys. This should help fill in the matrix. Note that indices in C start with 0.

A list of the possible keycodes can be found here:
https://www.pjrc.com/teensy/td_keyboard.html.

I have added an additional keycode for the key next to the left shift key on ISO keyboards: KEY_ISO_BACKSLASH

If you do not want the keyboard to emit keypresses during matrix setup remove the two slashes in front of this line:

Code: Select all

//#define SUPPRESS_KEY_EVENTS

User avatar
OldIsNew

18 Feb 2018, 04:05

That is so cool! Fantastic work!

User avatar
Sangdrax

18 Feb 2018, 10:50

Always super cool to see a hall effect conversion. This will be real helpful to folks I'm sure.

User avatar
Daniel Beardsmore

18 Feb 2018, 13:11

I thought that the inner pins were dual outputs, from what someone said here recently (and from prior information), but I guess I still don't understand how these things work.

Slom

19 Feb 2018, 18:24

Daniel Beardsmore wrote: I thought that the inner pins were dual outputs, from what someone said here recently (and from prior information), but I guess I still don't understand how these things work.
I even fixed the WIKI :ugeek:
wiki.PNG
wiki.PNG (22.4 KiB) Viewed 2717 times

Slom

04 Jan 2019, 00:47

Spent the evening hunting unicode symbols. I am not sure if I got everything right yet (and the fronts are still missing), but I am running out of steam now
keyboard-layout (2).jpg
keyboard-layout (2).jpg (58.45 KiB) Viewed 2471 times
raw data for http://www.keyboard-layout-editor.com/

Code: Select all

[{x:0.5,p:"SA",a:5,f:5},"&#168;\n1","&#175;\n2","<\n3","&#8804;\n4","=\n5","&#8805;\n6",">\n7","&#8800;\n8","&#8744;\n9","&#8743;\n0","-\n+","&#247;\n&#215;","$\n&#9671;",{c:"#695b5b",t:"#cccccc",a:7,f:3,fa:[2]},"BACK<br>SPACE","ATTN"],
["ESC",{c:"#cccccc",t:"#000000",a:5,f:5},"?\nQ","&#9077;\nW","&#8712;\nE","&#9076;\nR","&#8764;\nT","&#8593;\nY","&#8595;\nU",{fa:[9]},"&#11823;\nI",{f:5},"&#9675;\nO",{f:5},"&#8902;\nP",{f:5},"&#8594;\n&#8592;",{f:5},"&#8867;\n&#8866;",{f:5},"}\n{",{c:"#695b5b",t:"#cccccc",a:7,f:3,fa:[2]},"LINE<br>FEED","HERE<br>IS"],
[{x:0.25,c:"#332929"},"CTRL",{c:"#cccccc",t:"#000000",a:5,f:5},"&#9082;\nA","&#8968;\nS","&#8970;\nD","_\nF","&#8711;\nG","&#8710;\nH","&#8728;\nJ","'\nK","&#9109;\nL","(\n[",")\n]",{c:"#ca380a",a:7,f:3,fa:[2],w:1.5},"RETURN",{c:"#695b5b",t:"#cccccc"},"DEL",{c:"#332929"},"PAPER<br>ADV"],
[{x:0.25,w:1.5},"SHIFT",{c:"#cccccc",t:"#000000",a:5,f:5},"&#8834;\nZ","&#8835;\nX","&#8745;\nC","&#8746;\nV","&#8869;\nB","&#8868;\nN","|\nM",";\n,",":\n.","\\\n/",{c:"#332929",t:"#cccccc",a:7,f:3,fa:[2],w:1.5},"SHIFT",{c:"#cccccc",t:"#000000",p:"DSA",f:1,w:0.75,d:true},"LOW<br>SPEED"],
[{y:-0.75,x:14,c:"#695b5b",f:3,w:0.5,h:0.5,w2:1,l:true},""],
[{y:-0.25,x:0.25,c:"#cccccc",a:6,f:1,w:0.75,d:true},"\n\nAPL",{x:1.75,c:"#332929",t:"#cccccc",p:"SA SPACE",a:7,w:8},"",{x:0.5,c:"#cccccc",t:"#000000",p:"DSA",w:0.75,d:true},"HALF<br>DUP",{x:1.25,w:0.75,d:true},"ON<br>LINE"],
[{y:-0.75,x:1,c:"#695b5b",f:3,w:0.5,h:0.5,w2:1,l:true},"",{x:10.5,w:0.5,h:0.5,w2:1,l:true},"",{x:1.5,w:0.5,h:0.5,w2:1,l:true},""]
Resources:
http://www.keyboard-layout-editor.com/# ... spacecadet
https://en.wikipedia.org/wiki/APL_syntax_and_symbols
http://xahlee.info/comp/unicode_APL_symbols.html
https://unicode-search.net/unicode-name ... l?term=APL
https://github.com/MMcM/lmkbd2/blob/mas ... s/lmkbd.el

Post Reply

Return to “Workshop”