Author Topic: NKRO Nonsense  (Read 39760 times)

0 Members and 1 Guest are viewing this topic.

Offline Phaedrus2129

  • Thread Starter
  • Posts: 1131
NKRO Nonsense
« on: Fri, 21 May 2010, 21:33:17 »
I posted this over at OCN because of all the stupidity over NKRO and key blocking/ghosting and people arguing whether the G11 has NKRO or not. I figure the terminology "NKRO" is actually not useful. Nor is "ghosting". I've set up a new, simple terminology. Open matrix or blocking matrix.




NKRO. 2KRO. Anti-ghosting. Blocking. USB-limited. Matrix. Keanu Reeves.


What does all this stuff mean? Who has time for this crap? Why did they ruin The Matrix with a ****ty sequel? Seriously, that was a good movie and this isn't a question?



I'm going to say, FORGET THAT CRAP. There's two different families of terminology, and neither is useful in today's keyboard world. I'm going to introduce a simple, clear terminology that makes all this confusing garbage make sense. Hopefully, anyway. You can forget NKRO and anti-ghosting, because they're confusing terms that don't help people understand what they're looking at without becoming keyboard geeks like me.

So let's get to it.



When you hit a key on your keyboard, you close a circuit. The circuit can be closed by the action of a collapsing rubber dome against a set of membranes, by action of a spring as it buckles catastrophically, as a pair of metal leaves pressing against a PCB, or even the discharge of a capacitive spring. However your keyboard is designed, you press a key and a circuit is closed. Specifically, two circuits are closed. These two circuits send a signal to your keyboard's controller, which looks at the circuits closed, then consults what's called a matrix (in the algebraic sense, not the Keanu Reeves sense). It uses the matrix to determine which key was pressed, then sends the code for that key to your computer.




Simple, right? What? No? YES IT IS TANJIT.

But it isn't always simple. What happens when you hit two keys simultaneously? When they're directly next to each other in the matrix, nothing happens. But if they're "diagonal"...



Here you've got the Q and the C, but there's a problem! The keyboard is also registering an E and a Z, because you've got intersections there. I'm going to ditch the regular terminology, because it's been corrupted and screwed up. This is called an ARTIFACT. Not a ghost. Got me? Good.

I am calling this type of key matrix a artifacting open matrix. It'll make sense in a minute.

Now, we can't have artifacts like that popping up. It'll cause problems while typing, and especially while gaming. So 99.999% of keyboards use BLOCKING to prevent this.



When you press C and Q, the keyboard's controller "blocks" all keys that could show up as artifacts. Thus only C and Q are sent, and not Z and E. But what if you *want* to hit Z and E?



You can't. You hold them down, but they don't register. They've been blocked.

I am dubbing this style of matrix a blocking matrix. This is the most common type of matrix found.


So what's the solution to this? How do you stop keys from being blocked? Simple. You unblock them. But what about artifacting? Simple. You remove the artifacting.

Whether by the addition of diodes to a PCB, or resistors to a membrane,  or running a pair of traces to each key, or by adding dark magic to the heart of the controller, you eliminate artifacting. A given circuit denotes one, and only one, key.



Thus when you want to hit keys that would normally artifact:



It's kind of hard to figure out by eye, but trust me, each key is denoted with no artifacting and no blocking.

This is a non-artifacting open matrix. You can leave off the non-artifacting part because artifacting is very rare and occurs only on the trashiest keyboards ever to leave the dark pit of China's manufacturing industry.


Sometimes keyboards with blocking matrices (plural of matrix) do a bit of "matrix judo" and switch the positions of letters in the matrix. That way they can move artifacts, and thus blocking, to areas of the keyboard where you don't notice. Other times they just make the matrix different to make it different. No keyboard has a straight up-down, left-right excel-style matrix like the one I laid out; that applies to the standard IBM matrix and a handful of others on that part of the keyboard only. It looks a lot more complex when you map it all out.

A non-blocking matrix keyboard can register any number of keystrokes with no blocking or artifacting. However, it may not send all of them to the computer. If it's PS/2, then all keys can be sent at once and it's called NKRO. If it's USB, then traditionally it's limited to 6 keys and 4 modifiers (ctrl, shift, etc.). But some companies have found a way around that, allowing 7 or 11 or 17 or 24 keys to be registered over USB. Using my terminology, you won't have to bother differentiating between the different levels of KRO. It's just blocking, or open (or non-blocking, I guess). Simple. And all the ghosting nonsense? Forget it. Really. It's a word with two meanings, and it's been giving TwoCables seizures since day one, so it's best left in the dust bin of stupid terminology for now.



Hopefully this has cleared the cobwebs somewhat. Rejoice.



They made the second and third movies ****ty because HOLLYWOOD IS RUN BY PRICKS K???
Daily Driver: Noppoo Choc Mini
Currently own: IBM Model M 1391401 1988,  XArmor U9 prototype
Previously owned: Ricercar SPOS, IBM M13 92G7461 1994, XArmor U9BL, XArmor U9W prototype, Cherry G80-8200LPDUS, Cherry G84-4100, Compaq MX-11800, Chicony KB-5181 (SMK Monterey), Reveal KB-7061, Cirque Wave Keyboard (ergonomic rubber domes), NMB RT101 (rubber dome), Dell AT101W

Offline Phaedrus2129

  • Thread Starter
  • Posts: 1131
NKRO Nonsense
« Reply #1 on: Fri, 21 May 2010, 21:54:25 »
The Model M is 2KRO actually. Try holding WED.

The problem is that many companies have bypassed the 6-key limit. Is it useful to have 2KRO, 6KRO, 7KRO, 11KRO, 12KRO, 17KRO, 24KRO, NKRO? No, it just confuses people.

In my terminology, blocking means 2KRO. Open means anything 6KRO and over. 6 keys is plenty for virtually anyone. It's a lot more useful and convenient to newcomers to be able to say, "Oh, it has blocking", or "No, it doesn't have blocking". If they're curious, explain the protocol limits of USB or whatever. I'm personally just sick of having to explain it to people at OCN.
Daily Driver: Noppoo Choc Mini
Currently own: IBM Model M 1391401 1988,  XArmor U9 prototype
Previously owned: Ricercar SPOS, IBM M13 92G7461 1994, XArmor U9BL, XArmor U9W prototype, Cherry G80-8200LPDUS, Cherry G84-4100, Compaq MX-11800, Chicony KB-5181 (SMK Monterey), Reveal KB-7061, Cirque Wave Keyboard (ergonomic rubber domes), NMB RT101 (rubber dome), Dell AT101W

