Siirry pääsisältöön
FI · EN

Tarina toimivamman tekstinsyöttämiseni taustalla

Näppäimistöni ovat aina herättäneet hilpeyttä ystävieni keskuudessa. Koska ensimmäisessä blogikirjoituksessani kerroin, kuinka näppärää raakateksti voi olla, lienee sopivaa luoda katsaus, miten kirjoitan ohjelmakoodia ja muuta raakatekstiä tietokoneella, ja kuinka ohjelmisto- ja laitteistoratkaisuni tekstinmuokkauksen suhteen ovat muuttuneet ajan saatossa.

Joskus lukion alkupuolella siirryin asteittain käyttämään Linuxia, ensin MinGW:n* kautta, sen jälkeen rinnakkain Windowsin kanssa ja myöhemmin ainoana käyttöjärjestelmänäni. Linuxin muokattavuus auttoi minua ymmärtämään, että kykenen itse vaikuttamaan siihen, miten ergonomisesti ja tehokkaasti kykenen työskentelemään tietokoneellani.

Kun etsin tietoa netistä ratkaistakseni erinäisiä haasteita, en voinut olla törmäämättä mainintoihin Vim-ohjelmasta. Se on juurikin eräs ratkaisuista, jotka ovat auttaneet minua parantamaan työskentelyni sujuvuutta.

Vim on tehokas tilapohjainen tekstinmuokkausohjelma. Sen tärkeimmät tilat ovat liiketila ja tekstinsyöttötila. Tekstinsyöttötilassa kirjoitettu teksti päätyy kulloinkin auki olevaan tiedostoon**. Liiketilassa taas voi siirtää kursoria ja suorittaa komentoja. Liiketilan erillisyys tekstinsyöttötilasta on äärimmäisen hyödyllistä; liiketilassa se mahdollistaa tavallisten kirjainten käytön liikkumis- ja yleiskomentoja vastaavina näppäinyhdistelminä. Kursoria liikutetaan HJKL-näppäimillä nuolinäppäinten tavoin, "N G" siirtää kursorin riville N, "$" taas rivin loppuun, "y y" kopioi rivin, jolla kursori on ja niin edelleen. Kaikkeen löytyy näppäinyhdistelmä. Liiketilassa on helppoa yhdistellä, toistaa ja ketjuttaa komentoja. Vimin etsi ja korvaa -toiminto on tehokkain, minkä olen nähnyt missään koodieditorissa.

Tehokkaan tekstinmuokkauksen lisäksi Vimin toimintaa voi muokata tarkemmin kuin useimpia muita tekstinmuokkausohjelmia. Yksi osa tätä on nimenomaan liiketila – voit helposti lisätä näppäinyhdistelmiä, jotka tekevät mitä ikinä tahdot. Pitkälti kaikkia varsin laajassa dokumentaatiossa [1] mainittuja komentoja ja muuttujia voi muokata omien mieltymystensä mukaan. Vimiin on saatavilla runsaasti lisäosia [2], jotka voivat esimerkiksi lisätä Vimin yhteensopivuutta muiden ohjelmien kanssa. Olen sittemmin siirtynyt käyttämään Neovimiä. Se on Vimin modernimpi ja toteutukseltaan kevyempi***, mutta käytännössä samat ominaisuudet sisältävä versio. Neovim sisältää sisäänrakennettuna jopa LSP-tuen [3]. LSP:n tiedoilla se kykenee muun muassa huomauttamaan tekstin muokkaajaa virheistä tämän työstämässä lähdekoodissa. Käytännössä ohjelma muuttuu LSP-serverin avulla täysiveriseksi IDE:ksi.

Mikäli Vimin kuvaus jäi epäselväksi, on sen itse kokeileminen ja oppiminen sangen helppoa. Sitä oppii käyttämään katsomalla pari tutoriaalia YouTubesta (esim. youtu.be/-txKSRn0qeA) ja tekemällä Vimiin sisäänrakennetun tutoriaalin kirjoittamalla ":tutor" ja painamalla enteriä. Jos Vimin asennus ei vielä houkuta, löytyy samainen tutoriaali netistä, esimerkiksi osoitteesta remarkablemark.org/vimtutor/.

Viime aikoina olen myös tehnyt kokeiluja GNU Emacs -kehitysympäristön parissa, ja olen vaikuttunut sen kyvyistä. Lisäosien voimalla käytän sitä toistaiseksi kuitenkin enimmäkseen Vimin tavoin. On muutenkin järkevää jättää sen käsittely myöhemmäksi – se on luonteeltaan lähempänä käyttöjärjestelmää kuin tekstinmuokkausohjelmaa.

