My Deko Fast Action Keyboard project

Johnbo

07 Sep 2020, 20:43

Hey all, just wanted to share progress on my first project keyboard, as well as ask for some input at the end if anyone has any insight.

I got a Deko Fast Action Keyboard on eBay recently as a project to tinker on.
Spoiler:
Image
Spoiler:
Image
Spoiler:
Image
First up is cleaning. The board was filthy.

I started by removing all the caps and getting them started in an overnight soapy water soak.
Spoiler:
Image
Then I removed the top case. The mounting plate has a lot of corrosion on it that I'll take care of later, but for now I just wanted to get all of the hairy, dusty grime out of it so I could at least touch it without recoiling in horror.
Before plate cleaning:
Spoiler:
Image
After plate cleaning:
Spoiler:
Image

After an overnight soak, I got to work finishing cleaning the keycaps. In my (limited) experience with the ultrasonic cleaner, it'll get parts 95% of the way there. Many of these keycaps had caked on grime, but the ultrasonic cleaner loosened it up to the point where it easily wiped off with a rag. As I soaked, cleaned, wiped off, rinsed, flicked standing water out of, then carefully arranged on a wire rack to dry 162 individual keycaps, I had plenty of time to contemplate how awesome large form factor keyboards are :lol:
Spoiler:
Image
Meanwhile, I washed the plastic top case with soapy water.


So, with everything a bit cleaner, I set about getting this thing to work. My original plan was to try to re-create a power adapter, but after a quick chat with /u/djserb on reddit, he told me when he plugged in his original power adapter all that happened was that he fried his USB port! So I opted for flecom's mod instead.
Spoiler:
Image
I plugged it in and nothing exploded!
Spoiler:
Image
On top of that, the LEDs light up and the screen appears to be functional, so that's all good news. I had a lot of fun playing around with it and seeing what works and what doesn't. Some of the switches didn't work at first, but after furiously pressing them repeatedly they started working normally.

I checked all of the keys with a combination of the online qmk tester and AutoHotKey. With AHK I was able to get the scancodes if any were sent.
(Side note: Is there a trick to getting hid_listen to work? I couldn't get any keyboard to register on either my laptop or my main PC with both hid_listen and WinHIDListen).
After testing out all the keys, some of the non-standard keys send scancodes and others don't. Any that didn't send a scancode I checked with a multimeter, and indeed some switches were broken.
Spoiler:
Image
I did notice some corrosion on one of the traces on the back of the PCB, below CR59.
Spoiler:
Image
After all of my diagnosing, here's the state of the switches:
Spoiler:
Image

My main questions for anyone that has one of these boards is:
Can you cross reference my spreadsheet with your own keyboard to see if your keyboard sends the same scancodes, or more importantly, if the same keys DO NOT send scancodes?

I'm trying to narrow down whether the keys that have working switches but don't send codes are a hardware problem or firmware problem. The board obviously has a good deal of corrosion, and I can't check the other side of the PCBs without desoldering everything. There's definitely a pattern to the scancodes, so it seems weird that it's so intermittent. But it is also a proprietary keyboard, so who knows what its firmware is doing. For reference, I'm using a Monoprice PS/2 Keyboard/Mouse to USB Converter Adapter.


So that's where I'm at now. I was always planning on replacing the switches eventually. I like the way linears feel when just pressing them randomly or playing with loose switches, but I find I make tons of mistakes when actually typing with them. So I'm going to replace them with my Kailh Box Navies I think. I was hoping to get the board fully functional first so I can just do one chunk at a time, but it's looking like I'll need to desolder everything no matter what, so I can clean all the corrosion off the mounting plates and to check the PCBs for damage.

I see two possibilities for my next step:
1) If someone else is able to verify that my board is mechanically fine, as in those keys don't send scancodes no matter what, then I'll have to explore a hardware option to make them work. Perhaps wire all the nonstandard keys to a Teensy or something, but I'll cross that bridge when I get to it.
2) If those keys are supposed to send scancodes, then I'll have to try to find the issues on the PCB and see if it's possible for me to fix them.

If anyone has any input, I'd love to hear it. Thanks for reading!

User avatar
XMIT
[ XMIT ]

08 Sep 2020, 14:07

Neat, thanks for sharing, I was always curious about this board. The LCD screen has so many possibilities.