Offline Rajagra

  • Posts: 1930
NKRO Nonsense
« Reply #2 on: Fri, 21 May 2010, 22:21:49 »
You have an error in that pressing two keys on diagonal positions to each other will not cause a problem. Only when three keys are pressed and two share a column or row in the matrix do problems start to arise.

Although the terminology is - shall we say arbitrary - I have a clear idea of what each term means to me.

"N-key rollover". Has been long-used to describe keyboards able to deal with any number of simultaneous keystrokes. Clearly comes from mathematical phrasing (in particular proof by induction) that engineers would be familiar with: Statement(n) is true for values of n from 1 to infinity. N-key rollover simply means that rollover works for all values of n, i.e. any number of keys can be "rolled over" and still be detected reliably.

Ghosting. The illusion that keys are being pressed when they aren't actually held down. The falsely detected keys are phantom keypresses, or ghosts.

Anti-ghosting. A vague term. Could refer to a design that eliminates the possibility of ghosting, or could refer to blocking of ghost keys (see below.) In practice it usually  means the latter when manufacturers list it as a feature.

Blocking. Blocking of key detection when there is the possibility that said detections are ghosts. This is saying: when in doubt, assume keys are not held down if that is consistent with the evidence. Note that this does not fix the problem. It just replaces false positive results with false negative ones.

You seem to believe that artifacts (your word for errors) are rare except in the cheapest boards. I assure you that is not true. EVERY keyboard with simple on/off switches in a matrix, that lacks n-key rollover, WILL experience artifacts by pressing as few as three keys (though it might be hard to find problem sets of 3 if the matrix has been well thought out.)

Offline Infinite north

  • Posts: 162
NKRO Nonsense
« Reply #3 on: Fri, 21 May 2010, 22:30:07 »
Blew my mind.

Offline Rajagra

  • Posts: 1930
NKRO Nonsense
« Reply #4 on: Fri, 21 May 2010, 22:54:50 »
P.S. I propose my own new terminology, based on how easily a keyboard can be confused. I call it the Confusable Rating:

  • CR:2. 2-key Confusable Rating. Can only reliably cope with 1 key at a time. You won't find any of these on PCs (I hope!) but simpler devices may have them.

  • CR:3. 3-key confusable. Might work with 1, 2, 3 or even more keys if you are lucky. But some combinations of 3 keys will cause ghosting or blocking - whatever you call it, an incomplete or inaccurate detection of what keys are being pressed at that moment. This describes most keyboards on the market.

  • CR:7. 7-key confusable. Can detect any combination of 6 keys. More may make it fail. This would describe a keyboard that is natively n-key rollover capable, but is connected by USB using the standard protocol.

  • CR:18. 18-key confusable. Microsoft's X4 keyboard can in theory handle any combination of 17 keys. Often more, but 17 is the maximum that can be guaranteed. (Real world testing may have revealed this number to be overambitious.)

  • CR:N. Non-confusable, or unconfusable. Not limited at all. E.g. a proper n-key rollover keyboard connected by PS/2.
Other values can be used. E.g. the original DAS III claimed it could handle any 12 keys despite using USB, so would be CR:13 under my system.

There you go. A scheme that is clearly defined, simple, meaningful and useful. You will probably never hear of it again.


EDIT> I could be harsh and describe Microsoft's X4 as CR:2 because it can only cope with one Media Control Key and one SideWinder Gaming Macro key at a time. But if you exclude those classes of keys it would be CR:18.
« Last Edit: Fri, 21 May 2010, 23:10:21 by Rajagra »

Offline audioave10

  • Posts: 498
NKRO Nonsense
« Reply #5 on: Fri, 21 May 2010, 22:55:55 »
Yes, ghosting should stay as monitor & video terminology.
DECK Legend "Toxic" - SOLD
96 IBM Model M 82G2383- 95 IBM Model M 92G7453 - SOLD
Cherry G80-3000/Blues
new: MechanicalEagle Z77 RGB/Blues

Offline Phaedrus2129

  • Thread Starter
  • Posts: 1131
NKRO Nonsense
« Reply #6 on: Fri, 21 May 2010, 23:07:25 »
The point is that 6KRO vs. NKRO is moot. They're both natively NKRO capable, but one is limited by the USB bus so you can't call it NKRO. I get around that by saying "blocking matrix" which is standard 2KRO, and "open matrix" which is anything with the circuitry for NKRO, regardless of the interface.

That's all.

You don't need to be able to delineate between 6KRO, 11KRO, 17KRO, and NKRO. They don't matter, because we only have so many fingers. So it's 2KRO, vs. everything else.
Daily Driver: Noppoo Choc Mini
Currently own: IBM Model M 1391401 1988,  XArmor U9 prototype
Previously owned: Ricercar SPOS, IBM M13 92G7461 1994, XArmor U9BL, XArmor U9W prototype, Cherry G80-8200LPDUS, Cherry G84-4100, Compaq MX-11800, Chicony KB-5181 (SMK Monterey), Reveal KB-7061, Cirque Wave Keyboard (ergonomic rubber domes), NMB RT101 (rubber dome), Dell AT101W

Offline Phaedrus2129

  • Thread Starter
  • Posts: 1131
NKRO Nonsense
« Reply #7 on: Fri, 21 May 2010, 23:53:37 »
You see why I need to educate these people? lol
Daily Driver: Noppoo Choc Mini
Currently own: IBM Model M 1391401 1988,  XArmor U9 prototype
Previously owned: Ricercar SPOS, IBM M13 92G7461 1994, XArmor U9BL, XArmor U9W prototype, Cherry G80-8200LPDUS, Cherry G84-4100, Compaq MX-11800, Chicony KB-5181 (SMK Monterey), Reveal KB-7061, Cirque Wave Keyboard (ergonomic rubber domes), NMB RT101 (rubber dome), Dell AT101W

