Dalius Daro

2021 m. liepos 24 d., šeštadienis

Apie Klaviatūras

Vienas iš būdų vertinti IT kompanijas yra žiūrėti kiek jos yra kompiuterastiškos (geek’iškos). Tai gali būti visiškai atsitiktiniai kriterijai, kurie darbui nebūtinai turi tiesioginės naudos, bet atskleidžia kokius žmones pritraukia kompanija: koks procentas programuotojų yra nacionalinių olimpiadų laimėtojai, Vim vartotojų skaičius (o gal net Emacs), žmonių dirbančių su Linux’ais, dirbusių startuoliuose skaičius ir pan. Kai pradėjau dirbti „Wix“ nesitikėjau, kad atrasiu dar vieną kategoriją: mechaninių klaviatūrų fanai.

Man apskritai mechaninės klaviatūros neatrodė vertos dėmesio, o į tai tiesiog žiūrėjau kaip į snobų hobį. Tada pamačiau pas kolegas atskirtas (split) klaviatūras, kur kiekvienai rankai turi po klaviatūros dalį. Taip pat buvau paprotintas, kad toks variantas yra daug natūralesnis ir sveikesnis laikysenai ir nugarai, bei kad leidžia išnaudoti nykštį, kuris yra stipriausias rankos pirštas. Kas reiškia, kad mažiau turėtų pavargti riešai ir nugara ir čia jau užsikabinau (nes kartais po intensyvios dienos riešai tikrai pavargdavo).

redox

Po kurio laiko ir svarstymų užsisakiau Redox klaviatūrą iš FalbaTech (Lenkija), kuri kainavo nesveikai daug (kolegos sakė, kad verta, nors ir brangu) ir kurios teko laukt 7 savaites (tiek laukdamas imi net abejoti ar tikrai gausi savo prekę). Tikrai unikali klaviatūra, nes apdaila medinė, ir viskas puikiai veikia. Dėl kitokio klavišų išdėstymo reikėjo gerų 3 savaičių kol vėl galėjau rašyti bent jau pakankamai padoriu greičiu - apie 50 žodžių per minutę (žpm). Pirmą savaitę greitis tebuvo 10-20 žpm, bet po truputi norimas greitis buvo pasiektas. Tačiau klaviatūra man pasirodė ir per aukšta ir per didelė (gerai, kad nusipirkau rankų atramas, kurios situaciją šiek tiek pataiso). Taigi ėmiau žiūrėti, o ką aš galiu padaryti, kad būtų dar patogiau naudotis klaviatūra.

Pirma mintis buvo, o kiek gi galima išmesti klavišų iš klaviatūros, kad ja tebebūtų galima naudoti. Turiu paminėti, kad dauguma tokio tipo klaviatūrų yra programuojamos vienu ar kitu būdu, kas leidžia išjungti mygtukus apskritai arba iš esmės pakeisti kaip jie elgiasi. Taip žingsnis po žingsnio sumažinau savo klaviatūrą iki 34 klavišų ir vis dar ją galiu naudoti produktyviai (programavimui ir tekstų rašymui). Tai beje nėra riba ir galima išmesti ir daugiau klavišų, bet aš abejoju ar to tikrai noriu.

Tuo pačiu žiūrėjau kas yra rinkoje, ką būtų galima nusipirkti ir taip žingsnis po žingsnio atradau Ferris klaviatūras. Tačiau nusipirkti jų nebuvo kaip ir kur, todėl ėmiau žiūrėti ar galiu kaip nors pasigaminti jas pats ir tada atradau Ferris Sweep variantą, kuri, mano kuklia nuomone, yra geniali klaviatūra. Taigi nusprendžiau pabandyti pasigaminti klaviatūrą pats ir man pavyko. Toliau apžvelgsiu abi temas: kaip sukonfigūruoti klaviatūrą 34 klavišams ir kaip pasigaminti savo klaviatūrą.

QMK ir 34 klavišai