Toinen suuri muutos, jonka tein vaihdettuani Linuxiin, oli näppäimistöasetteluni vaihtaminen. En koskaan oppinut kymmensormijärjestelmää kunnolla QWERTY-asettelulla, muun muassa oudosti aseteltujen näppäinten vuoksi, jotka hankaloittivat kymmensormijärjestelmän oikeaoppista käyttöä. Lienee kuitenkin paikallaan selventää, miksi QWERTY ei ollut minulle – ja tuskin muillekkaan paljon kirjoittaville – toimivin näppäimistöasettelu.

QWERTY-asettelu kehitettiin aikanaan pääasiassa kirjoituskoneille. Erilaisia asetteluita oli olemassa paljon, joista varhaisimmissa näppäimet olivat käytännössä vain aakkosjärjestyksessä [4,5]. Ensimmäisessä sähkeistä suoraan luettavaa tekstiä – morsekoodin sijaan – tuottavassa lennätikoneessa kirjaimet olivat aakkosjärjestyksen lisäksi kaikki samassa rivissä [6]. Koska sellaisella näppäimistöllä oli vaivalloista kirjoittaa, siirrettiin kirjaimet kolmeen riviin ja numerot neljänteen. Nyt peräkkäin ja vierekkäin olevat näppäimet saattoivat kuitenkin painaessa juuttua toisiinsa. Ratkaisuna näppäimet aseteltiin siten, että useimmiten käytetyt näppäimet eivät olleet vierekkäin.

Monilla Youtube-videoilla, joihin törmäsin todennäköisesti Linux-mielenkiintoni ja Youtuben algoritmin vuoksi, perusteltiin toiseen näppäimistöasetteluun vaihtamista jotakuinkin vastaavasti. Niillä vihjattiin, ettei ole järkevää, että useimmiten käytetyt kirjaimet ovat hajallaan ympäri näppäimistöä. Kuvasta 1 näkee helposti, kuinka yleisimmin käytettyjä kirjaimia vastaavat näppäimet ovat QWERTYllä kaukana toisistaan. Mistä muusta muutokset ihmisten käytöksessä nykyään johtuisivat kuin YouTubesta.

Kuva QWERTY-näppäimistöstä korostuksilla
Kuva 1. Englanninkielinen QWERTY-asettelu, jossa näppäimiä on tummennettu sen perusteella, kuinka paljon niitä vastaavat kirjaimet esiintyvät teksteissä Wikipedian mukaan [7]. Tämä tuottamani kuva on vapaasti käytettävissä CC0-lisenssillä.

Ei ole perusteltua sanoa, että näppäinten asettelua näppäimistölle ei olisi aikanaan mietitty. Olisi kuitenkin järkevämpää, että useimmiten käytetyt näppäimet olisivat niin kutsutulla kotirivillä, jolla sormia oletusarvoisesti pidetään näppäimistöä käytettäessä. Tällöin sormien tarvitsisi harvemmin jättää kotirivi, kasvattaen kirjoitusnopeutta ja lyhentäen matkaa, joka sormien on kuljettava näppäimistön yllä.

Joidenkin kokeilujen kautta päädyin käyttämään Colemak-näppäimistöasettelua [8]. Vuosilukujen valossa sen voidaan olettaa olevan QWERTYä paremmin suunniteltu. QWERTY syntyi 1800- ja 1900-luvuilla. Colemak puolestaan on suunniteltu 2000-luvulla [9] tehokkuutta ergonomisuutta ajatellen [8]. Tietokoneet oli kehitetty jo pitkälle, kun Colemak suunniteltiin, joten sitä luodessa voitiin paremmin ottaa huomioon tekijöitä, jotka vaativat laajamittaisempaa laskennallista analyysiä. Esimerkiksi saman sormen peräkkäisiä kirjainpainalluksia, saman käden kirjainpainalluksia ja kotirivin eri puolille vuoroin kurottavia (esim. ”minimi” QWERTYllä) näppäily-yhdistelmien esiintyvyyksiä on voitu minimoida [10, 11]. Yksinkertaisin argumentti Colemakin puolesta lienee se, että useimmin käytetyt näppäimet sijaitsevat kotirivillä, kuten Kuvasta 2 näkyy.

Kuva Colemak-näppäimistöstä korostuksilla
Kuva 2. Colemak, värikoodi tuotettu samoin kuin Kuvassa 1. Tämä tuottamani kuva on vapaasti käytettävissä CC0-lisenssillä.

