Ani ne tak hrdla, jako spíš "zkraty". Podívej se na tohle schéma:
Určité skupiny kláves jsou rozmístěné ve stejných řádcích a sloupcích. Zjišťování probíhá tak, že řadič klávesnice postupně pouští napětí do jednotlivých sloupců, a testuje jestli se v nějakém řádku objeví signál. Všimni si že řádků je osm, načítají se jako jeden bajt. Klávesa prostě elektricky propojí sloupec a řádek.
Pokud stiskneš klávesy v jednom sloupci, třeba
1 Q A Z (na české Y), tak to řadič přečte jako binární číslo 10110100. Najde si příslušné scankódy v tabulce a pošle o tom informaci do počítače. Pokud některou klávesu pustíš, pošle se její scankód+128.
Jenže to funguje jen když stiskneš klávesy pouze v jednom sloupci! Podívej se co se stane když držíš
1 Q. Až potud je vše v pořádku, řadič, cyklicky testující jednotlivé sloupce, dojde k tomuhle, pustí do něj šťávu a na dvou řádcích mu vyběhnou jedničky.
Co se ale stane, když budeš současně držet
1 Q S? Řadič vypne předchozí sloupec, pustí šťávu do dalšího, a přes současně stisknuté klávesy
S a
Q elektrika projde i do předchozího sloupce, ze kterého zase vyběhnou ty samé dvě jedničky, takže to vypadá že je stisknutá i klávesa
2! Prostě se mu to zkratuje do čtverce.
Ta dvojka je samozřejmě nesmysl, a bylo by špatné kdyby se v programu objevovaly klávesy které nikdo nemačká, to by mohlo napáchat mnohem větší škody než to že se nějaká klávesa vynechá. Aby takové nebezpečné situaci řadič zabránil, musí ověřovat i to jestli nemá stisknutých víc kláves na jednom řádku. Když zjistí že ano, provede tu nejjednodušší věc co může, dělá mrtvého brouka. On ani nic jiného dělat nemůže, protože neexistuje způsob jak zjistit která z těch kláves je skutečně stisknutá a která se přes spoje propojené na víc místech pouze "promítá".
Jediná možnost jak tomuhle zabránit je mít klávesnici postavenou z mechanických spínačů, a každý připojený ke svému řádku přes diodu, aby nemohl signál procházet zpětně. Asi si dovedeš představit že taková klávesnice by nebyla nic levného. I když i takové se kdysi vyráběly, když se ještě počítače dělaly pořádně.
Z toho vyplývá že na nějaké vracení nárok určitě nemáš, tohle prostě není závada, je to běžná vlastnost všech dnešních klávesnic. A v Linuxu to bude to samé, protože tohle je jen záležitost hardwaru, operační systém na tom nemůže nic změnit. Pianová klávesnice je nejlepší řešení, ta by měla takové situace zvládat.
Jen pro zajímavost, řadič té klávesnice je osmibitový počítač, u původního IBM PC se na něj používal mikrokontrolér Intel 8048 nebo 8049, později modernější 8051/8052, viděl jsem ale i řadiče odvozené z Motoroly 6800 a dokonce i Zilogu Z80, srdce slavného ZX Spectrum!