Populiariausia programinė įranga klaviatūroms yra QMK (nors ir ne vienintelė, pvz dar yra https://zmk.dev/), su ja susidūriau pirmiausia, todėl ja ir naudoju su savo klaviatūra. Ateityje galbūt naudosiu ir kitus sprendimus, bet QMK bent jau mano poreikius tenkina pilnai.

Taigi kaip sutalpinti visą klaviatūrą į 34 klavišus? Tam reikia išnaudoti kelis programuojamų klaviatūrų privalumus:

  • Sluoksnius (layers)

  • Skirtingą klavišų paspaudimo elgesį, t.y jei klavišas tik trumpam paliečiamas darome vieną, paspaudus ilgiau - kitą. Čia beje nebūtina sustoti, galimi ir tokie variantai kaip kad paspaudus greitai dukart darome dar kažką ir t.t.

Sluoksnių idėja labai paprasta ir netgi su ja tikėtina esate pažįstami: tarkime paspaudę Shift klavišą gaunate didžiąsias raides ir simbolius vietoje skaičių (jei dar didžiosios raidės turi ryšį su mažosiomis, tai simboliai yra visiškai atsitiktinis dalykas). Lygiai tas pats su Ctrl, Alt ir Start/Command klavišais ir jų reikšmėmis. Arba tarkime perjungdami klaviatūros kalbą į lietuvių taip pat įjungiate lietuvių kalbos sluoksnį (pvz.: vietoje skaičių gaunate lietuviškus simbolius). Taigi galima tiesiog susikurti daugiau sluoksnių su kitais klavišais.

Taip tarkime gali atrodyti klaviatūros pagrindinis sluoksnis:

 [_QWERTY] = LAYOUT(
  //┌────────┬────────┬────────┬────────┬────────┐                         ┌────────┬────────┬────────┬────────┬────────┐
     KC_Q    ,KC_W    ,KC_E    ,KC_R    ,KC_TMUXT,                          KC_Y    ,KC_U    ,KC_I    ,KC_O    ,KC_P    ,
  //├────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┤
     KC_A    ,HOME_S  ,HOME_D  ,HOME_F  ,KC_G    ,                          KC_H    ,HOME_J  ,HOME_K  ,HOME_L  ,KC_SC_ES,
  //├────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┤
     KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,                          KC_N    ,KC_M    ,KC_COMM ,KC_DOT  ,KC_SLSH ,
  //└────────┴────────┴────────┼────┬───┴────┬───┼────────┐       ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘
                                     KC_QUITA,    K_SPC_SF,        KC_NAVEN,    KC_SYMBS
  //                                └────────┘   └────────┘       └────────┘   └────────┘
  ),

KC_? tiesiog rodo paprastus raidžių klavišus, taigi lieka klausimas kas vyksta su kitais. HOME_ klavišai yra naudojami home row mod, labai geras straipsnis apie tai yra čia: https://precondition.github.io/home-row-mods

Taigi:

HOME_S veikia kaip Start/Command, jei laikomas paspaustas arba kaip raidė S, jeigu paspaudžiamas greitai.

HOME_D veikia kaip Alt, jei laikomas paspaustas arba kaip raidė D, jeigu paspaudžiamas greitai.

HOME_F veikia kaip Ctrl, jei laikomas paspaustas arba kaip raidė F, jeigu paspaudžiamas greitai.

Kitai rankai eilė sukeista (kad Start/Alt/Ctrl būtų tiems patiems pirštams), bet principas tas pats. Tą reikia padaryti abiems rankoms, nes kitaip kai kurios klavišų kombinacijos bus neįmanomos.

Aš naudoju tuos pačius home row mod parametrus, kurie rekomenduojami anksčiau minėtame straipsnyje:

#define TAPPING_TERM 200
#define PERMISSIVE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_FORCE_HOLD

Eksperimentavau ir bandžiau keisti šiuos parametrus, bet iš esmės atrodo, kad toks variantas yra geriausias.

Tada lieka 4 nykščių klavišai:

KC_QUITA - QUICK sluoksnis laikant paspaudus arba Tab paspaudus greitai. (kairė ranka)

K_SPC_SF - SHIFT laikant paspaudus arba Space paspaudus greitai. (kairė ranka)

KC_NAVEN - navigacijos sluoksnis laikant paspaudus arba Enter paspaudus greitai. (dešinė ranka)

KC_SYMBS - simbolių sluoksnis laikant paspaudus arba Backspace paspaudus greitai. (dešinė ranka)

Šiuos klavišus susidėliojau atsižvelgdamas į tai, kad jie yra dažniausiai naudojami ir, kad vienu galiu paspausti tik po vieną nykščio mygtuką kiekviena ranka (pvz.: padaryta prielaida, kad Enter ir Backspace vienu metu spausti nereikės). Tiesa, prarandu Shift + Tab kombinaciją, kuri naudotina visai.

Dvigubo paspaudimo (double tap) nenaudoju. Bandžiau naudoti ;; ir qq, kas tolygu Esc paspaudimui, bet šis variantas man neprilipo. Dvigubas paspaudimas turi minusą, kad bet kurio klavišo negalima naudoti dvigubam paspaudimui, o tik tuos dėl kurių esi tikras, kad nereikės jų naudojimo dvigubam paspaudimui (tarkime žodžiai su qq yra tikrai reti ir mažai tikėtina, kad teks juos naudoti).

Dar esu pasidaręs lietuvių simbolių pasiekiamumą, kad nereiktų junginėti kalbų ir kad galėčiau lietuviškus simbolius pasiekti dviem mygtukais. Jei norite tai naudoti siūlau perskaityt Unicode skyrių QMK dokumentacijoje prieš kopijuodami mano kodą.

Ir jei reikia visada galima pasidaryti naujų sluoksnių, tarkime KC_TMUXT slepia tmux sluoksnį, kad būtų galima greitai įvykdyti kai kurias tmux komandas.

Toks išdėstymo variantas ir toks klavišų naudojimas yra pakankamai geras tik reikia išmokti klavišus spausti lengvai, nes kitaip galima atsitiktinai paspausti nereikalingą kombinaciją. Prie to , tiesa sakant, dar nesu visiškai pripratęs. Bet net dabar naudojantis standartine klaviatūrai imu pastebėti kokios nepatogios kai kurios klavišų kombinacijos.

Taip atrodo mano klaviatūros išdėstymas: layout

O čia rasite išdėstymo kodą: https://github.com/daliusd/qmk_firmware/tree/daliusd-redox/keyboards/ferris/keymaps/daliusd

Kaip pasigaminti klaviatūrą pačiai/pačiam

Oficialus GitHub puslapis - čia galima rasti visus reikalingus failus ir informaciją gamybai.

QMK puslapis - labai geros foto, jei kyla abejonių dėl litavimo.

Apačioje surašytos kainos, kiek man kainavo pasigaminti gaminant dvi klaviatūras atmetus įrankių ir kai kurių medžiagų kainas. Gaminant daugiau galima pasigaminti pigiau, taip pat galima taupyti siunčiantis pigiau.

Ko reikės

  • Atsispausdinti PCB:

    • Parsisiunčiame gerber.zip Sweep Compact iš GitHub

    • Pasinaudojame JLCPCB ar panašia paslauga ir užsakome spausdinimą. Kadangi viena pusė naudojama abiems klaviatūros pusėms tai užsakome bent 10 (minimalus lyginis kiekis). Man kainavo 14,40€. Skaičiau, kad allpcb galima ir nemokamai gauti.

    • Galima nurodyti, kad PCB nenaudotų švino (lead free), bei kad nuimtų serijinį numerį spausdinant (kad atrodytų estetiškai geriau). Bet jei norite, galite keisti ir daugiau parametrų.

    • Siunčiame ne pigiausiu būdų - atkeliaus per savaitę iš Kinijos. Tikriausiai neverta, nes kiti dalykai keliaus ilgiau.

  • 2 x promicro arba suderinamus mikrokontrolerius. Šiuos galima gauti ir Lietuvoje, bet aliexpress bus tikriauiai pigiau (jei pirksite kelioms klaviatūroms). Man kainavo 10,81€

  • 34 Kailh choc switches + keycaps - Lietuvoje nėra.

    Europoje: Keycapsss arba Splitkb. Tikėtina kaina perkant iš šių parduotuvių bus apie 52€.

    Aš pirkau tiesiai iš Kailh Aliexpress už 35,15€ (sugebėjau gauti be PVM’o apmokestinimo).

  • 2 PJ-320A lizdų - Lietuvoje turbūt neįmanoma rasti. Kaina: 2,31€

  • 1 TRRS kabelio - sunkiai, bet galima rasti ir Lietuvoje. Kaina už gražesnį 3,83€.

  • 2 x reset mygtukų - galima ir be jų, bet smagu turėti. Kaina: 0,87€

  • Micro USB kabelio (jei naudojame Promicro) - potencialiai keli gal net mėtosi nenaudojami pas jus namie. Kaina: 0,76€

  • Guminių padukų. Pirkau Senukuose už 1€.

Iš viso klaviatūros kaina: 69,13€ (dabar dar prisidėtų PVM’as). Perkant iš Aliexpress prekės atkeliavo per 3-5 savaites pasirinkus ne pigiausia siuntimo būdą. Tikėtina, kad ateityje galima tikėtis 3 savaičių ir greičiau.

Darbui reikės

  • Lituoklio. Jei neturite, rekomendacija būtų TS100 arba Pinecil. Pinecil galbūt būtų šiuolaikiškesnis (ir pigesnis) pasirinkimas. Man asmeniškai mind-blown buvo atrasti, kad lituokliui reikia OS: https://github.com/Ralim/IronOS

    • Taip pat rekomenduoju įsigyti TS-BC2 antgalį, nes su juo paprasčiau lituoti through-hole komponentus (o šioje klaviatūroje visi tokie).
  • Lydmetalio - su švino turinčiu dirbti paprasčiau, bet aš pats turiu patirties tik su bešviniu. Lituodamas pirmą klaviatūrą vargau, bet su antra jau buvo paprasta.

  • Kur valyti lituoklį (iš metalo drožlių pvz)

  • Ventiliatorių nupūsti nuodingus garus.

Klaviatūros surinkimas

  • Pirmiausia suinstaliuojame klaviatūros soft’ą į promicro: prijungiame pro micro prie kompiuterio, paleidžiame QMK flash’inimo procesą ir su pincetu užtrumpiname GND ir RST jungtis. Taip būsime tikri ar jie apskritai yra veikiantys. Daugiau ten kažką testuoti, manau, nebūtina.

  • Prilituojame promicro prie PCB kaip nurodyta, t.y. kairįjį aukštyn kojomis. Tai beje sudėtingiausia dalis, tai jei nesate to darę, tai pasižiūrėkite bent jau YouTube video kaip tai daryti. Tuo pačiu nebijokite to daryti, pirmą kartą aš padariau daugybę klaidų, litavau kelis kartus ir nepaisant to viskas vistiek veikė. Tiesa, po kelių savaičių kairės pusės pro micro USB jungtis nustojo veikti, nors pats pro micro vis dar veikia ir klaviatūrą galiu sėkmingai toliau naudoti. Dar vienas patarimas - prieš lituojant patrumpinkite header’io kojeles - bus paprasčiau lituoti.

  • Čia, jei norime, galime patestuoti ar veikia mygtukai naudodamiesi https://config.qmk.fm/#/test puslapio pagalba. Tiesiog su metaliniu pincetu paliečiame ten, kur bus lituojami switch’ų jungtys. Jeigu viską sulitavote gerai, tai viskas tiesiog veiks (ar taip bent jau man buvo sulitavus antrą klaviatūrą). Jeigu visgi kažkas neveikia, tada galima parsisiuntus KiCad ir atsidarius KiCad failus iš GitHub’o repozitorijos atsekti, kuri jungtis yra skirta kuriam klavišui ir išsiaiškinti, kurią jungtį reikia perlituoti.

  • Tada galima prilituoti TRRS lizdus ir reset mygtukus. Taip pat galima padaryti greitą testavimą ar gerai veikia klaviatūrą sujungus TRRS kabeliu.

  • Jei viskas OK galima prilituoti switch’us ir uždėti keycaps’us. Čia viena klaida, kurią galite padaryti, tai nusipirkti per didelius keycaps’us (permatomus iš Kailh), t.y. būtent taip atsitiko man. Tai teko pasitelkti dremelį ir juos sumažinti.

  • Galiausia reikia priklijuoti guminius padukus.

Ir kaip ir viskas - galima naudoti klaviatūrą.

ferris

Kas toliau?

  • Socketing - galima nelituoti promicro ir switch’ų prie klaviatūros. Vietoje to prilituojame lizdus (socket) ir bet kada bus galima pakeisti detales jų nelituojant.

  • Pro micro alternatyvos. Tarkime galima naudoti nice!nano ir pasidaryti bevielę klaviatūrą.

  • Hand wiring. Gal visai įdomus variantas būtų pasidaryti klaviatūrą be PCB.

Kur gauti pagalbos?

Pastaba

Jei kam įdomu, turiu kelis laisvus PCB, TRRS dalykų ir reset mygtukų - reiktų nusipirkti tik pro micro (ar atitikmenų) ir switch’ų su keycaps’ais. Parašykite dalius@ffff.lt