Plan for NKRO in a Model M
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
I've been elbow deep in Model M insides lately while doing a bolt mod. (I took lots of pictures and made some instructive mistakes along the way, so there should be a decent wiki article out of it. I'm almost done now as this post is coming out of the Model M in question.) Having learned what goes where, and what space there is to play with, I've cooked up an idea.
Anyone know some diodes that could fit in here? That's all three layers of the membrane in place, lined up on the freshly fitted bolts. All the layers are translucent, so what you're seeing is the column layer above the perforated layer, with the rows underneath. When the keys are pressed, the springs buckle and their hammers press these layers together, closing the circuit. The trouble is there are no diodes in this matrix, so it's far from NKRO. In fact, I run into rollover limits quite frequently just using routine shortcuts like Shift + Ctrl + Arrow Keys, which means this giant board is 2KRO!
My idea is to put diodes into the matrix. The obvious place (to an electronics neophyte like me) is right in the air gap in the middle of those layers. That needs some kind of thin film diode. Anyone seen any such thing? I know that diodes can be truly microscopic in size (there's a ton of them inside any logic chip) but are they available? It would need to be thin enough to still leave enough of a gap so that the key isn't permanently detected as pressed down, of course!
This is just at the wild idea stage. Other pitfalls include the IBM controller. The membranes could be hooked up to a Teensy instead, to end run any inherent rollover issues in this controller, or allergies to the voltage drop that diodes would bring. (Jabbing a regular diode's legs into the controller's sockets for rows and columns does work. I get characters showing up with it one way around, and nothing when reversed. So I don't expect this to be a problem, but who knows.) I'll also note that I'm not demanding full NKRO across the keyboard (especially if these imaginary diodes wind up being expensive), but putting diodes into choice weakspots on the matrix like the mods and arrow keys.
When you've 120 keys on your board, you kinda wish you could press a few more of them…
Anyone know some diodes that could fit in here? That's all three layers of the membrane in place, lined up on the freshly fitted bolts. All the layers are translucent, so what you're seeing is the column layer above the perforated layer, with the rows underneath. When the keys are pressed, the springs buckle and their hammers press these layers together, closing the circuit. The trouble is there are no diodes in this matrix, so it's far from NKRO. In fact, I run into rollover limits quite frequently just using routine shortcuts like Shift + Ctrl + Arrow Keys, which means this giant board is 2KRO!
My idea is to put diodes into the matrix. The obvious place (to an electronics neophyte like me) is right in the air gap in the middle of those layers. That needs some kind of thin film diode. Anyone seen any such thing? I know that diodes can be truly microscopic in size (there's a ton of them inside any logic chip) but are they available? It would need to be thin enough to still leave enough of a gap so that the key isn't permanently detected as pressed down, of course!
This is just at the wild idea stage. Other pitfalls include the IBM controller. The membranes could be hooked up to a Teensy instead, to end run any inherent rollover issues in this controller, or allergies to the voltage drop that diodes would bring. (Jabbing a regular diode's legs into the controller's sockets for rows and columns does work. I get characters showing up with it one way around, and nothing when reversed. So I don't expect this to be a problem, but who knows.) I'll also note that I'm not demanding full NKRO across the keyboard (especially if these imaginary diodes wind up being expensive), but putting diodes into choice weakspots on the matrix like the mods and arrow keys.
When you've 120 keys on your board, you kinda wish you could press a few more of them…
- Kurk
- Location: Sauce Hollondaise (=The Netherlands)
- Main keyboard: Kinesis Advantage // Filco MJ2 + HID liberation
- Main mouse: ITAC Mousetrak Professional
- DT Pro Member: 0027
That would require very thin diodes indeed, and they would need to have a rather large surface area. They could be made possible by the same techniques as OLEDs. Organic diodes, maybe even printable. Still rather hypothetical for a hobby project like yours. And then there's the reliablility: I doubt that organic diodes would survive 10000 key presses.
It would probably be easier to fit in some SMD diodes in the conducting traces of the mylar sheets. The top sheet would probably work best because the rubber sheet gives you some slack there.
All in all a very daunting project.
SMD sizes:

It would probably be easier to fit in some SMD diodes in the conducting traces of the mylar sheets. The top sheet would probably work best because the rubber sheet gives you some slack there.
All in all a very daunting project.
SMD sizes:

- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
You're probably right about putting diodes right in the jaws of a switch. Perhaps making a whole new membrane layer to replace the column sheet (closest to the rubber), with diodes included, is doable these days. I'd rather not take my clumsy chances modifying a working one. The board's really quite nice now besides its dodgy decisions in rollover.
"You never know you need NKRO until you do."
"You never know you need NKRO until you do."
- idollar
- i$
- Location: Germany (Frankfurt area)
- Main keyboard: IBM F or M
- Favorite switch: BS
- DT Pro Member: -
I have been thinking of your idea of a NKRO Model M. Personally, I do not have interest on this mod. but it challenged me.
With my experience in destroying membranes
I have come to the conclusion that it could be possible to create an ad-hoc membrane routing each point in the matrix to an external PCB. If this is done, you could place all the required diodes outside the sandwich. Complex but perhaps it is doable. One should start painting it ...
With my experience in destroying membranes

- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Interesting ideas…
The M in question is just a 122 key terminal, my least favourite of all IBM layouts, so I wouldn't likely put an F in there unless I had a windfall of parts and fancied chopping the case to make an Unsaver.
iDollar's external diode matrix is… creative. I could see resorting to that if rollover was a showstopper when building a new controller into a Model M, for Bluetooth for instance:
http://deskthority.net/workshop-f7/blue ... ml#p185292
Fortunately, the SSK's matrix is pretty smart and hides its limited rollover well. That 122 key is the only IBM I've had with real, day to day computing, teeth gnashing rollover fail!
The M in question is just a 122 key terminal, my least favourite of all IBM layouts, so I wouldn't likely put an F in there unless I had a windfall of parts and fancied chopping the case to make an Unsaver.
iDollar's external diode matrix is… creative. I could see resorting to that if rollover was a showstopper when building a new controller into a Model M, for Bluetooth for instance:
http://deskthority.net/workshop-f7/blue ... ml#p185292
Fortunately, the SSK's matrix is pretty smart and hides its limited rollover well. That 122 key is the only IBM I've had with real, day to day computing, teeth gnashing rollover fail!
- beltet
- Location: Stockholm Sweden
- Main keyboard: Custom NerD60
- Main mouse: Saitek cyborg R.A.T 7
- Favorite switch: Ergo MX Clear
- DT Pro Member: -
I heard a spokesperson from mionix that said that the Microsoft sidewinder (x4?) Bypasses this in a smart way.
Will try to find it again.
EDIT: the x4 have a special tracing that allows it for up to 27 key presses. You would need to make a new matrix for this solution, and problaby another controller.
Edit2: http://www.tomsguide.com/us/Microsoft-S ... 508-2.html
Will try to find it again.
EDIT: the x4 have a special tracing that allows it for up to 27 key presses. You would need to make a new matrix for this solution, and problaby another controller.
Edit2: http://www.tomsguide.com/us/Microsoft-S ... 508-2.html
- hasu
- Location: Japan
- Main keyboard: HHKB
- Main mouse: HHKB
- Favorite switch: Topre
- DT Pro Member: -
Meanwhile Skydigital nKey-1 solved the problem with brute force 
http://en.skyok.co.kr/product.php?code=605
http://patentscope.wipo.int/search/en/WO2009119947

http://en.skyok.co.kr/product.php?code=605
http://patentscope.wipo.int/search/en/WO2009119947
-
- Location: Austria, Europe
- Main keyboard: Unicomp PC/5250
- DT Pro Member: -
- Contact:
I'd be very interested in how this 2009 patent application holds up. Adding a set of diodes to the keyboard matrix to prevent ghosting definitely falls under "prior art".
- wcass
- Location: Columbus, OH, USA
- Main keyboard: ibm model m
- Main mouse: kensington expert mouse
- Favorite switch: buckeling spring
- DT Pro Member: 0185
i actually did this and it does work. https://geekhack.org/index.php?topic=40111
I made the bottom "membrane" out of thin PCB and used one 1.5mm square diode array for each column. My biggest problem was with the poor quality of my DIY PCBs. Also, the custom top membrane was a bit expensive. When xwhatsit came out with a capacitive controller, i went that way.
If you want to do this, look at common anode TSV diodes like ...
http://www.digikey.com/product-detail/e ... ND/1680652
I made the bottom "membrane" out of thin PCB and used one 1.5mm square diode array for each column. My biggest problem was with the poor quality of my DIY PCBs. Also, the custom top membrane was a bit expensive. When xwhatsit came out with a capacitive controller, i went that way.
If you want to do this, look at common anode TSV diodes like ...
http://www.digikey.com/product-detail/e ... ND/1680652
- idollar
- i$
- Location: Germany (Frankfurt area)
- Main keyboard: IBM F or M
- Favorite switch: BS
- DT Pro Member: -
@wcass
I read the tread that you have pointed. Amazing work.
This was the idea that I proposed, but I never thought that it would be so complicated.
I could not find the picture of the "final product". Would you post one ?
Cheers
i$k
I read the tread that you have pointed. Amazing work.
This was the idea that I proposed, but I never thought that it would be so complicated.
I could not find the picture of the "final product". Would you post one ?
Cheers
i$k
- wcass
- Location: Columbus, OH, USA
- Main keyboard: ibm model m
- Main mouse: kensington expert mouse
- Favorite switch: buckeling spring
- DT Pro Member: 0185
From the top, the keyboard looks the same as it did in post 69. It is very primitive, but that thread is about NKRO and custom membranes - the keyboard is really just a proof of concept. The best "parts that work and how to put it together" pictures are in posts 172 and 174.
-
- Location: UK
- Main keyboard: Filco ZERO green alps, Model F 122 Terminal
- Main mouse: Ducky Secret / Roller Mouse Pro 1
- Favorite switch: MX Mount Topre / Model F Buckling
- DT Pro Member: 0167
i wonder if its possible to have a pcbs like xtant but to fit a model m case you could split the model m inner works and use the top of it and then put a new metal plate on the bottom and then hold it together with a boltmod ( model f springs and hammers )
now imagine all of that .......... in an SSK
now imagine all of that .......... in an SSK
- wcass
- Location: Columbus, OH, USA
- Main keyboard: ibm model m
- Main mouse: kensington expert mouse
- Favorite switch: buckeling spring
- DT Pro Member: 0185
NKRO becomes more needed as the number of chords goes up. Games often introduce new chords (hence that demand), but as keyboards get smaller, there too. Desirable for 60%, more so at 40%, and mandatory for stenograph.
- vvp
- Main keyboard: Katy/K84CS
- Main mouse: symetric 5-buttons + wheel
- Favorite switch: Cherry MX
- DT Pro Member: -
If we ignore stenography then gaming is the only thing, I can think of, which would require to detect more keys at once. One hands drives a mouse and second one is on a keyboard. We have five fingers on one hand so 5KRO should do.
- wcass
- Location: Columbus, OH, USA
- Main keyboard: ibm model m
- Main mouse: kensington expert mouse
- Favorite switch: buckeling spring
- DT Pro Member: 0185
The circuit design is the same for NKRO and [anything > 2]KRO. 6KRO keyboards are very common - these still have a diode at every switch. If N > 2 then the limitation on value of N is usually in the keyboard protocol.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Exactly. Was 6KRO ever popular before USB came along? PS/2 and AT and XT were all inherently NKRO protocols (without the baggage that makes USB simultaneously NKRO and 6KRO…). I have a 2KRO Acer that's PS/2, and PS/2 Model Ms were rollover limited as well but not as critically. 6KRO is odd because it surely needs an NKRO matrix yet throws the prize away.
- Panter
- Location: The Netherlands -> Europe
- Main keyboard: A terrible rubber dome
- Main mouse: Mousepad/cheap wired mouse
- DT Pro Member: -
A lot of time has gone by since this topic was active, but I believe there still isn't a solution to this problem. I do believe 5KRO or 6KRO would be good enough for most users, but the 2KRO must be keeping some people from using their Model M's completely irritation free.
-
- Location: US
- Main keyboard: Omnikey 102 Blackheart
- Main mouse: Kensington Expert Mouse
- Favorite switch: White Alps
- DT Pro Member: 0174
Photoshop used to, maybe still does, bind shift-control-alt-S to "Save for Web". That's the sort of key layout-- four in a square-- you'd expect to lock out on a naive matrix design. It's a corner case for sure, but I could see it failing on a common 2KRO design easily.
- idollar
- i$
- Location: Germany (Frankfurt area)
- Main keyboard: IBM F or M
- Favorite switch: BS
- DT Pro Member: -
The solution is the FSSK (working) and FEXT under prototyping phase:
workshop-f7/f-ssk-t10744.html
xwhatsit controller.
- Panter
- Location: The Netherlands -> Europe
- Main keyboard: A terrible rubber dome
- Main mouse: Mousepad/cheap wired mouse
- DT Pro Member: -
Thanks! I didn't know about the FEXT, and sort of forgot about the FSSK, probably because I prefer to have a numpadidollar wrote:The solution is the FSSK (working) and FEXT under prototyping phase:
workshop-f7/f-ssk-t10744.html
xwhatsit controller.

- idollar
- i$
- Location: Germany (Frankfurt area)
- Main keyboard: IBM F or M
- Favorite switch: BS
- DT Pro Member: -
Well, I will order some FEXT prototypes together with the FSSK. They even have a pad between the ALT and the CONTROL, right and left side. Lets see if it works as good as the FSSK does.
- Panter
- Location: The Netherlands -> Europe
- Main keyboard: A terrible rubber dome
- Main mouse: Mousepad/cheap wired mouse
- DT Pro Member: -
I'm going to spend the next few hours reading up on everything there is to know about the FSSK and FEXT, and I assume all of that will be on the forum?
- idollar
- i$
- Location: Germany (Frankfurt area)
- Main keyboard: IBM F or M
- Favorite switch: BS
- DT Pro Member: -
Read the first post here: workshop-f7/f-ssk-t10744.html#p231963
And follow the links. I have sumarised the 22 pages in the first post
Ask me if you have any question after this reading
- Panter
- Location: The Netherlands -> Europe
- Main keyboard: A terrible rubber dome
- Main mouse: Mousepad/cheap wired mouse
- DT Pro Member: -
Although I love a good summary, I couldn't help myself but read all 22 pages:Pidollar wrote:Read the first post here: workshop-f7/f-ssk-t10744.html#p231963
And follow the links. I have sumarised the 22 pages in the first post
Ask me if you have any question after this reading
The only question I have is whether there is a possibility to still connect this keyboard to an old ps/2 port? I have two computers, one old and one new, and really want to use one keyboard for both the computers.
- idollar
- i$
- Location: Germany (Frankfurt area)
- Main keyboard: IBM F or M
- Favorite switch: BS
- DT Pro Member: -
No, you cannot without a converter. The xwhatsit controller is USB only. You would need a USB to PS2 converter. I do not know if they existPanter wrote: Although I love a good summary, I couldn't help myself but read all 22 pages:P
The only question I have is whether there is a possibility to still connect this keyboard to an old ps/2 port? I have two computers, one old and one new, and really want to use one keyboard for both the computers.