Fortune Systems looooong keyboard with Digitran capacitive switches (conversion)

User avatar
snacksthecat
✶✶✶✶

10 May 2019, 20:10

Hello DT, it's been a while since I've done any conversion work so I wanted to share my weekend project.

Image

Someone reached out asking if I could help convert their Fortune Systems keyboard and I took on the task. I meant to do some research ahead of time but unfortunately other stuff got in the way and I never got around to it. Having never done any capacitive conversions, I'm admittedly a little bit out of my depths. Nevertheless, I know this should very much be doable, based on what I've seen other people be able to do.

My plan is to first play around and see what it looks like at a protocol level, then hit it with a capsense controller for a proper conversion.

Here are some photos of the board.
Spoiler:
Image

Image

Image

Image

Image

Image

Image

Image

Image
At this point I'm still in the tinkering phase.

That said, I'm in desperate need of good resources/examples.

I know things like xwhatsit and CommonSense exist, but no clue where to start. Any help would be greatly appreciated.

This thread will be a dump of what I learn about this particular keyboard. If a good tutorial doesn't exist, maybe I can write one up in here.

Thanks and wish me luck!

User avatar
Sangdrax

10 May 2019, 20:37

It's just rows to rows and columns to columns. Xwhatsit is already all set up for you if you use one. The Xwhatsit pdf has all the pins labeled. DMA's has way better features but you need to set up the firmware yourself on the raw devboards with PSoC creator. But you can choose what pins do what and whatnot.

viewtopic.php?f=7&t=20051

EDIT: Before you go down this rabbit hole, open it up and make sure you didn't get one of the Keytronic models. :shock:

User avatar
snacksthecat
✶✶✶✶

11 May 2019, 09:59

Can't sleep :cry:

Made a little breakout for the connector using a cheap ethernet cable, some very tiny heat shink tubing, and a little bit of patience.

Image

User avatar
snacksthecat
✶✶✶✶

11 May 2019, 10:26

Well it's 3am here and I've got the board all hooked up... but I'm afraid to turn it on.

I've spun the volume knob all the way in one direction, but I'm not sure if I've turned it all the way up or down. I know as soon as I plug this thing in, it's going to beep at me and scare the hell out of me.

User avatar
JP!

11 May 2019, 15:31

snacksthecat wrote:
11 May 2019, 10:26
Well it's 3am here and I've got the board all hooked up... but I'm afraid to turn it on.

I've spun the volume knob all the way in one direction, but I'm not sure if I've turned it all the way up or down. I know as soon as I plug this thing in, it's going to beep at me and scare the hell out of me.
I like to think of this as a wheel of fortune rather than a volume knob ;)

User avatar
snacksthecat
✶✶✶✶

11 May 2019, 17:46

JP! wrote:
11 May 2019, 15:31
snacksthecat wrote:
11 May 2019, 10:26
Well it's 3am here and I've got the board all hooked up... but I'm afraid to turn it on.

I've spun the volume knob all the way in one direction, but I'm not sure if I've turned it all the way up or down. I know as soon as I plug this thing in, it's going to beep at me and scare the hell out of me.
I like to think of this as a wheel of fortune rather than a volume knob ;)
The damn thing got me, too. I was pretty much expecting it so I didn't jump out of my socks but it still gave my blood pressure a good rise.

I wish I had remembered to set my camera back to HD to capture the moment but oh well, still pretty funny.

User avatar
Sangdrax

11 May 2019, 17:52

Sounds like you got a low battery on that fire alarm. :D

User avatar
snacksthecat
✶✶✶✶

12 May 2019, 22:14

I got a good nights sleep and I think I finally get the DMA stuff. I was making it harder than it actually is, I think.

I'm installing all the stuff needed to build the firmware / config tool and it's taking quite a long time. Decided to open up the board and take some photos while I wait:

Image

Image

Image

Image

Image

The leaf springs themselves are very delicate. Gotta be careful not to bend one.

User avatar
snacksthecat
✶✶✶✶

13 May 2019, 01:57

