Teensy-pohjainen PS/2 - USB -konvertteri (Soarer)

Maailmassa on nykyään noin pyöreästi kolmea sorttia näppäimistöjä (jos ne erikoisemmat ratkaisut jätetään pois):

Allekirjoittaneella on niin usein hirmuisen vakaita ja jyrkkiä mielipiteitä, ja edellä mainittujen tekniikoiden kohdalla se menee jotakuinkin seuraavasti:

"Kaikki on ihan hirveetä paskaa paitti Buckling Spring. No, jos aseella uhataan niin Alps-kytkimiä voi harkita, mutta vain niitä malleja jotka on jäykkiä ja naksuu rutosti."

Katsokaas kun näppäimistön pitää olla hyvä. Ne kumihattuihin perustuvat ovat tunnottomia ja halvalla tehtyjä lokakasoja joiden kesto mitataan kuukausissa ja paino neuvolan puolella. Oikea näppäimistö antaa taktiilin palautteen, ja pitää mielellään vielä reipasta kolinaa siinä sivussa, että varmasti tietää menikö se nakkisormen heilahdus perille asti. Oikea näppäimistö myös painaa kilon, pari tai viisi, sitä voi käyttää lyömäaseena eikä se vähästä väärinkäytöstä hätkähdä.

Kun vanha mies ei kestä kehnoja näppiksiä, ovat vaihtoehdot vähissä. IBM Model M ja F, Unicomp Classic/Ultra - siinä ne ne melkein sitten. IBM:ää löytyy silloin tällöin käytettynä, ja Unicomp lienee ainoa Buckling Spring -tekniikkaan perustuvien näppisten uusvalmistaja joka on jäljellä, Avantin lopetettua leikin kesken.

Maailma on menossa himskattiin käsiväskyssä

Koska ihmiset on typeriä eivätkä ymmärrä hyvän päälle, ja haluavatpa kaiken lisäksi aina mahdollisimman halpaa, PC-valmistajat käytännössä kaikki siirtyivät rubber dome -linjalle jo toistakymmentä vuotta sitten. Vasta parina viime vuonna joidenkin erikoistuneempien oheislaitevalmistajien listoille ovat ilmestyneet mekaaniset näppäimistöt - ja nekin ovat melko luokattoman huonoja, vaikka niitä yritetäänkin markkinoida IBM/Lexmark-linjan vanhojen sotaratsujen maineella. Kuraa ne on silti, ja jos joku nyt melkein hyvän saakin aikaiseksi, se sitten pilataan joko värittämällä se nuorisolinjalle tai jättämällä siitä erillinen numeronäppäimistö ja kursorinäppäimet pois.

Vaan eipä hätää! IBM:n Model M on käytännössä ikuinen, joten ongelmahan on helposti ratkaistu? Vai onko?

No ei. Model M on sen verran iäkäs konstrukti, että sen liitäntä on joko AT tai PS/2. Jälkimmäinen yleisempi, noin valmistusmäärien puolesta. Ja jos olette viime aikoina katsoneet vaikkapa Intelin modernien emolevyjen liitäntöjä, arvaatteko mikä sieltä nykyään puuttuu? Jep.

No mut hei, sanoo joku sieltä takavasemmalta, saahan niitä nyt PS/2-USB -muuntimia. Kyllä, niin saa. Hyviä ei ole yhtään. Niitä vaivaa KRO-ongelma (Key Roll-Over). Nähkääs jos vaikkapa pelaatte pelejä sillä aateekoollanne, niin useamman yhtäaikaisen näppäimen painaminen johtaa äkkiä tilanteeseen jossa uusi näppäin ei enää rekisteröidykään. Pahimmillaan ollaan ns 1KRO-tilanteessa, jossa jo toisen näppäimen painaminen ensimmäisen perään jää rekisteröitymättä. Pelaa siinä sitten jotain FPS-peliä, kun pelihahmo ei liikukaan yhtä aikaa eteen ja sivulle.

Vuosia kestäneen etsimisen jälkeen kuulin huhua, että joku on todellakin tehnyt NKRO-kelpoisen (N-Key Roll-Over) -muuntimen. Vaan sitäpä ei saa purkitettuna kaupasta, se on tehty pienen Teensy-mikrokontrollerin päälle. Onneksi kolvi pysyy kädessä, joten ei muuta kuin tekemään uljaasta 25 vuotta vanhasta Model M:stä USB-näppäimistöä.

Teensy ja Soarer

Teensy on siis pienen pieni USB-liitäntäinen mikrokontrolleri, jota myy PJRC. Kortti sisältää boottiloaderin, joten mitään eksoottisia ohjelmointivärkkejä ei tarvita - USB:llä vehje kiinni PC:hen ja pikku softa auki, jo vain siirtyy ohjelma kortille.

