„Csavargás a gombok birodalmában”, avagy mit nyomogattunk régen / most? (Még csak a második rész)

A múltkor valahol ott maradt abba a mese, hogy fóliabillentyűzet, a jelenlegi olcsó klaviatúrák is ilyen felépítésűek, és mutatok olyat, ami – ellentétben a régi Enterprise gombjaival – használható módon működik. No de ne szaladjunk ennyire előre! A „mai korban” is van olyan, ami nem üti meg a kellő szintet...

(A kép tetejét levágtam hogy ne látsszon a gyártó logója. Még ma is élő cégről van szó, nehogy rosszul essen nekik! :) )

Azért néz ki ilyen furán, mert ez egy olyan klaviatúra, ami világítani is tud. :) Mondjuk elég ijesztő:

A gombok lapos kivitelűek, viszonylag rövid úton járnak. És ugyanúgy akadoznak ha nem pont középen (az X-nek látszó részen) vannak nyomva, ez legjobban az Enter← esetében érzékelhető. (De a többi gomb se valami remek...) Az X-nek látszó rész a gombsapkából „nő ki”, egy hozzá passzoló lyukban csúszkál:

Mivel rövid a gombok útja, rövidre (laposra) van véve az a lyuk is, amiben mozog, ez meg nem vezeti meg elég hosszan, emiatt a gomb szélét nyomva az „befeszül” keresztben. A normális lapos billentyűzetekben nem véletlenül van ollós mechanika a gombok alatt. Az pont arra a célra szolgál, hogy ha csak az egyik sarkát nyomja a dear user a gombsapkának, az a többi sarkot is húzza lefele.

Ettől a „kis” bakitól eltekintve ez egy kutya közönséges fóliabillentyűzet, de azért egy kis kuriózum mégis akad benne:

Szétborítva látszik az elektronika; na ez már annyira olcsó, hogy a vezérlő IC még tokozást se érdemelt, közvetlenül az egy oldalon fóliás nyákra van ragasztva, majd le van öntve műgyantával. (Fekete paca a jobb felső sarokban levő nyák közepén.) De ez manapság – szerintem – szokásos, a kuriózum az nem más, mint az éppen bekapcsolt állapotban levő világítás maga. Nem LED-ekkel van megoldva, hanem egy EL fóliával. Ehhez 100V-os nagyságrendű feszültség kell (az áram az kicsi), az ezt előállító elektronika nagyfrekvenciás transzformátora „kandikál ki” a fehér „szivacsos valami” alól a kép tetején középtájt. A világítás nem kifejezetten tökéletes; van ennek a billentyűzetnek olyan verziója, ahol a gombok „tejfehér” műanyagból vannak, fekete feliratokkal. Ott ez a megoldás egészen jól néz ki, sajnos nekem ez jutott. :) Az minden másban megegyezik ezzel, az akadozást is beleértve. Maradjunk annyiban, hogy jó az ötlet, de a megvalósításba azért csúszott némi baki.

Van tovább is a „rossz pc-s billentyűzet” nevű sor, a következő egyenesen Salvador Dalí ajánlásával:

Igen, ez az a bizonyos cukros barna ital álló billentyűzet. A gépelési élmény csapnivaló, mindennapi használatra nagyon nem ajánlott. :) Arra, hogy – mondjuk – egy autószerelő műhelyben olajos/zsíros kézzel néha egy-egy gombot nyomjanak, oda kiváló. Arra, amire egy IT-s először gondol, hogy „feltekerve elfér a táskában, mindig kéznél lesz”, arra már kevésbé jó, ugyanis azt nem fogja bírni. Ez is egy snassz, mezei fóliabillentyűzet amúgy:

Ezt inkább nem szedem szét, a lényeg így is látszik. A gumi alatti fólia – szerintem – pont ugyanarról a gyártósorról jön, mint a „kemény héjas” társaihoz. A csavargatást / nyújtogatást / gyűrögetést ez nem fogja bírni... De azért a konyhában a kávés csészékkel együtt el lehet mosogatni. :)

De jöjjön egy használható verzió! Legalábbis ez a tipp, ugyanis ezt a billentyűzetet nem (sem...) használtam, mivel nem pécés perifériáról van szó.