Colemak on toiminut hyvin omassa käytössäni. Uudella asettelulla kirjoittamista harjoitellessa näppäimistöni näppäinhatut olivat fyysisesti yhä QWERTY-asettelussa. Koska en voinut tarkastaa näppäimen sijaintia silmilläni, opin kirjoittamaan katsomatta näppäimistöä ollenkaan, mikä oli ollut minulle QWERTYä käyttäessä hankalaa. Kirjoittaminen myös on myös tuntunut mukavammalta; sormien tarvitsee harvemmin poistua kotiriviltä ja epämukavia näppäilysarjoja tuntuu esiintyvän harvemmin.

On tietysti hyvä huomata, että Colemak on suunniteltu nimenomaan englannin kirjoittamista varten. Tahdon itse käyttää kaikista järkevistä käyttöjärjestelmistä löytyvää yleisnäppäimistöä, joka on samoin aseteltu riippumatta kielestä, jota kirjoitan. Koska kirjoitan paljon sekä suomea että englantia, ja joskus ruotsia, joudun joka tapauksessa näppäimistöasettelua valitessa tekemään kompromissin kielten välillä, tai valitsemaan jonkun harrastelijan tekemän esoteerisen useamman kielen yhdistävän näppäimistöasettelun, jota tuskin on todettu toimivaksi käytössä. Kaikeksi onneksi Suomeakin kirjoittaessa Colemak on tuntunut minusta luontevammalta kuin QWERTY.

Alun perin kokeilin ensimmäisenä näppäimistöasettelunani QWERTYn jälkeen Dvorakia****. Saatoin mututuntumalla kirjoittaa Dvorakilla nopeammin kuin Colemakilla, mutta sillä kirjoittaminen oli käsilleni epämukavaa, etenkin oikealle pikkurillilleni, joka joutui usein kurkottamaan L-näppäimen perään. Hiljalleen ymmärsin, että itselle sopivaa näppäimistöasettelua valitessa olennaisinta on asettelun ergonomisuus eikä kirjoitusnopeus. Mitä hyötyä on nopeasta kirjoitustyylistä, jos ei voi kirjoittaa rasitusvamman vuoksi.

Näppäimistöasettelua valitessani minulle oli tärkeää myös erikoismerkkien helppo saatavuus. Dvorakissa ei ollut juurikaan erikoismerkkejä, ei edes AltGr:n takana. Colemakilla käytettävissäni ovat helposti muun muassa paljon käyttämäni nk. ysiysi-lainausmerkit ‘”’ (AltGr+Shift+0) sekä m-viiva ‘–’ (AltGr+-), ja mukavuuksina esimerkiksi numeroiden potenssiversioita ‘¹²³’.

Voit saada ensikosketuksen Colemakiin netissä esim. nopeuspelin gnusenpai.net/colemakclub/ kautta. Asennus-/käyttöönotto-ohjeet Colemakille puolestaan löytyvät osoitteesta colemak.com/Download. Muitakin eri tarkoituksiin optimoituja näppäimistöasetteluja löytyy runsaasti netistä, mutta Colemak lienee kaikista testatuin ja luotetuin vaihtoehto, joka löytyy monista laitteista vaihtoehtona ilman erillistä asennusta.

Kiinnostuttuani näppäimistöasetteluni ergonomisuudesta aloin pohtimaan myös fyysisen näppäimistöni ergonomisuutta. Aloitetaan hyvin yksinkertaisella ajatusleikillä. Kuvittele olevasi pöydän ääressä ennen ateriaa. Miten asetat kätesi rennosti pöydälle eteesi? Entä jos niiden on oltava ainakin hieman erillään eikä yhdessä? Todennäköisesti kätesi olisivat keskemmällä kuin kyynärpääsi. On luultavaa, että ranteesi olisivat suorina, verrattuna esimerkiksi asentoon, jossa pikkurillejä taittaa kohti kyynärluita. Lopulta on yleistä, että kämmenesi eivät olisi olleet litteinä pöytää vasten, vaan että ranteesi peukalopuoli osoitti joko suoraan ylös tai hieman yläviistoon.