Offline Rajagra

  • Posts: 1930
NKRO Nonsense
« Reply #8 on: Sat, 22 May 2010, 00:07:51 »
Quote from: Phaedrus2129;185602
You don't need to be able to delineate between 6KRO, 11KRO, 17KRO, and NKRO. They don't matter, because we only have so many fingers. So it's 2KRO, vs. everything else.


Once you accept that these things don't matter, you are giving manufacturers permission to provide inferior products for no good reason. USB never needed to be saddled with a 6 key limit. Someone just decided "hey, *I* never use more than 6 keys, let's not bother to do this job properly, it's too much hard work." And that's why people can't use USB keyboards for recording music chords today. Today it's musicians who suffer. Tomorrow gamers. Eventually fast typists. (In fact fast typists here have already found other problems where keyboards become unreliable because manufacturers have designed them badly, under the assumption that it doesn't matter.)

The distinction between 2KRO and better is the important one. But there's no harm in having a precise understanding of the actual limits.

Offline Infinite north

  • Posts: 162
NKRO Nonsense
« Reply #9 on: Sun, 23 May 2010, 04:11:42 »
I would prefer to know that something is functioning as I want it to. I know that I don't need to press every key on my keyboard at once. nkro is just peace of mind as far as knowing when I want my keyboard to do something it will do it. for me even 18-kro makes me wonder why they cant get the rest of the keys to function. I am sure it would work fine but I would always figure there would be some issue somewhere.

I understand that the main reason for nkro is gaming. in all reality it isn't a big issue if something goes wrong in a game. unless you are playing for money you are playing for fun so it isn't life or death. you aren't really a soldier with a jammed gun. my issue is if I am going to spend money on something built for a niche it should function perfectly for it's task or I am wasting money.

The fact that the market is dominated by garbage where the main feature is lighting up is pretty pathetic. even the companies that try to act serious don't really provide anything above the bling providers. or if they do it's something that is already on the market (7g compared to a filco or das). I mean I don't know where I could go to a retail store and find a nkro mechanical. I am sure I could find plenty of gaming keyboards but nothing that I would really appreciate for its quality or attention to detail. I guess I am just tired of over paying for cheap junk.

Offline In Stereo!

  • Posts: 173
NKRO Nonsense
« Reply #10 on: Sun, 23 May 2010, 06:06:37 »
Quote from: Infinite north;185959
(7g compared to a filco or das)


I'd regard this as something positive; although I'd take a Filco instead of the 7G anytime, but the SteelSeries is readlily aveilable even in actual stores that are located in my vicinity. Which is good.

Offline timofonic

  • Posts: 59
NKRO Nonsense
« Reply #11 on: Wed, 02 June 2010, 22:51:38 »
I'm a Model M user.

Let's see I want to make music with my keyboard, or whatever insane application...

Are there some keyboard controller replacement to making it full NKRO?

It's possible to make NKRO over USB with non-standard drivers?

Offline maxlugar

  • Posts: 379
NKRO Nonsense
« Reply #12 on: Wed, 02 June 2010, 23:19:33 »
Quote from: timofonic;189063
I'm a Model M user.

Let's see I want to make music with my keyboard, or whatever insane application...

Are there some keyboard controller replacement to making it full NKRO?

It's possible to make NKRO over USB with non-standard drivers?


No. The Model M is a membrane keyboard. It cannot be converted to NKRO.  Keyboards with individual mechanical key switches (i.e. ALPS or Cherry switches) can be made NKRO if you solder a diode onto each individual switch.

The IBM 84-key PC AT Model F uses buckling springs over capacitive contact key switches.  When connected via the ps/2 port, it is truly NKRO.  ALL of the keys on the AT Model F can be engaged simultaneously.

That's only one reason the AT Model F is technologically superior to the Model M  :)
Emperor of the IBM 84-key AT Model F Darkside

Offline maxlugar

  • Posts: 379
NKRO Nonsense
« Reply #13 on: Wed, 02 June 2010, 23:53:41 »
Quote from: ripster;189073
That's what I said.

Except for that technologically superior crap.


I didn't see your post before I typed mine.

Besides, that technologically superior crap is true... and you know it!
Emperor of the IBM 84-key AT Model F Darkside

Offline timofonic

  • Posts: 59
NKRO Nonsense
« Reply #14 on: Thu, 03 June 2010, 00:00:18 »
Anyway...

Why not change the entire board? I mean having the original mechanical part, but replacing the board with the contacts on it.

That way it's possible to have the best of both worlds, right? :D

Anyway, I don't see why can't be improved. Maybe I don't understand how Model M works...

Offline maxlugar

  • Posts: 379
NKRO Nonsense
« Reply #15 on: Thu, 03 June 2010, 00:08:56 »
Quote from: timofonic;189083
Anyway...

Why not change the entire board? I mean having the original mechanical part, but replacing the board with the contacts on it.

That way it's possible to have the best of both worlds, right? :D

Anyway, I don't see why can't be improved. Maybe I don't understand how Model M works...


The geekhack wiki is your friend.  It contains a wealth of fascinating information.  You should take a look at it when you have some time. The wiki will provide answers to many of your questions.
Emperor of the IBM 84-key AT Model F Darkside

Offline maxlugar

  • Posts: 379
NKRO Nonsense
« Reply #16 on: Thu, 03 June 2010, 01:17:46 »
Quote from: ripster;189106
See the discussion part of this mod as well for why modding a Model M to Nkey is just not gonna happen.


Jesus god!  I missed that whole thread.  That certainly was an exercise in futility  :)
Emperor of the IBM 84-key AT Model F Darkside

Offline maxlugar

  • Posts: 379
NKRO Nonsense
« Reply #17 on: Thu, 03 June 2010, 01:56:31 »
Quote from: timofonic;189083
Anyway...

Why not change the entire board? I mean having the original mechanical part, but replacing the board with the contacts on it.

That way it's possible to have the best of both worlds, right? :D

Anyway, I don't see why can't be improved. Maybe I don't understand how Model M works...