A feliratok tipográfiája egész jó, a kurzorvezérlők egyenesen szépek:

A gombsapka a „szokásos” módon rögzül, simán lehúzható. A nyomásérzet viszont nem a szokásos, pedig ez is egy sima fóliabillentyűzetnek néz ki:

A „trükk” a fém tartókeretbe külön-külön beillesztett gombmechanikákban van:

Ebből áll egy gomb. Magát az alaphelyzetbe „visszatérítést” a nagyobbik rugó oldja meg, a kisebbik meg „masszírozza” a fóliát. Ezért nem érezni a szokásos gumiharangos mozgást! A kisebbik rugó meg azért jó, mert a gomb püfölésétől függetlenül csak azzal az erővel nyomódik össze a fólia, amit maga a rugó enged, így a durvább bánásmódot is jobban bírja.

Lenyomott állapotban szépen összenyomja a fóliát, viszont a visszatérítést nem ez a rugó végzi elsősorban. Eddig még nem volt a „kedvenc alkatrészről” közeli kép, de majd most:

Egyik réteg vezető, szigetelő távtartó, másik réteg vezető. Nincs itt semmi varázslat... Ettől függetlenül valahogy sejtem, hogy miért nem ezt a (komplett billentyűzet) felépítést alkalmazzák manapság. Túl sok a fém (a gombok hordozója illetve a fóliák alatti felület is az), sok drága rugó... Ebben is túl sok még az anyag, hehe.

De jöjjön egy igazi low-cost verzió! (Ami annyira nem is volt alacsony árú, annak ellenére hogy annak kéne lennie...)

Ez egy (nem eredeti) PS2-es billentyűzet. (Mármint nem PS/2-es, hanem PS2-es.) Amúgy szimpla USB HID class kompatibilis eszköz, extra talán csak pár gombfelirat, plusz a visszajelző LED-ek hiánya. Ezektől függetlenül ez már a mai trendeket követi. A gombsapkák alatt nincs semmi (rugózó elem):

A gombok visszatérítését és a fólia masszírozását sima gumiharangok végzik, van amikor ez egyben van, mint egy szőnyeg. Itt minden gomb alatt különálló, amire vigyázni is kell, el ne vesszen egy-kettő:

Itt van még egy „olcsósítás”: a két fólia vezetőrétege – a működésből kifolyólag – egymás felé néz. Az előző billentyűzetben emiatt két csatlakozó is kellett a vezérlő nyákon. Itt egyrészt a csatlakozó is csak egy vezetősáv, másrészt a másik fólián levő csatlakozás „át van hozva” az egyik fóliára, csak ahhoz kell érintkezés:

A felső fólia „csatlakozója” rövidebb mint az alsóé. (Így az alsó kilóg alóla.) A csatlakozó résznél a két vezetős fólia közé már nem ér be a szigetelő réteg. Ez az egész össze van szorítva, az alsó fólia hosszabb érintkezői csatlakoznak a vezérlő nyákhoz, a felső fólia érintkezői meg az alsóval érnek össze, azon keresztül kapcsolódnak. A képen ez nagyjából látható is:

Erre jön egy gumicsík, ez fogja egyrészt a két fóliát összenyomni egymással, másrészt a hosszabbik fóliát rányomni a panelon kialakított érintkezőkre:

Erre rájön még egy └┘ profil, a csavarokon kívül ez az egyetlen ténylegesen fém alkatrész az egészben. Normál esetben ez a profil van rácsavarozva a csatlakozásra, de itt van még egy „csavar” a dologban: először a billentyűzet hátlapja is feljön, majd utána van összecsavarozva az egész:

(Ez egy ilyen jópofa billentyűzet, az alja átlátszó. De a többi műanyag rész is átvilágítható egy lámpával. Kár, hogy alulról ritkán világít bármi is. :) ) Ebben az összecsavarozásban az a trükk, hogy egy lépésben meg lehet tenni. Nem kell csavarozni külön a leszorítást először, utána feltenni a hátlapot, majd azt csavarozni. Biztos jól kiszámolták, hogy ezzel mennyi költséget lehet megtakarítani. :)