Tavallinen näppäimistö pakottaa kädet epäluonnolliseen suppuun. Kuvittele ranteesi suoraan sormiesi takana. Vie sitten sormesi näppäimistön kotiriville. Joudut taittamaan pikkurilliäsi kohti kyynärluutasi. Epämukava asento, eikö? Ongelma ratkeaa jakamalla näppäimistö keskeltä kahtia . Tällöin eri puoliskot voi asettaa itselleen mieluisiin kulmiin ja itselleen mieluiselle leveydelle siten, että ranteet saavat olla suorassa. Samalla lapasi ja hartiasi pääsevät rentoutumaan.

Ranteita on myös mukava kallistaa nostamalla peukkut ylemmäs kuin pikkurillit. Nyt kun näppäimistösi on kahdessa osassa, voit vapaasti kallistaa ne kulmaan, joka on ranteillesi mieluinen. Ainakin, jos näppäimistöillä on telineet, jotka sallivat niiden kallistamisen kätevästi. Jotkut kirjoittavat jopa näppäimistönpuolikkaat lähes pystysuorassa.

Lopulta mielenkiintoisena huomiona on varsin kummallista, että näppäimistöjen sarakkeet ovat useimmiten viistossa eivätkä suoraan ylhäältä alas. Tämä on QWERTYn lisäksi toinen epäoptimaalinen jäänne kirjoituskoneiden ajalta. Olihan näppäinten varsien jotenkin ulotuttava pääasialliseen kirjoituslaitteistoon. Jos näppäimistöt suunniteltaisiin ensimmäistä kertaa nykyään ilman historiallista taakkaa, miksi tabulaattori-, näppäinlukko- ja shift-näppäimiä päätettäisiin kasvattaa eri pituisiksi siten, että loput kirjaimet joutuvat kuin väistämään toisiaan. Viistous ei sinänsä ole välttämättä epäergonomista, mutta esimerkiksi kaukana kotirivistä olevien numeronäppäinten löytäminen voi olla hankalaa, kun vaikkapa numero 5 on etusormen yläpuolella, vaikka sarakkeiden suoraan mennessä siinä pitäisi olla nelonen.

Markkinoilla on näppäimistöjä, jotka ratkaisevat kaikki nämä ongelmat. Esimerkiksi Ergodox Ez [12] ja Voyager [13] ovat suosittuja vaihtoehtoja. Ne vain maksavat halvimmillaan runsaat kolmesataa euroa parilta, mahdollisia kuljetuskuluja ja tulleja huomioimatta, ja olen köyhä opiskelija, joten en aio hankkia sellaisia ainakaan vielä.

Olisin kuitenkin paljon halunnut kyseisenlaisen näppäimistön. Runsas vuosi sitten yritin lievittää pulmaani tilaamalla Perixx Periboard-524B-näppäimistön. Näppäimistö on toiminut kiitettävästi, mutta sen sarakkeet eivät mene suoraan. Lisäksi näppäimistöllä ei ole mekaanisen näppäimistön hyötyjä. Muutoin näkemykseni siitä ei ole juurikaan muuttunut sen jälkeen, kun kirjoitin siitä geminikapselissani [14].

Epäonnekseni tuhlasin rahaa – pian näppäimistön ostamisen jälkeen julkaistiin parempi vaihtoehto, jonka hankkiminen maksaa suunnilleen saman verran. Onnekseni voin hankkia sen paremman vaihtoehdon nyt, kun huomasin asian. Noin 10 kuukautta sitten eräs suomalainen tietotekniikan opiskelija julkaisi netissä ohjeet juuri tarpeeni täyttävän näppäimistön kokoamiseen. Näppäimistö on vieläpä suunniteltu juuri budjettiystävällisyys ja kokoamisen helppous mielessä. Näppäimistön nimi on Silakka54, ja sen kokoamisohjeet löytyvät GitHubista [15]. Voit nähdä näppäimistön Kuvassa 3. Oletuksena näppäimistössä ei ole kallistavaa telinettä, mutta olen jo 3D-tulostanut sellaisen. Näppäimistöjä on saatavilla valmiiksi koottuina AliExpressistä, tai näppäimistön voi koota tilaamillaan osilla, kuten itse aion tehdä aidon vapaan lähdekoodin hengen mukaisesti.

Kuva Silakka54-näppäimistöstä
Kuva 3. Silakka54-näppäimistö. Kuva on Juho ”Squalius-cephalus” T.:n ja se on lisensoitu MIT-lisenssillä.