One of our esteemed members (who just happens to be a medical professional) recentely attempted to do exactly what you are proposing:  an attempt to merge Model M and Model F components.  See this post  http://geekhack.org/showpost.php?p=188928&postcount=281

No go.  The only thing the Model M and Model F have in common are buckling springs, and even those are not exactly the same.
Emperor of the IBM 84-key AT Model F Darkside

Offline timofonic

  • Posts: 59
NKRO Nonsense
« Reply #18 on: Sat, 05 June 2010, 20:47:07 »
There's HOPE again...

Quote
Anyway, to introduce myself, I'm working on a gaming mod fer 101 and 122 key IBM Model M keyboards.
The first step is documenting modifying the things to be USB keyboards without dropping simultaneous keypresses. Towards this end I've been working on a ps2 signal->USB converter that can handle either 101 or 122 key M's without promulgating that BS 'max 6 keys plus modifiers' tripe. That only applies to keyboards in boot mode - neither linux nor macs, nor 'dose forces that fer HID devices, the HID USB spec even describes how keyboards are supposed to implement their descriptors once a USB aware OS is booted. /endgripe

The next part, however is dealing with the ghosting inherent to matrix keyboards... much pain here resides. Thus I am currently hacking around with replacing bottom matrices, trying to read resistances to better than 1% while retaining the original matrix, etc...

'Yeah, I'll release my code under an open license, but... it's not cleaned up yet' (how many times have we heard that one before?)

So, I've used a number of the ideas from this site, so I think this is where I'll hang out and feed back my smaller tricks/ideas back into the community.
Wish me luck. :)

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #19 on: Sun, 06 June 2010, 09:31:41 »
Ok , timofonic dragged me post over to this thread which seems more alive, and I took a look at the 'thread of futility' where folks repeat the mantra that membranes => no nkro.

  If one is willing to sacrifice a membrane, then the bottom one is the candidate. I am preferring to use scraps of mylar for my experiments, though, until I have the evil sorted out.

  If one wants to keep the layout of the membranes as is, say, to support the original controller or some madness (I'm pessimistic: it will still check for ghosting, and depending on what logic it uses, it might still deny you keystrokes, even though you've added a bazillion diodes.)

  Regardless of the plan, I've poked around with the silver-ink pens, and defroster-repair ink-kits. The ink kits are much cheaper, but not quite as keen. The pen deposits an ink which can actually be soldered to if you are insanely careful.

  So, if one wanted to retain the original pads, scrape the original traces, and run yer own, you'll need 100 of em (or 122 :), just for the bottom sheet. This would likely burn through an entire rework pen, and they run around $20-$30, depending on where you found one. The repair ink is not in a pen, and I haven't determined a good way to lay down nice fine lines with it - but it's only about $10ish, depending.

  Fine motor wire, say, from a solenoid or relay (easier to unwind than a motor) can be used instead for the traces. Some careful ironing will seat it between the middle and bottom membrane nicely, and then a spot of the repair ink will connect it to the stub of the original contact.

  Once you have yer 100 (or 122 fer my keyboards) lines dragged up to the edges, they'll need to be soldered onto something and ideally have a protective flexible connector of some sort, like the original connectors. Being actual wire, though - one can solder it. So - one wants the thin wire with a lacquer layer, not the oxide stuff. unattributed quote from several places on the interwebs: 'By inserting the end of a lacquered wire into a molten ball of solder, the end gets tinned properly, without overheating and oxidizing like with the torch trick.'

  This is one line of inquiry, I am experimenting on the membranes of old PS2 keyboards, from the early 90s - non IBM, clearly.

  Personally, my favourite idea is to entirely replace the bottom membrane. One could be ordering some of that expensive copper-clad mylar or kaxon(sp?) stuff, and etching one, or alternately, run a mess of normal, but thin, rigid, long fibreglass horizontal boards. If one could get them in a thickness lower than 1/16th all the better - because that 16th is going to wreak havoc on the spacings between the bottom and top of the keyboard.

  Anyway, I've got some copper foils, I can stick them to mylar, etc... then etch them - this gets me copper pads on the bottom. The main thing that troubles me, is that the ink on the top is silver based, so the copper pads at a minimum need good tinning, but ideally a nickel or even nickel-silver electroless wash. If this is not done, even these minimal currents will eventually cut the contacts due to electrolytic corrosion.

  The reason I don't want to make a copper top membrane too, is that copper foil is pretty well annealed - the IBM hammers slowly dent it, eventually shorting the switch. I confirmed this.

  Now, folks make switches all the time, one can harden the top pads, or use brass etc... but this be too far for me.

   I might just make a copy of the top membrane using the defroster repair ink. The top membrane can be pretty simple, it doesn't need the crazy diode connections if the bottom has them.  The repair ink is actually copper plated silver particles - how it behaves as a contact against pure copper or tin or tin-lead, I don't know, and my electrochem corrosion theory is weak. If it is not going to wreck any original IBM bits, I don' really care, though - just need to monitor it periodically.

  Clearly, if both the bottom and top membranes are being replaced, then there is no need to do all the crazy ziggy stuff what IBM does to minimize phantoms while in home-row. A straight grid with diodes will do the job.

  If anyone knows any chemistry on the silver-bearing inks, I'd be keen to know how to thin the stuff. Is all so proprietary, each ink wants one to use their analogous brand of thinner. Mine seems to be based on ethyl acetates and ethanol as solvents... If I could thin it, I could try using it for coating bottom pads, since it would only need to pass current through the layer, not across.

Ok, that's enough brain dump. I'll try to post some pics of experiments soon - nobody likes the 'wall of text'. :}

dfj
Fave Switch manus: IBM, Topre, Matias, ...

Offline ch_123

  • * Exalted Elder
  • Posts: 5860
NKRO Nonsense
« Reply #20 on: Sun, 06 June 2010, 09:51:34 »
Bare in mind that the controller also has to support NKRO, it isn't sufficient to just have diodes.

If you're interested in 122-key buckling spring keyboards, I'd just get a Model F one and do a cable swap to make it PS/2 compatible. That way you have NKRO without modding the circuitry and nicer feeling switches too...

Offline Phaedrus2129

  • Thread Starter
  • Posts: 1131