Az előző részben említett „fantom billentyűs” probléma természetesen mindegyik fenti klaviatúrát érinti, levén sima mátrix felépítésűek. Túlzottan nem lehet zavaró, de ez csak a felhasználás módjától függ, játékprogramok használata esetén szokott ez inkább probléma lenni. (A „pörgő-forgó-rúgás” kombinációja esetén „eldobja a fegyvert” a karakter. Vagy valami hasonló. :) ) Ez ellen „olcsón” hogyan lehet védekezni? (Az „olcsó”-t itt úgy értve, hogy marad a sima mátrix.) Egyrészt azt csinálják, hogy okosan tervezik meg a mátrix kiosztást, a (statisztikailag) „sokat használt” billentyűk egy sorba / oszlopba tartoznak, így nem jön elő a jelenség általában. De erre még „rá lehet segíteni” egy kis trükkel. Mivel egy ilyen billentyűzetvezérlő µC programját se láttam még eddig, ami most jön, az erősen elmélet. Én legalábbis valami ilyesmit csinálnék. :) (Meg azon se lennék meglepődve, ha valamilyen számon már szabadalmaztatva lenne.)

A mátrix feldolgozását két részre bontanám: egyrészt lenne a „beolvasás”, ez az aktuális billentyű-állapotról készít a memóriába egy másolatot, másrészt lenne a „kódok küldése”, ez a memóriába került gomb-állapot tábla alapján dolgozna. A „fantom-billentyű” szűrése a „beolvasás” részben történne, mégpedig a következő módon:

  1. Sor kiválasztása. Az éppen következő sor, amiben a gombok állapotát akarom megnézni, az ahhoz tartozó vonalat aktívvá kell tenni, a többi vonal „elengedett” állapotú.
  2. A kiválasztott sorhoz tartozó oszlopok beolvasása. A beolvasott oszlopállapottól függően több variációs lehetőség is van:
    1. Ha a sorban az összes gomb „elengedett” állapotú, akkor a memóriában a sorhoz beállítható az összes elengedett állapot. Ez sima ügy.
    2. Ha a sorban csak egy darab gomb van nyomva, akkor is beállítható a memóriában az adott sorhoz az egy darab lenyomott / többi elengedett gomb állapot. Még itt sincs semmi extra.
    3. Ha a sorban kettő vagy több lenyomott gomb van, akkor meg kell nézni, hogy a sorok közül csak az az egy sor aktív-e, amelyik éppen ki van választva. (Ilyenkor a sorok állapotát „vissza kell olvasni”, ami egy mai µC esetén nem gond; a sor aktiválása úgyis olyan módon megy, hogy kimenetre (+ alacsonyra) állítják a kívánt sort, a többi meg bemenet.)
      • Ha nincs másik sor aktiválódva, akkor a több gomb ebben a sorban van biztosan lenyomva, a beolvasott oszlop-értékeket be lehet egy az egyben (lenyomott / felengedett) állítani az adott sorhoz a memóriába.
      • Ha másik sor is aktiválódott közben, az Ghost-Key Warning erősen. Ebben az esetben azok az oszlopok, amik elengedett gombot mutatnak, azokat a memóriában levő sor-állapot tárolóban is elengedettnek lehet jelölni. Viszont a lenyomott állapotokat nem szabad lenyomottnak bejelölni, ott maradjon a memóriában az előző beolvasás eredménye.
  3. Adott sor – így vagy úgy, de – feldolgozva, jöhet a következő sor

Ez az „algoritmus” arra jó, hogy (talán) nem tud olyan lenyomás jelzés keletkezni, ami nem valós. Hátránya, hogy valódi lenyomott billentyűk is elveszhetnek így, de legalább a nem lenyomottat nem fogja annak mondani, ez talán így kisebb probléma. (A „pörgő-forgó-rúgás” kombinációja esetén ugyan „nem teszi el a fegyvert”, de „előszedni se tudod”. :) ) A „módosító billentyűk” természetesen itt is külön bánásmódban kell hogy részesüljenek, azok ha nincsenek benn a mátrixban, nem okoznak ilyet. Azok közül így nem is veszhet el semmi. És a szituáció ellen manapság az OS oldaláról nem lehet tenni semmit, mivel „ő” (mármint az OS) nem tud a mátrix pontos felépítéséről. Az ilyen trükköket annak a programnak kell elvégezni, ami a mátrixot kezeli közvetlenül.