Johnbo

08 Sep 2020, 22:51

Good news! I finally worked up the courage to plug the keyboard into my main PC's PS/2 port instead of testing it on my cheapo laptop with the Monoprice PS/2 converter. Again, nothing blew up, so that's always nice.

The real good news is that all the keys output unique codes now! The issue was my converter just ignoring certain scan codes.

EDIT: See next post for better scan code information

Here's an updated spreadsheet:
Spoiler:
Image


So, after chatting with another user and being reminded of the existence of SwitchHitter (I had it installed, I just forgot about it. Derp) I retested all the keys, and put their SwitchHitter output in the spreadsheet. Barring the physically broken switches, every key outputs something unique, which is fantastic, but there are some quirks.

Firstly, some of the keys launch certain functions, like the MediaPlayer and whatnot, and it seems to do it before SwitchHitter has a chance to "capture" the keys. So it will show in the "Last Key Down" section, but not in the actual log.
Secondly, some of the keys output similar BIOS code, but different Win Codes. For example, Pick Style and Color 2 output this, respectively:
43:43.0982 (0x7C, BIOS 0x64) DOWN
43:44.0117 (0x7C, BIOS 0x64) UP -> 134ms
43:46.0418 (0xFF, BIOS 0xE064) DOWN
43:46.0567 (0xFF, BIOS 0xE064) UP -> 148ms

So, in decimal, Pick Style outputs Win Code 124 and BIOS Code 110, while Color 1 outputs Win Code 255 and BIOS Code 57444 (0xE064), although in the small BIOS Code window it trims it down to just 100 (0x64).
SwitchHitter output for Color 2:
Spoiler:
Image



I'm happy to have at least something unique for every key now.
Last edited by Johnbo on 09 Sep 2020, 00:46, edited 2 times in total.

Johnbo

09 Sep 2020, 00:19

OK, did some more playing around. I guess I just misunderstood the Hex for the scancodes. AutoHotKey spit them out in a usable format.

Here is the updated spreadsheet with AutoHotKey remappable scan codes.
Spoiler:
Image

And here's an AutoHotKey template to remap all the special keys:

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#InstallKeybdHook
#SingleInstance Force

ToolTip(Message, TimeToDisplay = 1000, SleepWhileDisplayed = false)
{
	; display message
	ToolTip,%Message%
	; clear tooltip after TimeToDisplay milliseconds
	SetTimer,ToolTipClear,-%TimeToDisplay%
	; sleep before returning
	If SleepWhileDisplayed
		Sleep,%TimeToDisplay%
	Return
	; clear tooltip
	ToolTipClear:
	ToolTip
	Return
}

ToolTip("DekoFastAction has started")

; TOP LEFT BLOCK | Row 1;
SC055::ToolTip("Cmd")
SC05A::ToolTip("Learn")

SC05B::ToolTip("Browse Typeface")


SC05C::ToolTip("Style 1")
SC05D::ToolTip("Style 2")
SC05E::ToolTip("Style 3")
SC05F::ToolTip("Style 4")

SC062::ToolTip("Style 5")
SC063::ToolTip("Style 6")
SC06F::ToolTip("Style 7")
SC070::ToolTip("Style 8")


SC071::ToolTip("Font")
SC072::ToolTip("Look")

SC073::ToolTip("Pgm B")
SC074::ToolTip("Pgm A")

SC075::ToolTip("Move")
SC077::ToolTip("Scale")



; TOP LEFT BLOCK | Row 2;
SC07D::ToolTip("Help")
SC07E::ToolTip("Blank - Top Left Block Row 2 Column 2")

SC162::ToolTip("Browse Graphics")


SC163::ToolTip("Color 1")
SC164::ToolTip("Color 2")
SC165::ToolTip("Color 3")
SC166::ToolTip("Color 4")

SC167::ToolTip("Color 5")
SC168::ToolTip("Color 6")
SC169::ToolTip("Color 7")
SC16A::ToolTip("Color 8")


SC16B::ToolTip("Shader")
SC16C::ToolTip("Effect")

SC16D::ToolTip("Blank - Top Left Block Row 2 Column 14")
SC16E::ToolTip("Blank - Top Left Block Row 2 Column 15")

