As a front end engineer, I can't believe what I am seeing. Someone got paid to make that. They looked at the finished outcome and said, 'eh, good enough to deploy to prod.'
If that's how bad they are at web design, I wonder how bad their products are.
Someone made the explicit decision to break in the middle of words without hyphenation. Very strange. Or, they reused something without any idea what it did.
Hey now, try not to crap on the work of people whose circumstances you don't know. A quick glance at the HTTP response shows the page is served by Plesk. It's often the case that off the shelf software like this is selected, along with a "nice looking" theme, by someone with no technical background. And it's also often the case that said "nice looking" themes have not been built to accommodate the use case they're applied to.
Wouldn't it make sense that they're better for being bad at the non-critical stuff? Assuming the market will pay X for their goods, mostly dependent on the goods' quality Q and very little on W. Assume that it costs Y to build the product (and that higher Y leads to higher Q) and Z to build the webpage (and that higher Z leads to higher W). Assume that they want the profit to be as high as possible. Then they'll want Y+Z to be as small as possible, and you would hope that most of that cost-cutting is in Z so that Y+Z is as close to Y as possible.
That property is a feature for East Asian scripts, they probably made it look right in those languages and didn’t notice the regression in Latin script
Finding it by knowing the dev tools is a technique not everyone has at their disposal. I offered the suggestion of how it could be fixed, someone provided a copypasta to do it for everyone regardless of familiarity with the dev tools. That should be applauded!
Well, as a long time web dev who's been backend only for a few years now, so my frontend skills are rusty, you taught me something new. I didn't know about `attributeStyleMap`. Way to go first time!
Yes, actually, you can still determine the keys. The usual method is to scan the rows and/or columns one by one and then you always only have one row and column active at a time, so you can determine individual keys. However, if you strobe too slow you can miss keystrokes.
Presumably the different colors paired with "so long as the keys in question fall into mutually discrete columns and rows." means they keyboard is actually "several keyboards" at the hardware level, and different keys activate different logic boards for processing.
A keyboard is scanned by pulsing each row individually and checking which columns become active because a pressed key connects them. (Or vice versa.)
In (2), when the green row is pulsed, only the green column becomes active, because it's connected to the green row by the pressed key (upper left red dot).
In (4), when the upper of the two green rows is pulsed, both the green columns become active — the first because the upper-left red dot is pressed, and the second because there is a path through all three of the red dots (pressed keys). So the keyboard senses a key press at the dotless intersection, even though that key is not pressed.
Better keyboards solve this problem with a diode on each key, so that the roundabout path can't happen. Cheap keyboards rearrange the rows and columns into squiggly paths so that the three-key pattern doesn't happen very often, being especially careful with the modifier keys.
As I have mentioned somewhere else, I can't explain this by anything else than lazy design. Surface mount diodes are extremely cheap and their cost pales in comparison with the cost of accompanying switch or even LED.
You can't put diodes on a membrane keyboard. (Well, maybe you could, but the side with the traces is right up against the other membrane. Hmm, could you dope the membrane? brb, patenting) And if you did, the cost would still be greater than zero, so it wouldn't fly.
Ghosting on a discrete contact-switch keyboard is inexcusable, of course.
On most rubber dome keyboards there is enough space between rubbers to have diode there. You could also put diodes on the other side of PCB.
I am not sure about costs, though, I did not consider membrane keyboards for my research. Membranes are extremely cheap. Not just because of the membranes being cheap but also because there is no assembly (PCB is contacts, no assembly required for switches) and because there might not be need for double-sided PCB. In this case diodes could force double-sided PCB, vias, and maybe even double sided assembly.
this is only somewhat related, but i count my old coolermaster masterkeys S as my favorite keyboard of all time, it was nice and utilitarian and came with some absolutely fantastic keycaps - for about 80 bucks. damn shame they "updated" their product lines to appeal to gamers or something, and started taking their cues from corsair and not like, filco.
i have the misfortune of being the guy my friends, family etc call when their computers go bork and one of the little things that just really shine is the easy function-key-shortcut builtin to the board that will swap between windows- and mac style modifier layouts, it wound up being far more than some bellwhistle i initially thought it would be
unfortunately since it was my first real mech it also was something of a guinea pig. i learned to solder switches by swapping them out, and the connections are kinda janked now, and i sometimes have to wack it like an old TV to get it to register certain keypresses.
i'm currently using a durgod TKL, it's almost a suitable equal in all the areas that made me love the CM board.. but man i wish i'd been able to snag another masterkeys, even used, before the supply dried up.
Yes, that solution has been known since at least the 1970's. The cost and complexity of adding all those diodes was an impediment in the old days, not sure how much of an issue it is today.
I did it for a hand-wired keyboard, and the total cost was under 1USD, and no real complexity was added (I just used the diodes as the row wiring, the only thing to keep in mind was having the correct orientation). For modern manufacturing, there's no excuse not to use diodes in the circuit.
By the way, for anyone interested in the "real" keyboards – welcome to the r/MechanicalKeyboards and QMK firmware, you will not want to buy Cooler Master after getting familiar with these resources.
I have a bunch of keyboards. My daily driver is a shitty Alps clone switch boardswith modified click leaves to provide better tactility. I understand going down the rabbit hole of building your own.
However: I want tactility, and with regards to tactility very few switches actually beat good rubber domes. Not rubber domes as in topre, just generally. The switches that do provide tactility (I would say that the matias switches are a good example) have been less reliable than a good rubber dome for a lot more money(at least outside matias' own keyboards).
Also, with a lot of these non-cherry switches I have found binding issues, and as we all know binding is the keyboard antichrist.
The only solution to getting a properly tactile switch I have found to be to buy increasingly expensive switches and build your own board, which I have no interest in whatsoever, or just buying a buckling spring board, where you will get a lovely 2KRO for non-modifier keys (unicomp is updating their process and releasing the "new model m" btw).
After all this, I don't understand the craze for mechanical keyboards. For linear boards there is really no good option, but for typists a good dome board (with slider) will be just as good and cost less than half as much.
This is really interesting at the moment where I started to laying out PCB and writing controller for my own keyboard.
After spending some time researching various aspects of keyboard design I come to conclusion that any ghosting or other artifacts are just lazy design.
These could have been explained decades ago when chips where expensive, but today you could technically just as easily devote a single pin to every key. On the other hand if you want to put diodes, surface mount diode cost (ie part + assembly) still pales in comparison to the cost of cheapest mechanical switch.
Because then for 100 keys, you'd need 200 wires, going to 200 pins on a really big microcontroller. But that would be really wasteful, because the switches can obviously all share one common voltage (typically ground) for one terminal. So naively, you'd actually just need 100 pins on the microcontroller plus ground.
But if you put the switches in a 10x10 matrix, then you just need 10+10 = 20 pins, enabling a cheaper micro, cheaper interconnect from the membrane switches to the PCB, etc. That's the benefit, but it comes at the cost of that ghosting (unless you add extra complexity, like a diode in series with each switch). Good keyboard vendors try to lay out the matrix so important key combinations don't ghost, like any combination of modifiers, WASD, etc.
The alternative that I would suggest you consider is I/O expander chips so you can use any mcu with a handful of pins. MCP23 seems popular, see e.g. https://www.abelectronics.co.uk/p/54/io-pi-plus
I remember ghosting being a practical problem in the 1980s when people used the keyboard as a game controller.
The other keyboard problem was debouncing. (Glad to see the spellchecker knows that word.) The proper way to debounce would be to have a key switch with three terminals. Cheap home computers didn't do that, obviously. Do modern keyboards do that?
I should have taken one apart last time I had one to throw away. Next time!
47 comments
[ 2.7 ms ] story [ 98.8 ms ] threadble to read on mobi
le. Luckily, most b
rowsers have some s
ort of a “reader mo
de” which solves th
e problem.
If that's how bad they are at web design, I wonder how bad their products are.
document.getElementsByClassName('ans')[0].attributeStyleMap.set('word-break', 'normal')
A keyboard is scanned by pulsing each row individually and checking which columns become active because a pressed key connects them. (Or vice versa.)
In (2), when the green row is pulsed, only the green column becomes active, because it's connected to the green row by the pressed key (upper left red dot).
In (4), when the upper of the two green rows is pulsed, both the green columns become active — the first because the upper-left red dot is pressed, and the second because there is a path through all three of the red dots (pressed keys). So the keyboard senses a key press at the dotless intersection, even though that key is not pressed.
Better keyboards solve this problem with a diode on each key, so that the roundabout path can't happen. Cheap keyboards rearrange the rows and columns into squiggly paths so that the three-key pattern doesn't happen very often, being especially careful with the modifier keys.
Ghosting on a discrete contact-switch keyboard is inexcusable, of course.
I am not sure about costs, though, I did not consider membrane keyboards for my research. Membranes are extremely cheap. Not just because of the membranes being cheap but also because there is no assembly (PCB is contacts, no assembly required for switches) and because there might not be need for double-sided PCB. In this case diodes could force double-sided PCB, vias, and maybe even double sided assembly.
i have the misfortune of being the guy my friends, family etc call when their computers go bork and one of the little things that just really shine is the easy function-key-shortcut builtin to the board that will swap between windows- and mac style modifier layouts, it wound up being far more than some bellwhistle i initially thought it would be
unfortunately since it was my first real mech it also was something of a guinea pig. i learned to solder switches by swapping them out, and the connections are kinda janked now, and i sometimes have to wack it like an old TV to get it to register certain keypresses.
i'm currently using a durgod TKL, it's almost a suitable equal in all the areas that made me love the CM board.. but man i wish i'd been able to snag another masterkeys, even used, before the supply dried up.
Are you interested in a Masterkeys S with cherry blue switches?
I switched to a Durgod with brown switches and couldn't be happier.
However: I want tactility, and with regards to tactility very few switches actually beat good rubber domes. Not rubber domes as in topre, just generally. The switches that do provide tactility (I would say that the matias switches are a good example) have been less reliable than a good rubber dome for a lot more money(at least outside matias' own keyboards).
Also, with a lot of these non-cherry switches I have found binding issues, and as we all know binding is the keyboard antichrist.
The only solution to getting a properly tactile switch I have found to be to buy increasingly expensive switches and build your own board, which I have no interest in whatsoever, or just buying a buckling spring board, where you will get a lovely 2KRO for non-modifier keys (unicomp is updating their process and releasing the "new model m" btw).
After all this, I don't understand the craze for mechanical keyboards. For linear boards there is really no good option, but for typists a good dome board (with slider) will be just as good and cost less than half as much.
After spending some time researching various aspects of keyboard design I come to conclusion that any ghosting or other artifacts are just lazy design.
These could have been explained decades ago when chips where expensive, but today you could technically just as easily devote a single pin to every key. On the other hand if you want to put diodes, surface mount diode cost (ie part + assembly) still pales in comparison to the cost of cheapest mechanical switch.
Rather than lazy, you should assume cheap. Consumer hardware is usually optimized to cut costs.
But if you put the switches in a 10x10 matrix, then you just need 10+10 = 20 pins, enabling a cheaper micro, cheaper interconnect from the membrane switches to the PCB, etc. That's the benefit, but it comes at the cost of that ghosting (unless you add extra complexity, like a diode in series with each switch). Good keyboard vendors try to lay out the matrix so important key combinations don't ghost, like any combination of modifiers, WASD, etc.
The alternative that I would suggest you consider is I/O expander chips so you can use any mcu with a handful of pins. MCP23 seems popular, see e.g. https://www.abelectronics.co.uk/p/54/io-pi-plus
https://eu.mouser.com/Semiconductors/Interface-ICs/Interface...
The other keyboard problem was debouncing. (Glad to see the spellchecker knows that word.) The proper way to debounce would be to have a key switch with three terminals. Cheap home computers didn't do that, obviously. Do modern keyboards do that?
I should have taken one apart last time I had one to throw away. Next time!
Edit: It’s “n-key rollover“