Amúgy a kedvenc ilyen fantom-billentyűs szituációm épp az első részben javított plus/4 esetében van. A kurzorvezérlő gombok közül a Jobbra+Balra illetve a Fel+Le két külön sorba van, ráadásul ugyanabban a két oszlopban. (Ezek a gombok így egy 2×2-es mátrixnak felelnek meg.) Ez így Ghost-Key Warning, már ránézésre is... Ha a dear user egyszerre lenyomja a Fel+Le+Balra vezérlő gombokat, akkor a kurzor látványosan elindul jobbra. :) (Emulátor alatt nem biztos hogy van értelme próbálkozni, nálam például nem megy. De ez a host billentyűzete miatt van.) Néha azért tud mókás lenni a jelenség.

A fólia (membrán) billentyűzet jelenleg az egyik legolcsóbb megoldás, de régebben hittem ezt másról is. :) Az első pécés billentyűzetem a mai napig használatban van:

Ahogy elnézem, rendkívül koszos szegény, lassan ezt is meg lehet takarítani. Első AT-kompatibilis gépem egy 486SX25 volt, ez a billentyűzet még ahhoz való. Aztán persze a gép folyamatosan változott, de ez a periféria valahogy maradt. Pár gombról már erősen kopik a felirat. Használtam – megfelelő átalakítóval – AMIGÁhoz is, pár plusz felirat amiatt található meg rajta. Ez pont abból az időszakból való, amikor a gyártók a „spirálrugós” billentyűzetvezetékről elkezdtek leszokni, az elődje még azzal volt szerelve, ez már nem. (Ez speciel nem baj hogy eltűnt a „költség-optimalizálásban”, túl sok haszna amúgy sem volt.) Na de mi van belül?

Mikrovezérlő, meg egy egész érdekes nyák, sok-sok átkötéssel... De az érdekesség a másik oldalon van:

Furcsa, de mintha az érintkezőkön rajta lenne a forrasztásgátló lakk! Persze, mivel ezek nem érintkezők... Ez ugyanis egy kapacitív elven működő billentyűzet! A nyákon ki van alakítva két „kondenzátor” egy-egy „fegyverzete”, köztük „biztonsági elválasztóként” egy földfóliával. A kondenzátor dielektrikuma itt a forrasztásgátló lakk. (Plusz a levegő, persze.) A kondenzátor(ok) másik vezetőrétege magán a mozgórészen van:

(Gombsapka, rugó a visszaálláshoz, „amorf alak” ami csúszkál a lyukban.) A mozgórész alján szivacs, azon meg egy fólia, valamilyen vezető anyagból (gyaníthatóan alumínium). Amikor a gombot lenyomják, ez a vezető anyag közel kerül a nyákon kialakított két vezető felülethez. A kialakítás miatt ilyenkor két sorba kapcsolt kondenzátor a végeredmény. (Ugyan elég lenne egy is, de akkor a mozgó részre kellene valahogy vezetéket kötni, ami macerás meg drága meg hibalehetőség. Ez így meg egyszerű és olcsó és hibabiztos.) A működése viszont megér egy elemzést:

Az alkatrész pozíciószámok a fenti nyákról vannak, a visszarajzolást segítették, de ez így jó dokumentációnak is. :) A billentyű egy 8 oszlopos valahány soros mátrix, itt a 8 oszlop fele van csak lerajzolva három sorral, de magyaráz(kod)ni elég lesz. A működéshez a „kulcs” alkatrész az két darab CD4044-es CMOS tok, ezekben négy db. un. RS tároló található. Fontos, hogy CMOS alkatrészről van szó: a bemenetek működtetéséhez minimális áram (pikoamperek!) kellenek. Nagyobb áram csak szintváltáskor folyik, de az is kicsi. Első körben a rajz bal felső részén látható feszültségosztót érdemes megvizsgálni, mivel tényleg így van felépítve. 1%-os tűrésű ellenállások, valószínűleg fontos az a – fél tápfeszültségnél valamivel nagyobb – feszültségérték, amit előállít... A kondenzátor ezt szűri, majd ez a feszültség 100 KΩ értékű ellenállásokkal rákapcsolódik a mátrix oszlopaira. Ezek itt a „felhúzó ellenállások”, ekkora értékekkel tud működni egy CMOS bemenet. :) A feszültségérték valahogy úgy van beállítva, hogy a CMOS bemenet ezt még tuti magasnak érzékelje.