NKRO Nonsense
« Reply #21 on: Sun, 06 June 2010, 09:52:54 »
Quote from: ripster;190058
Well, you could stick a Microsoft Sidewinder X4 keyboard membrane and controller into a Model M2 buckling spring assembly and get some keys.    Still not true N-key but good enough.

Show Image


Does that work?
Daily Driver: Noppoo Choc Mini
Currently own: IBM Model M 1391401 1988,  XArmor U9 prototype
Previously owned: Ricercar SPOS, IBM M13 92G7461 1994, XArmor U9BL, XArmor U9W prototype, Cherry G80-8200LPDUS, Cherry G84-4100, Compaq MX-11800, Chicony KB-5181 (SMK Monterey), Reveal KB-7061, Cirque Wave Keyboard (ergonomic rubber domes), NMB RT101 (rubber dome), Dell AT101W

Offline ch_123

  • * Exalted Elder
  • Posts: 5860
NKRO Nonsense
« Reply #22 on: Sun, 06 June 2010, 09:55:06 »
Probably not. No guarantee that the membrane-to-controller interface is compatible.

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #23 on: Sun, 06 June 2010, 18:07:23 »
The count of the rollover is a bigger deal if you try to play any two-player MAME games on a nice big Model M. The count also hits one if typing like mad without getting the fingers off of the keyboard - the M's seem to have at least a 10 char buffer, and seem to be able to handle a typist nailing a key with every finger in home-row, and then lifting them out of sequence - without losing track of any events. A distinction needs to be made between how many simultaneous keys the keyboard can handle (about ten - if you keep your hands in place) vs which keys the board can distinguish for vulcans... any two keys, but the wrong third will nail you.

  My main trouble is that I like to have my left hand at an angle to the keyboard, rather than rotating the keyboard - this lets my hand generate the ghosts we hate so much.  If I just wanted a modern gaming keyboard, and din' want me buckling springs, then yeah:  I'd just order an Elite or similar - the cherries aren't too bad at all.

  I have yet to source a 122 F, unfortunately, and they are not available in quantity, these days - using rare hardware would not let other folks replicate my work (assuming they were so bizarrely motivated.)

  122 Ms can be found relatively easily on them auction sites, currently. When that fades, places like Unicomp will still be selling the later versions - imho they need some frame stiffening, etc... but the keys are right, even without the nice removable  keycaps. :(

  Anyway, the proof is pudding - I will either find a sane way to do this, or there will at best only be a couple of flaky versions that even me and my friends are loathe to use for online gaming. :)

  This is next part of my mod, anyway - it is not 'cracked' yet - it is merely what I am currently banging on. The goal is that it slot into one of the open controller mods - 101 or 122 -> USB, or a teensy++, etc... It might require modifications to the matrix handling code. Clearly I would produce that patch, should I be so malign as to distribute plans for yet another M matrix.

  I ended up replicating much of the work of the 122-M -> USB folks here, so while that work is closer to release it is mostly code, thus doesn't photo well. Mumble: must revisit their work - not sure if they got it working before the thread stalled - or it might have jumped to a new thread. I have the bits lying around to test their work - should really give it a poke.

yup,
as always, thanks fer yer thoughts.
dfj
Fave Switch manus: IBM, Topre, Matias, ...

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #24 on: Sun, 06 June 2010, 19:05:12 »
Oh right - as far as supporting a few frustrating ghosts here and there - this is definitely easier (for me) to support in firmware.
  When a collision is detected, normally one just throws the hands in the air, toss an error code at the host, then pretend nothing happened. If yer an RS 6000 M, then you might emit a plaintive 'meep' with yer speaker, as well. :)

  If there are just a few frustrating ones (the membrane cluster about E,R,D,F is my personal bane) then one can do an analog read and try to distinguish the resistances on the trace. The short lowers the resistance by at least 1%, usually a fair bit more but those my particular keys are pretty tight. The AVRs ADCs have nominal accuracy to detect this, but this close to the edge so one will want to do a longer read to get a good value. Whether doing short or long reads, though the ADCs on the things are slow. (mumble: 10 bits might want a 200 khz ADC clock, infrequent reads will cost the full 25 ticks at 5us/tick -> 125 us per line read.) Thus only a few 'important' lines could be read this way per ms. It also will wreak havoc on the atmega32 based implementation folks are working on here, as it doesn't have enough pins to do the 122 keyboards, so they're hacking on a multiplexer... Fer a bigger chip, enough pins are available, but this is surface-mount land - I don't want to do that to my victims^Henthusiasts. Fer a 1391401, and an Atmega32, this is a doable hack, though. Alternatively, a Teensy++ or similar can handle the 122s without multiplexing. An analog multiplexer is another option, but this is a bit much fer only a few wires of disambiguation.

  Nice thing about the current solution over in 'a cheap USB controller fer Ms':
http://geekhack.org/showwiki.php?title=Island:8406&do=comments&page=17
(less the custom board order) is that it is cheap fer students etc...

  I think this is an idea to aspire to. I kinda feel like using one's personal adult-budget to develop hacks using the best bits that happen to be worth one's time and money to deal with is total wankage. Some bloke linked on hackaday recently solved a problem using 64 some-odd FPGAs to solve a problem involving LEDs... I don't have language to describe that sort of overkill.

  Using one's resources to develop and research a (perhaps extremely labour intensive) solution that others can reasonably follow - I guess it appeals to the open-source fan in me.
Fave Switch manus: IBM, Topre, Matias, ...

Offline kishy

  • Posts: 1576
  • Location: Windsor, ON Canada
  • Eye Bee M
    • http://kishy.ca/
NKRO Nonsense
« Reply #25 on: Sun, 06 June 2010, 19:13:05 »
What's that about 122-key terminal keyboard work?

AFAIK I was the only one physically building a version of the USB controller for a 122-key but there could have been others who never said so. I ran into stupid problems along the way that really killed my interest in it but I'll be revisiting eventually...

In the meantime it's usable on PS/2 if I feel like using it.
Enthusiast of springs which buckle noisily: my keyboards
Want to learn about the Kishsaver?
kishy.ca

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #26 on: Sun, 06 June 2010, 19:33:52 »
Quote from: ch_123;190183
Bare in mind that the controller also has to support NKRO, it isn't sufficient to just have diodes.

