Recently got my hands on an old Soviet homecomputer, however it famously has just an AWFUL keyboard. The ПКН-111, being quite famous for getting stuck and registering the wrong keys (and only allowing 1 key to be pressed at the same time). I lubed the switches which did wonders to the keyfeel (from unusable to OK-ish) but still is near impossible to type decently on it due to commonly registering the wrong keys.
Firstly is there a obvious way to avoid this? Because I think it's a form of ghosting what is happening. Otherwise I might need to build a custom keyboard for it and make the keycaps compatible with some modern keyswitches as I doubt there are any modern drop in replacements for soviet switches from the 80's
For anyone interested, pictures of the keyswitch
Me hitting the "1" key loads of times (yes it's really that bad at registering the correct keys)
My own notes on measurements
Replacing Soviet ПКН-111 on a БК-0011
- 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: µ
Blocking and ghosting are problems with the matrix, not the switches. Faulty switches will make things worse, but if you really can only type 1 key at a time, it's a bad, bad, badly designed matrix.
How does this keyboard connect to the computer, electrically speaking?
How does this keyboard connect to the computer, electrically speaking?
-
- Location: Netherlands
It's connected by 2 16 pin DIP sockets, which then sends the data through a resistor array and then into the K1801VP1-014. The 1 key limit might be a hardware restriction rather than a matrix issue as the system is based on and compatibility with the PDP11 from 1970.
It also has ROM socket on the other side of the board with an expansion board (to install a different BASIC and such things), if that board is not installed the issue of getting wrong key pressed becomes significantly worse even though its not directly connected to the keyboard.
The matrix:
Connectors:
Circuitry beyond the connectors. (Connectors also handle the speaker which is in the keyboard)
It also has ROM socket on the other side of the board with an expansion board (to install a different BASIC and such things), if that board is not installed the issue of getting wrong key pressed becomes significantly worse even though its not directly connected to the keyboard.
The matrix:
Connectors:
Circuitry beyond the connectors. (Connectors also handle the speaker which is in the keyboard)
- 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 have heard people mention resistors as a way to make a matrix, though I don't understand how it would work without costly and needless analog to digital conversion. Matrices are all about simplicity and cost reduction, anyway. Switches aren't demanding components to interpret: you could just hook them up to a pin each, if only there were enough pins. And it's not like diodes are costly, either!
What that matrix looks like to me is 1KRO, which would align with the (maddening) behaviour you're talking about.
Fortunately, those wired connections to the computer are very hackable. You could make your own NKRO matrix instead, using whatever switches you like, and feed it straight into there. Well, unless the resistors really are up to something I don't know about.
What that matrix looks like to me is 1KRO, which would align with the (maddening) behaviour you're talking about.
Fortunately, those wired connections to the computer are very hackable. You could make your own NKRO matrix instead, using whatever switches you like, and feed it straight into there. Well, unless the resistors really are up to something I don't know about.
-
- Location: Netherlands
Then it might be time to find out how NKRO matrices work.
Might be good to know that this computer was superseded by a the БК-0011M, which was a slightly modified version of this computer. That released seemingly half a year later.
The differences being a pin for sound out on the back (instead of just the speaker in the keyboard), a slightly modified ROM (giving backwards compatibility with an earlier model) and most important here a new keyboard design using a membrane and rubber dome system due to complaints. Looking at Russian people talking about this computer it seems that keyboard also had 1KRO but none of the issues regarding wrong keys being pressed. And it also had the same resistor array without any diodes.
Apparently the 1KRO is a limitation of the keyboard driver. So I'm not hoping to fix that.
Here is the keyboard membrane of the БК-0011M
Might be good to know that this computer was superseded by a the БК-0011M, which was a slightly modified version of this computer. That released seemingly half a year later.
The differences being a pin for sound out on the back (instead of just the speaker in the keyboard), a slightly modified ROM (giving backwards compatibility with an earlier model) and most important here a new keyboard design using a membrane and rubber dome system due to complaints. Looking at Russian people talking about this computer it seems that keyboard also had 1KRO but none of the issues regarding wrong keys being pressed. And it also had the same resistor array without any diodes.
Apparently the 1KRO is a limitation of the keyboard driver. So I'm not hoping to fix that.
Here is the keyboard membrane of the БК-0011M
- DMA
- Location: Seattle, US
- Main keyboard: T420
- Main mouse: Trackpoint
- Favorite switch: beamspring
- DT Pro Member: NaN
- Contact:
Ahh, БК-0010Ш, my first computer. Had to write programs in the notebook because there wasn't much time at the console..
When life gives you ghosting - make anti-ghosting matrix!
Resistors are there to limit the current flowing thru the switch (mostly to protect the chip outputs). Figure out which way diodes should point and upgrade that "circle over the cross" from a "-/ -" to "-/ -|>-" (or "-/ -<|-" - the idea is that diode should conduct when key is pressed, not block). Five hundred 1N4148 diodes will bring you like $10 down on ebay (I still have about 200 left after all the experiments).
Could be done without PCB swap even - although JLCPCB will get you 5 boards for like $30 nowadays.
When life gives you ghosting - make anti-ghosting matrix!
Resistors are there to limit the current flowing thru the switch (mostly to protect the chip outputs). Figure out which way diodes should point and upgrade that "circle over the cross" from a "-/ -" to "-/ -|>-" (or "-/ -<|-" - the idea is that diode should conduct when key is pressed, not block). Five hundred 1N4148 diodes will bring you like $10 down on ebay (I still have about 200 left after all the experiments).
Could be done without PCB swap even - although JLCPCB will get you 5 boards for like $30 nowadays.
- 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: µ
Membranes are always 2KRO at best—yes, the IBM Model M and even modern laptops are lousy 2KRO—so the later keyboard version is doomed to remain there.
Diodes are a good idea for your system. They won't do any harm, and should at least clean-up the monstrous ghosting / blocking issues this keyboard had from the beginning. If the "driver" or controller logic are lousy for rollover, too, you won't get NKRO as it will be limited by the weakest link in the chain. But you should be able to get the reliable keypresses you desire.
Diodes are a good idea for your system. They won't do any harm, and should at least clean-up the monstrous ghosting / blocking issues this keyboard had from the beginning. If the "driver" or controller logic are lousy for rollover, too, you won't get NKRO as it will be limited by the weakest link in the chain. But you should be able to get the reliable keypresses you desire.
-
- Location: Netherlands
Dont think I need to go to the resistor route it seems. Replaced 2 (new) capacitors, C3 and 4, at the recommendation from someone on some Russian forum dealing with soviet machines. From the the 0.033uf (if I recall correctly) that was originally also in the board with 0.068uf caps. Now it works quite well, I've only noticed 1 miss-read of a button but that could also be me not paying attention.
The caps seem to be filter caps so on the chip used for polling, so I imagine somethink funky happened inside the chip.
At any rate it works to the level I'm happy with. Not planning on writing a book on it, probably just some demos and the odd game. Also noticed the БК-0011M "improved" keyboard also had the 0.068uf caps installed in factory, and I doubt the membrane would be any better. So I think the awfulness of the keyboard might just be due to a combination of people not lubing their switches (which was recommended by the manufacturer to do at home) and the wrong caps. As right now the keyboard is fine, though still not something I'd recommend writing for a long time on, if only for the 1KRO.
Now just finish and install a new BIOS and get my hands on a AZBK and I'd consider this project done.
The caps seem to be filter caps so on the chip used for polling, so I imagine somethink funky happened inside the chip.
At any rate it works to the level I'm happy with. Not planning on writing a book on it, probably just some demos and the odd game. Also noticed the БК-0011M "improved" keyboard also had the 0.068uf caps installed in factory, and I doubt the membrane would be any better. So I think the awfulness of the keyboard might just be due to a combination of people not lubing their switches (which was recommended by the manufacturer to do at home) and the wrong caps. As right now the keyboard is fine, though still not something I'd recommend writing for a long time on, if only for the 1KRO.
Now just finish and install a new BIOS and get my hands on a AZBK and I'd consider this project done.