Author Topic: NKRO Xwhatsit Controller usable for almost ANY keyboard, not just Capsense  (Read 7804 times)

0 Members and 1 Guest are viewing this topic.

Offline orihalcon

  • Thread Starter
  • Posts: 95
Had been talking to xWhatsit about the possibility of using his capsense controllers on regular switches like ALPS, MX, space invaders, or anything with physical contacts other than just IBM capacitative boards like IBM model F's. He mentioned that they should be usable with physical switches and maintain NKRO with diodes used for each key.

Sure, there are other keyboard controllers out there that have similar functionality, but I haven't found any that are anywhere near as simple to program as the xWhatsit given that the configuration utility is completely visual and runs on all major operating systems including Mac, Windows, and Linux.  Configuration consists of pressing a key, it is visualized on a matrix, and you can choose from the dropdown menu what you want to assign the key to.

The idea behind this post is to get the word out that a lot of older keyboards with unique layouts with bad or obsolete controllers could be restored to function, have NKRO, and all of xWhatsit's awesome features that were previously known to be usable only on capsense boards.

Finally got around to building a concept board to test out the theory using an Apple M0110 and it WORKS PERFECTLY, NKRO and all:
92431-092433-192435-2

Basically followed the guide here as far as wiring goes, but substituted the teensy for the xWhatsit:
http://deskthority.net/workshop-f7/the-apple-m0110-today-t1067.html

...important part is that the diodes go in with the black/silver band marked end of each diode wired towards the ROWs, not the columns, which is exactly the same as the guide above has it pictured.

I use the Model F variant of the controller which supports up to 128 keys (16 columns and 8 rows).  This can be used on full size keyboard that would have more than 16 columns, you'd just need to extend the columns to cover the extra keys, up to one each per intersecting row.  Will eventually get around to making a full size board if anyone is interested in seeing how that would look, or might be easier to make a drawing of how that would look.

If anyone is interested in trying this, I have xWhatsit Model F controllers available for $35 shipped to the USA.  PM me if interested.
« Last Edit: Sun, 01 March 2015, 23:20:55 by orihalcon »

Offline blueSmoke

  • Posts: 103
  • Location: Oakland, California
  • Life is what happens while you're busy Fixing RSI
Are you saying that the model F controller can be used for any keyboard? How about beamspring keyboards? Then it will be really nice!!!
Model M, Filco Tenkeyless White, Few others, few more others, Noise-hater (ongoing project), blah-blah (to be fillled later...)

Offline 0100010

  • Posts: 1127
  • Location: DFW, TX, US
  • Not Sure
1 - Thats awesome, I didn't think it would work with anything but capsense.

2 - I'm not sure your wires are long enough. ;-p

What voltage threshold did you have to use in the controller?
  Quoting me causes a posting error that you need to ignore.

Offline orihalcon

  • Thread Starter
  • Posts: 95
Are you saying that the model F controller can be used for any keyboard? How about beamspring keyboards? Then it will be really nice!!!

I guess I'm saying more that it can be used with any keyboard that you can wire your own matrix to, like ones with physical switches.

I'm pretty sure that the Model F variant can't be used on Beamsprings because the switches are "Normally closed." This would mean that you'd have to invert the sensing pattern and since you can't wire your own capsense board, you'd also be kind of stuck with how many rows and columns the original PCB has, and most of those are 23x4 other than the displaywriters which are 12x8 (which you could probably wire to the F controller, but then there's still the issue of needing to invert the sensing).  xWhatsit's original beam spring controllers are definitely the way to go if you need one since they are literally plug and play (doesn't even require soldering) and already take these things into account.  Definitely contact him if you are needing a beam spring controller.

Idea behind this mod is to replace original controllers that are either bad or obsolete for regular electrical contact switches like most mechanical keyboards have.  I know I have a few boards that just don't work and would kind of be nice to save rather than just harvesting for switches. The M0110 was a good example of one of those.  Cool layout, but not something that I'd want to try to convert the original protocol to USB, and I'm sure even if it was converted, there would be no NKRO.  Definitely good for those with dead controllers too!