One extra thing the guy asked for was some help retrobriting the keys. The white ones are certainly quite yellowed. The gray ones, a bit; and the blue caps to a lesser degree.

I wanted to take a good "before" photo but I cant seem to get the color of the keycaps to translate accurately into an image. Here are two nearly identical photos. The only difference is I used a photography lamp in one of them and the other (the yellow one) is just the normal lighting I have in my apartment.

ImageImage

In reality, the true color of the keycaps is probably somewhere in the middle.

I've done plenty of retrobriting but I'm no expert. Should I assume there's nothing weird about these caps that would make them unsafe to retrobrite? The last thing I want to do is mess up the guy's keyboard.

Anakey

13 May 2019, 10:28

The thing the customer has to understand is that retrobriting is only a temporary solution, the keycaps will yellow again over time and may yellow to more of an extent then they are currently. The keycaps may become too white known as bleaching if left in contact with the peroxide too long but other then that if they are checked regularly through the process they should be fine. Also give the keycaps a good clean with denture tabs before starting you do not want want any dirt on the caps.

User avatar
snacksthecat
✶✶✶✶

13 May 2019, 23:11

Anakey wrote:
13 May 2019, 10:28
The thing the customer has to understand is that retrobriting is only a temporary solution, the keycaps will yellow again over time and may yellow to more of an extent then they are currently. The keycaps may become too white known as bleaching if left in contact with the peroxide too long but other then that if they are checked regularly through the process they should be fine. Also give the keycaps a good clean with denture tabs before starting you do not want want any dirt on the caps.
Yeah that's a good point. I should really make sure he/she is aware that it can/will reverse over time.

User avatar
snacksthecat
✶✶✶✶

14 May 2019, 03:53

I don't have a lot of time for keyboard stuff during the week. But enough time to do little tasks that don't require a lot of setup.

Here's a couple pictures of how I'm doing the retrobriting. I just spray the plastic with 3% peroxide every 45 minutes or so and stick it under a UV lamp. It's not the fastest but it doesn't make a mess and I like to think it's gentle on the plastic (but I could be making that up entirely).

Image

Image

And on the conversion front; there's hope for me yet! Finally got everything built and uploaded to the board. From here I guess I just continue tinkering and looking at examples.

Image

Image

Anakey

14 May 2019, 09:06

it would also be worth moving the keycaps around when you spray them, looks like the ones at the edges are not getting enough UV compared to those in the middle.

User avatar
snacksthecat
✶✶✶✶

17 May 2019, 17:46

I'm slowly starting to piece together the CommonSense stuff. I have some very basic questions, and maybe they're better suited for that thread but I feel out of place with my little "which wire do I connect here?" questions when everyone else in there seems to have a PhD in electrical engineering.

So this keyboard very conveniently comes in two parts. The rows and columns of the matrix all terminate at this ribbon connector which links them to the controller.
Spoiler:
Image
It seems like this would be a perfect spot to insert the CommonSense converter. But I'm a little bit confused based on what I'm seeing in other builds.
Spoiler:
Image
This image was posted by tigpha in the DMA CommonSense thread. In the picture you can see two thin silver wires running from Gnd on the CY8CKIT-059 to (presumably) Gnd on the keyboard.

I don't believe this ribbon connector on my board has any pin for Gnd. It's all just rows and columns. So would my plan for using this connector be viable?