Soarer puolestaan on softa, joka Teensyn avulla NKRO-PS/2-USB -muunnoksen tekee.

Aluksi oli hieman epäselvää miten temppu tehdään ja mitä kaikkea tarvitaan, eivätkä Soarerin omat veppisivut olleet mitenkään erityisen selkeitä marssijärjestyksen ja tarvittavien työkalujen suhteen. Seuraavassa lyhyt oppimäärä siitä mitä tarvitaan ja miten homma käy:

  1. Hankitaan Teensy. Ja nimenomaan Teensy 2.0, "++" -malli ei ole tarpeellinen. Teensyä myy PJRC:n veppikauppa. Harmistus, paypal ei käy, mutta luottokortilla meni helposti.
  2. Ladataan PJRC:n veppisivuilta Teensy Loader. Tämä on yksinkertainen executable, ei tarvitse asentamista, ja tämän avulla voidaan sitten Teensyyn siirtää sitä varsinaista ohjelmakoodia.
  3. Ladataan Soarerin konvertteriohjelma internetistä (tai tästä linkistä, v. 1.10). Paketissa on kaikenlaista dokumenttia, konfiguraatiotiedostoa ja sälää, mutta loppujen lopuksi tarvitaan VAIN yksi asia koko puketin sisältä: .hex -loppuinen tiedosto joka Teensy 2.0:n tapauksessa on nimeltään "Soarer_at2usb_v1.10_atmega32u4.hex", löytyy Firmware -nimisestä hakemistosta.
  4. Rakennetaan vähän liitäntöjä Teensyyn (käytännössä joko pultataan kortti näppiksen sisään ja piuhoitetaan PS/2-liittimen nastoihin, tai hankitaan PS/2-naarasliitin ja juotetaan nelisen piuhaa siihen). Teensyn oma USB-liitäntä on se millä värkki sitten kytketään ihan PC:hen.
  5. Tökätään Teensy kiinni PC:hen, avataan Teensy Loader, valitaan edellämainittu .hex-tiedosto ja uploadataan se Teensylle. Otetaan Teensy hetkeksi irti PC:stä, läpsäistään juotettuun PS/2 -liittimeen näppis kiinni jä tökätään Teensyn USB-puoli takaisin koneeseen kaapelilla.
  6. Tadaa! Valmista on. Windows tunnistaa "soarer converter" -nimisen laitteen ja ajurikin asentuu aika itsekseen. Kolistellaan näppistä onnellisena ja merkkejä tulee ruudulle.

Mutku...tota...

Ensimmäinen kysymys - johon missään ei ollu vastausta - on se että mitäs kun amerikan ihmeet ovat tehneet tämän softan ja mulla on suomalainen näppis? Vastaus on: ei tarvihe tehdä mitään. Soarer on aika näpsä softa protokollan ja näppismallin tunnistamisineen, ja Model M finskikonfiksessa lähettää ihan oikeita koodeja. Suomeksi: juu, ei tarvi säätää mitään konfiguraatiotiedostoja ja kuraa, toimii ns. heittämällä.

Toinen kysymys: mitäs varten siellä soarerin puketissa on niitä konfiguraatiotiedostoja ja semmosta? Vastaus: no ne on sitä varten jos haluaapi tehdä jotain eksoottista. Mikä tahansa näppäimistön HID-koodi on niiden avulla vaihdettavissa toiseksi. Ja vielä hienompaa on se, että niillä voipi tehdä makroja.

Kolmas kysymys: Mitä ne Tools-hakemiston jutut on? Vastaus: no ne on niitä millä voi sohia ja tökkiä sitä konvertteria  siinä vaiheessa kun se on jo asennettu ja toimii - ne juttelevat nimenomaan sen Soarerin ohjelman kanssa, ei Teensyn kanssa. Ei siis tarvitse latailla Teensyyn mitään omatekemiä firmiksiä enää, se vaihe tehdään vain kerran. Työkaluilla voi heitellä edellämainittuja temppukonejuttuja softan pureksittavaksi lennossa.

Neljäs kysymys: tarviiko mun jotenkin kertoa sille softalle mikä näppis mulla on? Vastaus: No ei tarvitse, se on perin etevä. Se tunnistaa jopa IBM Model F -terminaalinäppäimistön (3270) - jonka protokolla on erittäin epäyhteensopiva minkään PS/2- tai AT-liitännän kanssa. Millään muulla konvertterilla Model F ei mene normipeeseehen kiinni.

Viides kysymys: Mille kaikille PS/2 -näppiksille tämä kelpaa? Vastaus: ihan uskomattoman monelle ja hyvinkin eksoottisille vehkeille. Jopa Wysen jotkin vanhemmat terminaalinäppikset ovat tuettuja.

Säätöä!