If you're interested in 122-key buckling spring keyboards, I'd just get a Model F one and do a cable swap to make it PS/2 compatible. That way you have NKRO without modding the circuitry and nicer feeling switches too...


  Yup, totally - the ghosting detection can easily not support nkro, even with diodes - mind, they don't have to detect a problem if you are using diodes. I think it depends on the particular logic used. I don't have the tools (or motivation) to reverse engineer the controllers myself - they are almost always write-once, thus better replaced with a general purpose micro than hacked.

  Already mentioned, but I'll say again - I'll get me an F just as soon as I can. All that will be needed to support it generally will be the same 122->USB converter that is needed for all 122s. Under linux you can stuff a 122 in after converting to a PS2 cable, but on windows vista and seven, or any mac, you need to get it into USB HID-land for real use.
  The driver delta that worked on XP no longer works on vista+. Remapping all the keys is viable, but one better have a USB keyboard handy as a backup for when you want to fiddle with yer BIOS. As far as Macs go - you are looking at USB... well... some of the intel mac laptops have a PS2 controller hidden on the mainboard, so some evil is actually possible.
  Course given that the 122s are already somewhat working with Macs via USB this is not a sane approach... besides, my ex wouldn't let me inside her powerbook anyway.

  And finally a question: You mention a Filco Tenkeyless Otaku in yer .sig: Do those only support PS2 mode 2, or can they be driven in mode 1 or 3?
  The Elite page claims they only support the nkro for PS2, but not fer USB. I have code to convert a PS2 signal in mode 3 to USB while retaining nkro, but I haven't written mode 2 yet... nor do I really want to, unless there are enough decent keyboards with broken mode 3 that converting from mode 2 is the only way to go - and there are folks out there who actually want to retain nkro in USB mode.
Fave Switch manus: IBM, Topre, Matias, ...

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #27 on: Mon, 07 June 2010, 13:41:16 »
Quote from: ripster;190386
drj, you obviously know your stuff!  Go for it!!

The Filco's that are called NKRO are NKRO in all the testing I've done.  I don't know how to determine what mode they are in but I would think only mode 2.   If there's a quick easy test I can try it.


Grr easy test... not sure. I think there was a DOS command, but it won't work unless one actually booted into a dos-a-like. Linuxes can do it, I will look into how, and get back if there is an easy way to do it from an extant install (assuming you have one) or whether it can be seen and tested during a live-boot for say, Ubuntu.
  Getting the things out of mode two while windows is running is a bit of an art - I used a cheap kvm for that, and it only worked because the terminal keyboards only know about one mode: mode 3, so refuse the kvm's demand to switch to mode 2. on switching back to 'dose, the kvm has lied and claimed it was in mode two, so now you have an OS thinking the kb is in mode 2, and the kb actually being in mode 3 - hence everything needs to be remapped for it to be fun.
  So, yeah - I'll get back to you if I spot an easy test. In the meantime I'll just send a message to the Elite folks and ask them. :)
  Oh if you are curious whether your kb is supporting full nkro through USB, you can just hold down "asdf", then hit "jkl;", if they are sticking to the 6 char limit, you might get a beep. Ideally, they are not, and it will just work fine. The thing that is nice, even with only 6 chars, is that they can be any character.
 yup.
Fave Switch manus: IBM, Topre, Matias, ...

NKRO Nonsense
« Reply #28 on: Mon, 07 June 2010, 14:17:40 »
Quote from: ripster;185595
Whoops, Model M is 2 key rollover.  ASX blows it up.  I blame it on memory ghosting.

The Microsoft explanation ain't bad.  And more importantly you can test key combos NEEDED IN A SPECIFIC GAME.

Not just games. The Model M blocks CAPS+SHIFT+s which is a ***** if like me, you use CAPS as CTRL and have the old CTRL keys mapped to other stuff.

Good thing Emacs doesn't normally use CTRL+shift combinations.
Current collection: HHKB Pro 2 black on black, HHKB Pro 2 white/grey blank, [strike]Dell AT101W[/strike] (sold to SirClickAlot), 1992 Model M, Key Tronic Ergoforce KT 2001, BTC 5100 C. Dead boards: MS Natural Elite, MS Natural 4000.

Offline aegrotatio

  • Posts: 334
NKRO Nonsense
« Reply #29 on: Mon, 07 June 2010, 15:28:49 »
Quote from: Superfluous Parentheses;190559
Not just games. The Model M blocks CAPS+SHIFT+s which is a ***** if like me, you use CAPS as CTRL and have the old CTRL keys mapped to other stuff.

Good thing Emacs doesn't normally use CTRL+shift combinations.


Very interesting.  Have you tried using the keypad?
I'm not sure what kind of magic is being used but the keypad works well on my Model M for gaming.
Daily Drivers: Ducky DK1087XM || DSI ASK-6600 || Rosewill RK-9000 BL, BR, BL, and RE || ABS M1 || Das Keyboard Silent || HHKB Lite and Lite 2 || DSI Big Font (kids love it)
Yearning for: Any ALPS keyboard || Any tenkeyless mechanical keyboard
Permanent collection: Poker Blue and Brown || Adesso MKB-125B || SIIG MiniTouch Geek Hack Space Saver || Chicony 5181 Monterey Blue || Chicony 5191 Clone Cherry Blues || Key Tronic 3600 || Unicomp Endurapro & SmarTrex || A crate of IBM Model M and Model M Space Saving boards || NeXTstation Slab || Amiga 3000 || BTC-5100C black and beige || SIIG MiniTouch Plus black and beige
Retired collection: SIIG MiniTouch Monterey Blue || Razer BlackWidow

NKRO Nonsense
« Reply #30 on: Mon, 07 June 2010, 15:34:11 »
Quote from: aegrotatio;190606
Very interesting.  Have you tried using the keypad?
I'm not sure what kind of magic is being used but the keypad works well on my Model M for gaming.


Erm... There's no SHIFT, CTRL or S on my model M's keypad :)

And I don't play games.