Aside from this, I'm having a hard time interpreting DMA's instructions for soldering. Certain pins need to be connected to Gnd and Vdd. But the instructions are written in a way that I'm not able to follow. I've highlighted the parts of interest in red.
Spoiler:
RECOMMENDATIONS
  • P0[2] and P0[4] MUST be electrically connected to +5V (Well.. that's one STRONG recommendation. Not following it will lead to WILD readings, because those pins are ADC voltage references.).
  • P12(all pins of it) cannot be used for analog connections. That means you can only assign Rows to those pins.
  • D0 and D1 MUST be electrically connected to the ground. Use P0[3] for D0 and P3[2] for D1 (you can't use those pins for anything else anyway - they have 1uF capacitors connected to them). Can be any pins except P12[x] though.
  • It is better to separate Rows and Cols by a pin electrically connected to the ground, but not necessary. If you use adjacent pins - one matrix cell will have higher readings, that's all.
  • Rows. Simplest part. No restrictions.
  • Columns. Columns must be assigned so that last column is Cols[23]. If you have a 16-column matrix, physical leftmost column is Cols[8]. Extra columns can be left auto-assigned.
Default pinout
  • D0: 0.7. Must be connected to the nearest GND
  • ADC Vref: 0.4. Must be connected to the nearest VDD.
  • Rows: 2.0, 2.3-2.7, 12.7, 12.6
  • Cols: 1.0-1.7, 3.0, 3.1, 3.3-3.7, 15.0-15.5, 0.0, 0.1, 0.5. WARNING to use more than 17 columns, C41, C42 and R5 must be removed from the PCB.
  • ExpHdr (solenoid/LED connector) is configured to blink the kit's LED on keypress. Leave it assigned as is, unless you really know what you're doing. 12.3 would be NumLock LED, 12.4 - CapsLock LED
Pieces are clear but other bits are a mystery. When I plug the board in, the FlightController software gives me the error message "Scan module went crazy and had to be shot" or something like that. Presumably I have the base wiring wrong. I'll take another stab at it when I have time today but it would be great if someone could just clarify these instructions.

The way I interpret this is:

Code: Select all

Gnd ----- 0.3, 3.2, 0.7 (closest)
Vdd ----- 0.2, 0.4
Am I off?

User avatar
snacksthecat
✶✶✶✶

18 May 2019, 18:19

So I adjusted course and ditched my raspberry pi setup.

I gave another shot at the windows instructions, skipping the part about making a static Qt.

The FlightController software runs fine now if I run it in debug mode through the IDE.

I did a one key test and it's working!

User avatar
snacksthecat
✶✶✶✶

18 May 2019, 19:38

What I'm trying to figure out right now is which pins need to be treated as "rows" vs "cols" from the perspective of the firmware.

This is what the mechanism on the looks like.

Image

In DMA are are the columns sensing or strobing?

Should the leaf spring be the one that is strobing and the pad sensing?

Going to also post this to the CommonSense thread in case someone there can help.

For what it's worth, I've tried switching back and forth between the two and it seems to function the same either way I configure it.

User avatar
Sangdrax

18 May 2019, 21:09

The pads are the sense.

The controller going crazy and had to be shot thing is because you hadn't dialed it in yet and when the whole keyboard is instantaneously sending keypresses at startup, it shuts the input down as a protective measure, but you can still adjust the values. Then once you do and upload the settings to the EEPROM, it should be good.

User avatar
snacksthecat
✶✶✶✶

19 May 2019, 01:26

Sangdrax wrote:
18 May 2019, 21:09
The pads are the sense.

The controller going crazy and had to be shot thing is because you hadn't dialed it in yet and when the whole keyboard is instantaneously sending keypresses at startup, it shuts the input down as a protective measure, but you can still adjust the values. Then once you do and upload the settings to the EEPROM, it should be good.
Thanks Sangdrax. I hooked the converter up to my logic analyzer and found that the rows were strobing. So pads in my case should be treated as columns and leaves should be treated as rows in CommonSense. It's backwards from reality but it makes sense so we'll go with it.

Yeah, the controller going crazy was probably due to my janky raspberry pi setup. I was eventually able to build the Qt project (FlightController) so I can work on my windows machine. On here, the converter is acting much more well behaved. Plus I've actually got some screen space to see what I'm doing. Oh and DMA pointed out to me that there are compiled windows binaries in his github repo. I would say that really simplifies things for people wanting to work with this firmware. Building it required a lot of setup and dependencies so it's really nice to have the built program as a shortcut.

A few posts ago I asked a question about ground. I didn't think I had any ground line to connect to on the bottom portion of the PCB. So I ignored it and kept going. I was able to wire up a single key proof of concept to test if this keyboard would work. I was able to configure everything in FlightController and get some output out of the keyboard. But everytime I plugged the keyboard back in, I'd have to adjust the tolerance. This is what the behavior looked like when I tested at this point:
I knew this obviously wasn't right so I decided to trace out the other lines on the PCB. Sure enough, there is indeed a Gnd line. It's connected to some sort of net-looking plane on the backside of the PCB. Here's the pin and what that fill (?) looks like:

Image

Image

After I figured out I could connect Gnd I tested again. Here's what that looked like.
Much better. It still needs some tuning but I'm confident we'll be able to figure it out.

So the next logical step is to hook up more rows and columns and get the whole thing running. I decided to use breadboard jumper wires because they work out too perfectly not to. Here's what the keyboard looks like, all wired up:

Image

Not too shabby. Glad the hole in the plate is nice and big because I hooked them up while it was disassembled then fed them through the hole.

Then I soldered header pins onto the controller and hooked all the wires up.
  • The "bright" colors (red/orange/yellow) are strobe/leaf.
  • The "cool" colors (blue/purple/green) are sense/pad.
  • Black is Gnd
  • White is caps lock LED
Image

User avatar
User101

19 May 2019, 04:52

I was going through the patent numbers on the keyboard and found some interesting images. Probably won't help with the effort but its fun to look at.
I will link it here:
https://patents.google.com/patent/EP0063800A2/en
https://patents.google.com/patent/US4090229A/en

It also described the travel distance of this particular switch is 3.81mm.
Interestingly one page of the patent file shows a different type of switch that looks very different from this one.
Attachments
US4090229-drawings-page-3.png
US4090229-drawings-page-3.png (52.02 KiB) Viewed 10858 times
US4090229-drawings-page-2.png
US4090229-drawings-page-2.png (48.94 KiB) Viewed 10858 times
cpasense.png
cpasense.png (145.3 KiB) Viewed 10858 times

User avatar
snacksthecat
✶✶✶✶

19 May 2019, 19:10

User101 wrote:
19 May 2019, 04:52
I was going through the patent numbers on the keyboard and found some interesting images. Probably won't help with the effort but its fun to look at.
I will link it here:
https://patents.google.com/patent/EP0063800A2/en
https://patents.google.com/patent/US4090229A/en

It also described the travel distance of this particular switch is 3.81mm.
Interestingly one page of the patent file shows a different type of switch that looks very different from this one.
I agree, it is fun to look at that stuff. I dove into the patents on another project and it turned out to be very helpful in figuring out the board.

It's funny you mention patents, a patent number is actually printed on a sticker attached to the plate. The sticker say 3,750,113 and 4,090,229.

Image

Once I get to a steady state with the CommonSense conversion, I might have a look into these numbers to see if they turn up any material.

Speaking of CommonSense, I've made a little bit more progress. After much shuffling around of pin assignments, I finally got about 90% of the keys to register in the matrix monitor in FlightController.

Image

The keys which have caps on them are not working. You can see, clearly one column is bad. I did a quick test and found that simply using a different pin for this column resolved that issue.

The other three keys are a bit of a mystery at this point. They're not connected by either rows or columns (if I remember correctly). I will solder a few more header pins onto the board and see if swapping around more pins does the trick.

What's clear to me now is that this is not like other conversions that I'm used to doing. There's a lot of tuning and tweaking that needs to be done before the keyboard is working optimally. Once I "finish" the base configurations and get everything mapped out, I'd probably like to keep the board for about a week and use it. That will allow me to fine tune all the configs.

Very interesting stuff. I look forward to using my learnings to convert the 5110/5120 board I bought last year.

User avatar
snacksthecat
✶✶✶✶

19 May 2019, 20:33

Well I figured out why those random keys aren't working. I was so caught up trying to look for a pattern of a bad column or row that I overlooked this very obvious cause.

Image

In the picture I've circled four spots where there is no leaf spring. One of those spots is actually a dummy spot for the enter key so it looks like 3 of the leaf springs fell off or were removed. What's strange is that the pads on the PCB look fine so I have no idea how they could have fallen off. Maybe the copper leaf spring broke right at the solder joint.

@User101
I can swap the leaf springs in from other spots on the keyboard. But I'd just need you to point out which spots you'd like to take the springs from. I'm assuming you don't have the extra springs laying around right? (I know, it's a long shot asking).

Meanwhile I'll see if I can find a similar material and fashion some makeshift replacement springs.

Anakey

19 May 2019, 20:44

All of the pads you circled are on 2u keys or the enter key therefore i do not think they would have had any springs on them in the first case

User avatar
snacksthecat
✶✶✶✶

19 May 2019, 20:57

Anakey wrote:
19 May 2019, 20:44
All of the pads you circled are on 2u keys or the enter key therefore i do not think they would have had any springs on them in the first case
Oh lord, I think you're right. I keep forgetting this keyboard doesn't really use many stabilizers. It uses dummy switches with a double mount instead.

Well I feel better! (and kind of dumb)

User avatar
User101

19 May 2019, 23:34

snacksthecat wrote:
19 May 2019, 20:57
Anakey wrote:
19 May 2019, 20:44
All of the pads you circled are on 2u keys or the enter key therefore i do not think they would have had any springs on them in the first case
Oh lord, I think you're right. I keep forgetting this keyboard doesn't really use many stabilizers. It uses dummy switches with a double mount instead.

Well I feel better! (and kind of dumb)
That is right. These are spots for the Return, Execute, Large 0 and Numpad Enter key. Not silly sometimes i make that mistake too haha

User avatar
snacksthecat
✶✶✶✶

20 May 2019, 03:15

To go the full 9 yards, I lubed the switches. It's actually not very hard to take them apart.

I decided to go with PTFE. I'm not sure how susceptible these switches are to dust but the opening for the slider is pretty large. But I could see wet lube working as long as you kept the board very clean.

First step is to remove the sliders. I found using a pliers wrapped with electrical tape (to protect) worked very well. You can wiggle up and down to pull the slider out very easily.

Image

Then while everything was apart. I ran the sliders through the ultrasonic cleaner. I dusted out the bottoms with a datavac-style blower.

There was also some corrosion on the springs. So I gave those a very quick swish around in naval jelly. Only about 3-4 minutes.

Image

When the sliders dried off, I lubed them with the PTFE. Tried to coat as evenly as possible, and get it in the right spots.

Image

Next I lubed the bottoms with the PTFE spray.

Image

Finally, put them all back together.

Image

Here's a side-by-side where you can see a before and after comparison.

Image

It turned out really great. The keys are now perfectly smooth.

At this point I put the keycaps back on because configuring the keymap without them is uber confusing, in my experience.

User avatar
snacksthecat
✶✶✶✶

20 May 2019, 22:08

Dumping this here for now, to read later. These are the patents that are on the sticker stuck to the plate.

Capacitive keyboard
https://patents.google.com/patent/US375 ... oq=3750113

Capacitive key for keyboard
https://patents.google.com/patent/US409 ... oq=4090229

User avatar
snacksthecat
✶✶✶✶

21 May 2019, 13:23

I finished mapping all the keys and did a quick typing video:

User avatar
User101

21 May 2019, 17:53

Amazing job! Nice to see this coming together...

Ps. If you have time please read my previous few PMs, contains some important info.

User avatar
User101

22 May 2019, 06:47

Interestingly, your typing video sounds very different compared to the other supposedly same keyboard.
https://www.youtube.com/watch?v=rl-Z9zH7A8Y
This one i mean.
Any idea whats the cause?

xxhellfirexx

22 May 2019, 08:47

User101 wrote:
22 May 2019, 06:47
Interestingly, your typing video sounds very different compared to the other supposedly same keyboard.
https://www.youtube.com/watch?v=rl-Z9zH7A8Y
This one i mean.
Any idea whats the cause?
Not having the top case can affect the sound.

Post Reply

Return to “Workshop”