Offline orihalcon

  • Thread Starter
  • Posts: 95
1 - Thats awesome, I didn't think it would work with anything but capsense.

2 - I'm not sure your wires are long enough. ;-p

What voltage threshold did you have to use in the controller?

Ah, I knew the wire length would get brought up! I was so excited to get this thing together that I figured I rather have the wires too long than too short and figured I could always shorten them later.  Also thought it would be good to debunk the idea that the controllers require extensive ground shielding to cancel out signal noise.  They probably do need to be shielded well for use in a capsense board to prevent signal noise, but when used with physical switches, the threshold voltage can be turned way up to eliminate any noise. 

I used the default 681 voltage threshold value but tested that it will work with anything 150 or higher.  The larger you make the value in this instance, the higher the signal to noise ratio.  It's definitely not a narrow range (I usually end up at 110-120) that you have to work with when they are used for capsense boards.

My other thought is that it could be that choosing a lower threshold voltage would allow bad switches (ones that aren't making good internal physical contact) to continue to work since not all of the strobe voltage would need to make it through.  If you think about the capsense board for which these were designed, there is no physical contact electrically even with the hammers.  There is non-electrically-conductive solder mask over each capsense pad.  Haven't tested the revival of bad switches theory though since I don't exactly have any bad switches to work with (just been lucky so far).  Seems like it would be useful if that worked since you wouldn't have to tear a board apart to get at one switch that feels ok, but still isn't working and not having to go and find a replacement.
« Last Edit: Sun, 01 March 2015, 10:50:56 by orihalcon »

Offline Melvang

  • Exquisite Lord of Bumfluff
  • * Maker
  • Posts: 4398
  • Location: Waterloo, IA
  • Melvang's Desktop Customs
I will be trying this out as well.  Does it matter what connections on the controller are used for columns and rows? 

From my thinking it wouldn't matter because of the output grid when testing which position corresponds in the matrix within the GUI.  Though with careful selection on connections to rows and columns you could probably match the matrix in the GUI.
OG Kishsaver, Razer Orbweaver clears and reds with blue LEDs, and Razer Naga Epic.   "Great minds crawl in the same sewer"  Uncle Rich

Offline 0100010

  • Posts: 1127
  • Location: DFW, TX, US
  • Not Sure
From memory, Toms controller, from the front and left to right as 2 ground pins, 8 row pins, 2 more ground pins, 16 column pins and then 2 more ground pins.
  Quoting me causes a posting error that you need to ignore.

Offline orihalcon

  • Thread Starter
  • Posts: 95
I will be trying this out as well.  Does it matter what connections on the controller are used for columns and rows? 

From my thinking it wouldn't matter because of the output grid when testing which position corresponds in the matrix within the GUI.  Though with careful selection on connections to rows and columns you could probably match the matrix in the GUI.

Correct, doesn't really matter which rows and columns you use, but I soldered things to make it so that the left of the matrix ended up being the left side of the board and top and bottom were oriented the same.  It's kind of hard to explain other than using the picture of mine.  From the BACK of the controller, like I have mine pictured above, the 16 columns (looking at it left to right) are in order from right to left.  Rows (again looking left to right) go top to bottom.  Confusing I know.  If there is any doubt, you can test a few keys after you solder in one or two rows and columns to make sure the orientation is correct.

As 0100010 mentioned, there are two grounds on either end, and the rows and columns are separated by an additional two ground pins.  It's easy to tell when looking close at the PCB because the grounds have obvious connections to the bulk of the rest of the controller (for grounding purposes) whereas the rows and columns just have single traces leading off from them.

Offline orihalcon

  • Thread Starter
  • Posts: 95
Works for Model M's too, though only SSKs and Wheelwriters have 16x8 matrixes. You'll still only get 2KRO because of the limitations of the membrane, but also handy if you want to add a solenoid:

98440-0

98442-1

98444-2
« Last Edit: Sat, 25 April 2015, 00:54:04 by orihalcon »