Paremman asettelun lisäksi Silakka54:n hyötyjä ovat helppo muokattavuus, mekaanisten näppäinkytkinten tuoma tuntuma sekä QMK:n (tai Vialin) avulla muokattava firmware. Näppäimistöä voi muokata esimerkiksi sisältämään lisää kerroksia (vrt. AltGr:n pohjassa pitäminen, mutta eri näppäimen pohjassa pitäminen avaa pääsyn niihin merkkeihin, joita itse useimmiten tarvitsee), ja tavallisia näppäimiä voi asettaa toimimaan eri näppäiminä pohjaan painaessa – esimerkiksi välilyönnistä voi tehdä myös Ctrl-näppäimen.

Koska näppäimistöasettelu määritellään firmware-tasolla, voi oman asettelunsa myös ottaa mukaan kaikkialle, minne näppäimistönsä saa mukaan. Itse aion hyödyntää tätä esimerkiksi sähköisessä EXAM-tenttijärjestelmässä, mikäli sallittua, sillä kyseinen järjestelmä pohjautuu ainoalle yleiselle käyttöjärjestelmälle, joka ei tarjoa Colemak-näppäimistöasettelua.

Lopuksi maininnan ansainnee Thumb-Key, jota käytän näppäimistönä puhelimellani. Siinä näppäimet ovat suuremmat (ne ovat 4x4-ruudukossa), joten niihin on helpompi osua. Toki kääntöpuolena kaikki kirjaimet eivät mahdu näppäimille, mutta loput merkit saa kirjoitettua vetämällä oikeasta näppäimestä oikeaan suuntaan. Pidän isommista näppäimistä, muita perusteluja kyseiselle näppäimistölle en anna.

En varmasti ole vielä valmis työskentelytapojeni optimoinnin kanssa. Tämä antoi kuitenkin katsauksen nykyään käyttämiini olennaisimpiin tekstinsyöttööni vaikuttaviin ratkaisuihin, niin ohjelmistojen kuin näppäimistöjen osalta. Ratkaisut ovat kaikki helposti kokeiltavissa, paitsi mahdollisesti Silakka54 – fyysisiä esineitä kun on hankala kokeilla heti netissä. Kokeilemalla ei menetä mitään ja kärsivällisellä harjoittelulla kokeilu voi olla sekä hyödyllinen että hauska.

Linkkejä ja lähteitä

[1] Vimin dokumentaatio. Vim-ohjelmassa saatavilla komennolla ":help", verkossa vimhelp.org
[2] Ks. esim. vimawesome.com
[3] Neovimin dokumentaation LSP-serverien konfiguroinnista: neovim.io/doc/user/lsp.html
[4] distantwriting.co.uk/instruments.html, kuva 23
[5] W. A. Burt. Patentti laitteelle Typographer. 1829. United states patent and trademark office. Saatavilla ppubs.uspto.gov/api/pdf/downloadPdf/[...].
[6] Wikipedia: Printing telegraph. en.wikipedia.org/wiki/Printing_telegraph
[7] Wikipedia, kirjainten esiintyvyys. en.wikipedia.org/wiki/Letter_frequency
[8] Colemakin verkkosivut: colemak.com
[9] Wikipedia-artikkeli Colemakista: en.wikipedia.org/wiki/Colemak
[10] Colemakin suunnitteluprosessista: colemak.com/Design
[11] Colemakin ergonomiset tekijät: colemak.com/Ergonomic
[12] Ergodox Ez: ergodox-ez.com
[13] Voyager: zsa.io/voyager
[14] Geminilokini: ”Perixx budget split keyboard – first impression” gemini://cron4.fi/gemlog/periboard.gmi, Verkkoportaalin kautta portal.mozz.us/[...]
[15] Silakka54 squalius-cephalus.github.io/silakka54


*MinGW ei tietenkään ole Linux, mutta sen kautta sain ensikosketuksen GNU:n komentoriviohjelmiin.
**Oikeastaan teksti päätyy vain tekstikenttään, josta se sitten usein tallennetaan (kirjoitetaan) tiedostoon. Usein tekstikentän sisältö myös vastaa kyseisen tiedoston sisältöä välitallennuksia vaille. Kuitenkaan tekstiä ei suoraan kirjoiteta tiedostoon kuten ei käytännössä missään tekstinmuokkausohjelmassa. Tosiasiassa tekstikentän ei tarvitse kuvata mitään tiedostoa, eikä sen sisältöjä tarvitse kirjoittaa mihinkään tiedostoon.
***Neovim sovelluksena vie vähemmän tilaa kuin Vim.
****Todellisuudessa käytin Svdvorakia, Dvorakin ruotsin kirjoittamiseen tarkoitettua versiota, koska oletus-dvorakista ei löydy ääkkösiäkään, toisin kuin oletus-colemakista.