Except Global Thermonuclear War.
Current collection: HHKB Pro 2 black on black, HHKB Pro 2 white/grey blank, [strike]Dell AT101W[/strike] (sold to SirClickAlot), 1992 Model M, Key Tronic Ergoforce KT 2001, BTC 5100 C. Dead boards: MS Natural Elite, MS Natural 4000.

Offline Mnemonix

  • Posts: 163
NKRO Nonsense
« Reply #31 on: Mon, 07 June 2010, 16:15:00 »
Quote from: dfj;190382
Yup, totally - the ghosting detection can easily not support nkro, even with diodes - mind, they don't have to detect a problem if you are using diodes. I think it depends on the particular logic used. I don't have the tools (or motivation) to reverse engineer the controllers myself - they are almost always write-once, thus better replaced with a general purpose micro than hacked.


For the record, my firmware can support matrices with diodes. You need to define NO_GHOSTKEY_PREVENTION in order to make the code not detect a potential ghosting problem. I couldn't really test this mode, though, for obvious reasons...

Quote from: kishy;190380
AFAIK I was the only one physically building a version of the USB controller for a 122-key but there could have been others who never said so. I ran into stupid problems along the way that really killed my interest in it but I'll be revisiting eventually...


I haven't heard of others trying to build one either. You can still be first! :)

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #32 on: Tue, 08 June 2010, 00:29:16 »
Quote from: Mnemonix;190636
For the record, my firmware can support matrices with diodes. You need to define NO_GHOSTKEY_PREVENTION in order to make the code not detect a potential ghosting problem. I couldn't really test this mode, though, for obvious reasons...



I haven't heard of others trying to build one either. You can still be first! :)


Totally - Kish deserves the first!

Mnemonix:
  I'm prototyping a board right now to play with yer code - want to figure out where kish got bent...
 
Kish: how far along where you? I saw a mess of logs near the end suggesting you were having trouble getting bytes onto yer chip... was that the last bit? Is there more pain I have yet to meet?

Mnem:
  And yeah, I took a glance at yer ghostage detection, looked healthy - I remember the dulcimer bloke being a little sketchy on the issue last year.

(The MS description is an uncommonly friendly description thereof, though why they claim with their fancy keyboard they are able to support a 'whopping 16 keys, plus metas and macros' I don' understand... clearly they are not using the default HID descriptor, yet they are still limited by in in some fashion? bah!)

   My junk pile is totally out of hand: turns out that I had all the bits needed largely lying on my bench already - had to grab the caps, 12MHz ticker and the 32 from a drawer across the room, though.
  Anyway, I'm just going to throw some blinkenlights onto it, then mebbe a hex image for a 1391401 to see how it is 'supposed to work'
  Then I'll try to build the thing and make sense of yer python? code to make the matrix headers.
  So, um, where does it build? It doesn't seem to like cygwin under 'dose, but no-one sane tries to support that particular config anyway. :)
  I'm guessing normal linux, /w libusb, perl, python, and the avr chain?

dazed, but still curious,
dfj
Fave Switch manus: IBM, Topre, Matias, ...

Offline kishy

  • Posts: 1576
  • Location: Windsor, ON Canada
  • Eye Bee M
    • http://kishy.ca/
NKRO Nonsense
« Reply #33 on: Tue, 08 June 2010, 00:40:59 »
Hehe, I'd like to still be first.

I've had offers of assistance from a member in the IRC channel but I'm not patient enough to go back at it quite yet. "IRL" priorities coming first as it is so it may be another week or two...or three, or thirty-two...time has a habit of really screwing stuff up for me.

Yeah, the problem symptoms were I couldn't get stuff to program correctly, on two different computers with two different operating systems with two different programmers with multiple chips with three different versions of avrdude. Greater, but still partial success started happening when I skipped the fuse programming part (leading me to believe I have faulty or not-quite-right crystals) but the flash still failed.

As a troubleshooting measure another member offered to set up an AVR as needed and mail it off to me but he's got real life to attend to first so in the meantime I'm keeping my mind in other places.
Enthusiast of springs which buckle noisily: my keyboards
Want to learn about the Kishsaver?
kishy.ca

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #34 on: Tue, 08 June 2010, 00:55:13 »
Quote from: Superfluous Parentheses;190614
Erm... There's no SHIFT, CTRL or S on my model M's keypad :)

And I don't play games.

Except Global Thermonuclear War.


Ugh, yes - the caps is not a meta. Worse, the 122s in default mode don't even track up-keystrokes for  number of the events, including I fear, the caps key.

 Glad I like my ctrl under my shift - and particularly since a little thought clearly shows that setting the caps to be ctrl would be pretty sweet - letting one hit most of the keys easily with even ctrl,shift and alt out to R, though past that column is a bit much fer my hands.
  Hmm - it's not a _huge_ advantage, mind - my palms don't hit the ctrl, so I would just get one vulcan - the use of 'meta-meta-... R'
  Most of the folks who want to do that swap that I know grew up on other keyboards.

  But - thanks for pointing out a non-daft-gaming example of normal matrices biting a dev.
 
  Ok - lessee, rekindle kish's interest on the 122, get the kbupgrade stuffs to build...
Then I can try out my simplest plan fer replacing a bottom membrane: They sell this stuff near me called 'slug tape', but it's actually just 1.5ish  gauge (or mil, I forget, but it's the right thickness fer etching copper) copper foil, well annealed, with a sticky back. The sticky back doesn't like heat that much, so I'll either not solder it much, or stick the front down instead, with a different adhesive, then dissolve off the original backing. Stick it to mylar, since it's not too hard to find, and I have lots.

This will be good, though, it makes fer photos. :}

ugh... must sleep.
nuts.
dfj
Fave Switch manus: IBM, Topre, Matias, ...

Offline Mnemonix

  • Posts: 163
NKRO Nonsense
« Reply #35 on: Tue, 08 June 2010, 15:00:10 »
Quote from: dfj;190798
Anyway, I'm just going to throw some blinkenlights onto it, then mebbe a hex image for a 1391401 to see how it is 'supposed to work'
  Then I'll try to build the thing and make sense of yer python? code to make the matrix headers.
  So, um, where does it build? It doesn't seem to like cygwin under 'dose, but no-one sane tries to support that particular config anyway. :)
  I'm guessing normal linux, /w libusb, perl, python, and the avr chain?