SC16F::ToolTip("Rot/Skw")
SC170::ToolTip("Kern")



; TOP LEFT BLOCK | Row 3;
SC06E::ToolTip("Undo")
SC076::ToolTip("Redo")



;  TOP RIGHT BLOCK
SC078::ToolTip("Clear Prview")
SC079::ToolTip("Clear Progrm")
SC07B::ToolTip("Delete File")
SC07C::ToolTip("Save File")



; BOTTOM LEFT BLOCK
SC064::ToolTip("Pick Style")
SC065::ToolTip("Tab Set")
SC066::ToolTip("Center Row")
SC067::ToolTip("Lower Third")
SC068::ToolTip("Blank - Bottom Left Block Row 3 Column 1")
SC069::ToolTip("Justify")
SC06A::ToolTip("Blank - Bottom Left Block Row 4 Column 1")
SC06B::ToolTip("Blank - Bottom Left Block Row 4 Column 2")
SC06C::ToolTip("Blank - Bottom Left Block Row 5 Column 1")
SC06D::ToolTip("Preset Macro")



; BOTTOM RIGHT BLOCK
SC171::ToolTip("Seq Edit")
SC172::ToolTip("Macro Edit")
SC173::ToolTip("Stop")
SC174::ToolTip("Play")
SC175::ToolTip("Preview")
SC176::ToolTip("Program")
SC17B::ToolTip("Read Prview")
SC17C::ToolTip("Read Progrm")

; NAV BLOCk
SC177::ToolTip("Char")
SC178::ToolTip("Row")
SC179::ToolTip("Layer")

It might be a little bit before my next update. At this point my next step is to desolder the switches to both clean the mounting plates properly and change the switches to my Box Navies, but I have to wait for some more switches to arrive (Who'd have thought that my order of 130 Kailh Box Navies from a couple months ago wouldn't be enough? :lol: ) And on top of that, I don't want to do any soldering in the garage right now since California is on fire again and it's too smoky to be outdoors for prolonged periods of time.

Johnbo

21 Sep 2020, 23:07

Deko Fast Action v1.0 is complete!

I desoldered all the switches and LEDs, and removed the mounting plates. After a bit of time with a wire wheel dremel action, I got them looking pretty good. Unfortunately they got kinda pitted from corrosion, but oh well, you barely see it in the end anyway. At least it's not grimy any more!

Mounting the switches in the newly cleaned plates, one of them was a little funky :lol:
Spoiler:
Image

After soldering in all the switches! I had next to no soldering experience before this project, but with some research, trial and error, good tools, and practice I got the hang of it.
Spoiler:
Image
Here it is with keycaps installed.
Spoiler:
Image
Spoiler:
Image
Spoiler:
Image
Keycaps are a mish mash, but for now it's at least usable. Eventually I'd like to find a keycap set that:
  • Looks somewhat in theme with the half depth keycaps, both in color and profile
  • Has appropriate size space bar and modifiers, as well as the offset caps lock
  • Has a bunch of extra keys for undo, redo, save, open, new, cut, all, copy, paste, or at least something approximating those functions
  • Has blanks available for random other keys
But for now, I absolutely love these MT3 keycaps and they match the color scheme of the originals, so I'm going to use them for the time being. I don't have the correct size spacebar, ctrl and alt keys, or caps lock key. The caps lock switch is offset, so it doesn't fit the center mounted caps lock in my MT3 set. Maybe if /dev/tty does another run I can pick up some appropriate size keycaps for those switches.


An unfortunate casualty with the switch replacement was the LEDs. The Kailh click bar switches don't have LED provisions, since that's where the click bar is. But, since I have no way of actually controlling the LEDs in the bonus buttons, and my keycaps don't have the LED windows anyway, I just left them out. I do have some 2x3x4mm rectangular LEDs that fit, so I may eventually figure out how to make those work. We'll see, for now I have other parts of this thing I want to work on.

As it stands now, it's 100% usable. With a direct PS/2 connection, all the extra buttons are remappable via AutoHotKey.

So, Phase 1 of the build is done!


For Phase 2, I'm going to see if I can use my Teensy as a keyboard controller and use the screen for some cool things!

M9HM

21 Sep 2020, 23:41

This is a cool project and a beautiful board!

Post Reply

Return to “Workshop”