A mátrix „lekérdezése” itt sem túl bonyolult, de valószínűleg akad benne pár nyalánkság. Kellene egy oszcilloszkóp a pontosabb vizsgálatokhoz, emiatt a mostani mese csak találgatás lesz...

A µC a kívánt ROWx sort először magas szintre kapcsolja. Utána a SET vezetéken kiad egy alacsony impulzust. (Magas állapotról először alacsony, utána újra magasra vissza.) Ezzel az összes (itt négy) tárolót „beállítja”, azaz a kimenetük magas lesz. Utána az előbb magasra állított ROWx sort most alacsonyra állítja. A mátrix pontjaiban kialakított „kondenzátorok” ugyan egyenáram szempontjából szakadást mutatnak, tehát az alacsony ROWx vezeték nem jelenik meg az oszlopokon, de..! A kondenzátorok, ahogy növekszik a frekvencia, úgy lesznek egyre inkább rövidzárak a kezdeti szakadáshoz képest. A vonal magasról alacsonyra kapcsolása (maga az átváltáskori él) viszont „igen nagy” frekvenciának felel meg pillanatnyilag, az keresztül megy a „kondenzátorokon”. Ez a keresztül ment impulzus meg törli az előbb beállított tárolót.

Egy kondenzátornak a kapacitása két dologtól függ igazán: a felület nagyságától illetve ezen felületek egymástól való távolságától. Minél nagyobb a felület, annál nagyobb a kapacitás. Minél közelebb van egymáshoz a két felület, úgyszintén annál nagyobb a kapacitás. Itt az utóbbi tulajdonság van kihasználva: az elengedett gomb esetében a két felület „távol” van egymástól, így annyira lecsökken a kapacitás, hogy az impulzus nem tud átjutni. Amikor a gomb nyomva van, a két felület „közel” kerül egymáshoz, megnő a kapacitás, az impulzus átjut és törli a tárolót.

A ROWx alacsonyra kerülése után a µC beolvassa a COLx vonalakon „eltárolt” értéket. Ahol a vonalon a SET impulzusa utáni magas szint megmaradt, ott nincs nyomva gomb a sorban, ahol viszont törlődött, az a billentyű nyomva van. A tárolás után a µC „elengedi” a kiválasztott ROWx sorvonalat, majd a következő sorral folytatja a lekérdezést. (Következő ROWx magas, SET impulzus, ROWx alacsony, beolvasás, stb...)

Viszonylag egyszerűnek tűnik a működés, van viszont egy érdekesség: a billentyűzet – úgy tűnik – nem produkálja a fantom-billentyű problémát. Ebben lehet ludas az előbb részletezett pontos feszültségosztó is, illetve a fenti leírásból maradhatott is ki valami. (Például a ROWx vezetékeken egy sima multiméterrel 5V körüli magas szint mérhető, de egy ellenállással „terhelve” igen nagyot esik a feszültség. Úgy tűnik, hogy a ROWx vonalak hajtása nem az alacsony szinttel ér véget, hanem van olyan állapot, amikor magasra van kapcsolva, utána lesz „elengedett” állapotú. Lenne mit megvizsgálni...) De lehetséges, hogy elég ehhez szimplán a „jó méretezés”: egy-egy gomb a felépítéséből adódóan két sorba kötött kondenzátornak felel meg. Ahhoz, hogy fantom lenyomás jelentkezzen, három ilyen dupla kondenzátoron kellene az impulzusnak átjutni. Lehet, hogy a sorba kötött kondenzátorok „végére” már annyira „elfogy” az energia, hogy nem elég az oszlophoz tartozó tároló törléséhez. De ez majd még meg fog érni egy vizsgálatot... (Valamerre van egy másik ilyen elven működő roncs billentyűzetem, abban mintha EPROM-ban lenne a firmware. Még a végén lesz egy olyan gyári billencs, aminek láthatom a programkódját? :-D )