I don't think you'll need Perl (anyone still using it? ;) ), but apart from that your list seems to be complete (plus autoconf and automake for building from Git repository (OK, then you'll need Perl, too)). Cygwin may also work (dunno), cross-compiling with MinGW should work as well. The only catch is that two versions of libusb are required because the bootloadHID program (not written by me) needs an ancient version of libusb; it should really be ported some day...

To build, run the configure script with correct arguments (see configure --help) in order to generate the Makefiles, then run "make". If you've cloned the Git repository and didn't download the tarball from Sourceforge, run "autoreconf -i" inside the source directory to build the configure script first. The README.matrix file describes how matrix files are supposed to be written.

Offline gr1m

  • Posts: 439
NKRO Nonsense
« Reply #36 on: Tue, 08 June 2010, 22:07:58 »
Quote from: Rajagra;185627
Once you accept that these things don't matter, you are giving manufacturers permission to provide inferior products for no good reason.


I can think of two examples. Microsoft and Infinity Ward. Microsoft (and Bill Gates) made the world start believing that it was impossible to release software without bugs (and look at how much patches we need to download to make new games playable these days). And Infinity Ward started a trend with Modern Warfare 2 of removing things like LAN from their games; removing LAN from PC games - REALLY? WHAT. THE. ****. BOOM.

Customers should take a stand, but the world is stupid. Heck, I bought a Logitech G15 so I'm one of the guilty stupid people that encourages manufacturers to start selling slop.

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
NKRO Nonsense
« Reply #37 on: Wed, 09 June 2010, 00:24:56 »
Quote from: Mnemonix;190989
I don't think you'll need Perl (anyone still using it? ;) ), but apart from that your list seems to be complete (plus autoconf and automake for building from Git repository (OK, then you'll need Perl, too)). Cygwin may also work (dunno), cross-compiling with MinGW should work as well. The only catch is that two versions of libusb are required because the bootloadHID program (not written by me) needs an ancient version of libusb; it should really be ported some day...

To build, run the configure script with correct arguments (see configure --help) in order to generate the Makefiles, then run "make". If you've cloned the Git repository and didn't download the tarball from Sourceforge, run "autoreconf -i" inside the source directory to build the configure script first. The README.matrix file describes how matrix files are supposed to be written.


   Ah, that would be what confused me... SourceForge was oddly in some borked state when I went to grab it, so I just yarded on the git... but but autoreconf -i gave me some irritating 'perl library not found' error (i.e. which perl lib?).

  BTW: yer READMEs are pretty good - thanks fer all the effort to document the project well.

   ... cool, grabbed the ball, got the firmware to build under cygwin - um, don't do that, btw - it's not a reasonable thang - I just couldn't resist trying. :)
  I don't have the libusbs sorted right now, so I'll be updating by hand fer the moment.
  I hit the hardware store this aft, (was out of 22pF), met an old friend, got a sunburn on a patio, drank too much - but he had a 1390131 for me, so it turned out well... Then a crazy hippie with dreads stumbled by and noticed we had covered our table with misc bits of hardware madness and offered me his boss's (a machinist) electronics stash of passive components and an old scope. I hope he can make me a decent offer, I'm just using a cheap digital scope right now - it's fine for keyboards, but it's not cutting it for debugging my DSL problems. (No I don' grok wire-level DSL signal problems, I get a crazy(er) friend to help me)
  Weird day.

  BTW Kish: Perhaps counter-intuitively, I usually end up using a GUI for programming AVRs using AVRdude, since it's part of the eclipse AVR dev environment. Totally overkill to use just for mere chip-burning, and, um, a bit of a black art to install.
  Nonetheless, mostly as a cruel joke, here's a screenie:

Fave Switch manus: IBM, Topre, Matias, ...

Offline Moogle Stiltzkin

  • Posts: 826
NKRO Nonsense
« Reply #38 on: Fri, 17 September 2010, 22:53:10 »
Thx for the explanation regarding NKRO.

Before this i had a rough idea about it, just not that it was called NKRO.

Example in that game O2Jam where you have to hit a few keys simultaneously in some instance, some keyboards are limited that they don't register many simultaneous keys at the same time. So the KRO for that sort of thing matters a lot.

Anyway back to my question, i am getting a new keyboard to replace my generic Logitech Internet Pro keyboard, model: Y-SV49  with a Deck legend Frost.

The Frost version is a Tactile keyboard that uses Cherry MX1A-C1NW, clear; which to my understanding is basically a brown cherry but uses a black cherry spring.

http://www.deckkeyboards.com/product_info.php?products_id=95

Will this be acceptable for typing on wordpress to publish articles as well as gaming ??? I play fps and rts games sometimes :}

I did read that from the guides from this forum that tactile isn't as good as linear for gaming, however tactile may be better for just typing. But still would it be acceptable for some gaming ?



On a separate note, is a keyboard cover acceptable or is there anything wrong using it with the Deck Legend ???

http://www.compucover.com/new_index.cfm?do=ItemPage&ManufactureName=Motorola&ProductID=1529913&CategoryID=553&RequestTimeout=1500&LetsSearch=KeySkin&ModelNo=tg3&StartRow=1
« Last Edit: Fri, 17 September 2010, 22:59:51 by Moogle Stiltzkin »
"So long as we do not depend on the facts entirely, incomplete knowledge is better than complete ignorance."

:bounce:

Current gaming keyboard: Ducky DK-9008 with Cherry Beige/White doubleshots (Cherry Mx Brown)

For my 2nd pc: Cherry G80-1095 HAU Revision 00 (Cherry Mx Black)

Dye subbed keys harvested from NCR 3299-k440-v001 G80-3007 SAU. Casing donated to Mike.
[/FONT]

Free mechanical keyboard + other gear click here![/color]

Offline 71

  • Posts: 4
  • Location: Mars
Re: NKRO Nonsense
« Reply #39 on: Tue, 05 May 2020, 08:17:59 »
I'm someone who plays rhythm games or VSRG to be specific (like BMS or O2Jam) where you need to press like 7keys at once sometimes.
 Theres no way I can use a non NKRO board for these games. Non-NKRO boards has always been a deal breaker for me.