Seuraavassa hieman kuvia selostuksen kera - näiden jälkeen löydät vielä liittimien nastakuvaukset ja sen miten letkut laitetaan mihinkin kiinni, oli nimittäin paikoitellen vähän epäselvää kun useat kuvat eivät kertoneet mistä päin liitintä katsotaan (eikä liittimissä ollu numerointia).

Ensimmäinen testi. Teensyyn on ladattu Soarer Converter, ja kortin nastoihin on juotettu pin headerit joista sitten on kiskaistu letku PS/2 -naarasliittimeen jonka riipaisin vanhasta PS/2 - sarjaporttikonvertterista. PS/2-liitäntäisessä näppäimistössä valo palaa, kaikki toimii a-ok.

 

Model M:n sisäinen kortti. Model M:n vanhemmissa malleissa on irroitettava kaapeli, joka on RJ-tyyppisellä liittimellä kiinni itse näppiksessä. Kolvia heiluttelemalla liitin tarpeettomana pois, ja juotin tilalle pin headerit - kaapelit olisi tietty voinu juottaa korttiin suoraankin.

 

Teensy sijoitettuna paikoilleen. Sen verran oli ahdasta että juotin Teensyn päähän kaapelit kiinni. Tukin näppäimistön takaseinän viilatulla muovinpalalla ja laitoin siihen vedonpoistimen USB-kaapelia varten. Kuvassa näkyvä teräksenharmaa kaapeli on maadoituskaapeli näppäimistön omalta ohjainkortilta näppäimistörunkoon. Laatua, nähkääs.

 

Ja valmista on. IBM Model M USB, vuodelta 1988. Käy ja kukkuu, ja menee moderneihin PC-koneisiin kiinne.

 

Stand-alone purkki (v. 2.0)

Koska olin kaukaa viisas, tilasin kaksi Teensyä yksillä postituskuluilla. Ensimmäinen siis upposi Model M:n sisään, mutta toisesta ajattelin väkertää itsenäisen konvertteripurikin. Kuinka ollakaan, YE:stä oli jo aiemmin matkaan tarttunut muutama poistossa ollut halpakotelo, ja DX:stä puolestaan sopivan kokoisia piirilevyjä, joten ei muuta kuin näkertämään. Piirilevylle juotettava minidin-6 puolestaan löytyi halvalla Partcosta.

Teensy piikkien varassa piirilevyn päällä, ja minidin juotettuna jo paikoilleen.

 

Näker näker. Ajattelin toistaa näppäimistön Caps Lock, Num Lock ja Scroll Lock -ledit itse purkissa, joten kilon etuvastukset sopiviin kohtiin.

 

Ledit torneineen levyllä. Pilaamaton kotelo kuvan taustalla.

 

Testin aika. Ja toimiihan se! Ledit ovat ehkä hippasen himmeät, mutta sama sen nyt niin väli.

 

Ja laitos koteloituna ja valmiina koitoksiin. Onnistuin sitten tietty mokaamaan yhden ylimääräisen reiän koppaan, vaan haitanneeko tuo.

 

Liittimet, nuo pikku pirulaiset

Alla selvyyden vuoksi liittimet ja niiden nastat.

PS/2 -liitin. Ensinnäkin, naarasliitin. Siis se joka on joko tietokoneessa tai tässä harrastusprojektissa kiinni Teensyssä (näppäimistöissä on urosliitin). Toisekseen, kuvattu edestäpäin (sieltä mihin kaapeli tulee kiinni). Juotettaessa käännät siis kuvan toisin päin (pystyakselin suunnassa).

 Nastat ovat seuraavat:

1 - keyboard data
2 - ei käytössä
3 - maa (gnd)
4 - Vcc (+5V)
5 - Kello (clock)
6 - ei käytössä

Teensy. Teensystä käytössä on liuta nastoja, mutta tämän projektin kannalta kriittiset ovat:

Vcc - Kytketään PS/2:n Vcc-nastaan.
GND - Kytketään PS/2:n maahan.
PD0 - Keyboard Data
PD1 - Keyboard Clock.

Ei-kriittiset:

PF5, PF6 ja PF7: Caps Lock, Num Lock ja Scroll Lock -lisäledit. Jos siis näppiksessä ei vaikkapa niitä ole, tai jos teet purkkiin, saat siihenkin valoja loistamaan.

PB0, PB1, PB2,PB3 ja PB4: Aux1-Aux5 -näppäimet. Näihin voi lätkiä lisäkytkimiä jotka sitten lähettävät koodeja sen mukaan mitä konfiguraatio sanoo.

PB7: Keyboard Reset (sikäli kun käytetty näppis vaatii tai edes tukee).

 



Model M:n sisäinen ohjainkortti, liitin poistettuna levyltä. Ykkösnasta on yleensä merkitty. Nastat ovat seuraavat:

1 - ei kytketty
2 - Keyboard Data
3 - maa (GND)
4 - kello (clock)
5 - Vcc (+5V)
6 - ei kytketty