A kapcsolás „érzékenységére” egy példa: ha a szétszedett billentyűzet nyákján a „kondenzátorokat” ujjal „nyomom”, már azt lenyomásnak érzékeli. Azt nem merném állítani, hogy lehetne vele így gépelni, de mindenképpen érdekes... (Éljen a Primo? :) )

A komplett billentyűzet felépítése, amikor meglett, ránézésre – akkor – a „legolcsóbb megoldás” verziót juttatta eszembe. Nem gondoltam volna, hogy „vissza fogom sírni”, mert tud még az IT ipar „fejlődni”. Hát, az élet ismét rám cáfolt... (Amúgy – így belegondolva – valójában nincs benne semmi olyan, ami el tud romlani. Ha az ember nem baromkodik vele, örök élet, így ennyi év után visszavonok mindent. :) )

A mese fonalát itt most újra célszerű lesz elvágnom, mert még mindig túl sok van vissza. Az igazi nyalánkságok még csak most jönnek! (Mint egy szappanopera...)

Linkek:

balagesz

---

2014.11.14.
2014.12.14. Folytatás link
2015.01.30. Hibajavítás
2018.09.23. Elírás jav.
2019.12.15. D8.

Hozzászólások

Ismét egy remek cikk. ;) Van otthon egy ilyen kapacitív billentyűzet, sajnos AT-s így ma már nemigen tudom mivel használni, pedig emlékeim szerint kellemes volt használni. (Van hozzá egy ps/2 átalakító, de hát hol van manapság a ps/2?). Van benne anyag rendesen, a teljes hátlapja fém. Arra már nem emlékszem, hogy még mindig működik-e.

Úgy néz ki ma is gyártanak ilyet, durván 10 000 Ft-ért még nem is annyira drága.

Igen, ez a billentyűzet akkor készült, amikor az USB még gondolatban sem volt feltalálva. :) Passzív átalakítóval nem használható. Mondjuk az is igaz, eddig csak olyan (passzív) átalakítót láttam, ami az USB-s periféria-csatlakozót fordította PS/2 formára. (USB "A" típusú aljzat az egyik fele, a másik meg 6 pólusú MiniDIN dugó.) Létezik fordított is? (Azaz MiniDIN aljzat -> "A" típusú dugó.) Aktív eszközként lehet simán persze!

A fekete PS2-shöz hasonlót használok. Kb. 15 éves.

A Turbo+Delete és a Turbo+End kombináció az alvás és kikapcsolás jelet küldi (a Windows kikapcsoló gombnak és fedél lecsukása gombnak ismeri fel, illetve ezen eseményekkel társítja). Nem tudom, tervszerű-e, vagy véletlen.

Turbo+F11-gyel le lehet zárni a billentyűzetet, ami illetéktelen gombnyomások ellen és az áram alatt lévő billentyűzet kisebb takarításához jól jön.

A Turbo+funkcióbillentyűkkel (F1-F8 azt hiszem) a karakter-ismétlés sebességét lehet beállítani.

:)

A Turbo+funkcióbillentyűkkel (F1-F8 azt hiszem) a karakter-ismétlés sebességét lehet beállítani.

Az is USB-s? Mivel az ismétlést magát nem a (z USB-s) billentyűzet csinálja (hanem a host OS), emiatt a

Turbo

gombot valamilyen módosító billentyűként kellene talán értelmeznie. Ilyen kombókat én nem próbálgattam ezen, de az is igaz, hogy

Turbo

gombot eddig csak ősrégi PS/2-es billentyűn láttam, itt tulajdonképpen fel se tűnt. :-D

Nagyon jó leírás, gratula!
Amiről tudom, hogy kimaradt: hall elemes gombok és van egy Tungsram által készített csoda - kis tekercsekben mágneseket mozgatnak, így indukálva egy pulzust, mindez szó szerint kazánvas lemezbe "csomagolva". Ráadásul, a space -hez közeli billentyűk, túl közel vannak a "fenék lemezhez" így amit ott leütsz szép nagyot koppan :) Lusta vagyok felmenni a raktáramba, de ígérem, ha kezembe kerül csinálok róla néhány képet.

* Én egy indián vagyok. Minden indián hazudik.