Olen säilyttänyt tämän vanhahkon kirjoituksen historiallisista syistä. Jotkin sen ajatukset ovat jonkin verran vaikuttaneet suomalaisen monikielisen näppäimistön suunnitteluun.
Tietokoneiden näppäimistöt perustuvat edelleenkin suureksi osaksi kirjoituskonenäppäimistöihin. Tämän takia niiden merkkivalikoima on melkoisen suppea - esimerkiksi ajatusviiva puuttuu. Lisäksi ne heijastavat englannin kielen ylivaltaa siinä mielessä, että ne on yleensä muodostettu "lokalisoimalla" eli tekemällä Yhdysvalloissa tehtyyn perusratkaisuun joitakin muutoksia, ei muodostamalla esimerkiksi suomen kielelle sopiva näppäimistö kielen omien ominaisuuksien pohjalta. Toisaalta datatekniikan kehittyminen mahdollistaa ratkaisut, joissa näppäimistöä muutetaan toiminnaltaan paremmaksi muuttamatta fyysistä näppäimistöä. Tässä dokumentissa hahmotellaan eräitä kehittämismahdollisuuksia ja kokeiluja "virtuaalisen näppäimistön" idean pohjalta.
Tietokoneilla tehtävä tekstinkäsittely on muodostunut normaaliksi kirjoittamisen tavaksi nykyisin. Käytännöllisesti katsoen kaikki julkaistavat tekstit käsitellään nykyisin tietokoneella. Toisaalta tietokoneiden merkkivalikoimat suunniteltiin alun perin laskennan ja ohjelmoinnin tarpeisiin, ei luonnollisten kielten käsittelyyn. Tämä on merkinnyt, että samalla kuin tietokoneet ovat suuresti parantaneet julkaisemisen ja myös laadukkaan ladonnan mahdollisuuksia, tekstien asu sekä ortografisessa että typografisessa merkityksessä on romahtanut. Painetuissa kirjoissakin näkee yhä yleisemmin ns. Ascii-lainausmerkkejä oikeiden lainausmerkkien tilalla, yhdysmerkkiä ajatusviivan tilalla, x-kirjainta tai *-merkkiä kertomerkkinä jne., vaikka todellisuudessa olisi lähes aina mahdollista käyttää oikeita merkkejä. Ehkä vieläkin suurempaan ongelmaan, rumaan tai suorastaan väärään sanojen jakamiseen eri riveille, esim. kansa-nedustaja, ei tässä paneuduta. Se ansaitsisi aivan oman käsittelynsä.
Tottumus on toinen luonto. Olemme tottuneet tavallisen
tietokonenäppäimistön rajoituksiin,
jotka monissa yhteyksissä ovat edelleenkin hyvin todellisia.
Olemme tottuneet niihin
niin, että kuvittelemme
niiden vaikuttavan silloinkin, kun todellisuudessa voisimme kirjoittaa
mitä merkkejä vain. Toisaalta ihminen yleensä haluaa
kirjoittaa yksinkertaisesti. Jos merkkiä ei saa yhdellä
näppäimen painalluksella jotenkin luontevalla tavalla, niin helposti
käytetään jotain korviketta - etenkin jos merkkiä ei voisi nähdä
ruudulla välittömästi vaan jouduttaisiin käyttämään jotain
erityistä merkintää tyyliin ’
, joka
sitten mahdollisesti jotenkin muuntuu halutuksi merkiksi.
Se, mikä on luonteva tapa, on toki suhteellista; esimerkiksi
euron merkin tuottamista yhdistelmällä
Alt Gr e voinee pitää luontevana, yhdistelmän
Alt 0128 käyttöä taas ehkä ei.
Ne merkit, joita suomenkielisen tekstin kunnollinen kirjoittaminen vaatisi, ovat tavanomaisesta suomalaisesta tietokonenäppäimistöstä suoraan saatavien merkkien lisäksi seuraavat:
Toki muitakin merkkejä tarvitaan usein esimerkiksi lainasanoja ja matemaattisia kaavoja kirjoitettaessa. Mutta edellä esitettyjen merkkien voi katsoa kuuluvan siihen merkkivalikoimaan, jonka vähintään pitäisi olla käytettävissä.
Näistä merkeistä vain kahdessa viimeisessä kohdassa mainitut kuuluvat ISO Latin 1 -merkistöön (ISO 8859-1). Ja nämä lisämerkit ovat luettelossa mainituista ehkä vähiten tärkeät! Toisaalta kaikki tarkastellut merkit kuuluvat ns. Windows-merkistöön, joten ne ovat suhteellisen laajasti käytettävissä, vaikka niiden siirrettävyys tietokoneesta tai ohjelmasta toiseen on edelleen hyvin ongelmallinen asia. Mutta on suuntauduttava myös tulevaisuuteen; suuntaus on selvästi kohti laajempia merkkivalikoimia. Ja käytännössä voidaan menetellä niin, että tekstidata kirjoitetaan ja tallennetaan sellaisena, että se sisältää oikeat merkit, oli käytetty koodaus sitten Windows-koodi (windows-1252), jokin Unicode-koodaus tai (teoriassa) jokin muu. Jos data pitää siirtää järjestelmään, joka ei tue kyseistä koodausta tai kyseisiä merkkejä, voidaan tehdä muunnos, jossa ohjelmallisesti korvataan oikeat merkit niitä lähinnä vastaavilla muilla merkeillä tai korvikemerkinnöillä. On helppoa tehdä ohjelmallisesti esimerkiksi muunnos, joka korvaa jokaisen ajatusviivan yhdysmerkillä. Mutta jos tekstissä on valmiiksi käytetty yhdysmerkkiä ajatusviivan korvikkeena, vaatii tekstin saattaminen hyvään asuun sitä, että joku ihminen käy sen tarkasti läpi ja harkitsee jokaisen yhdysmerkin kohdalla, pitääkö se korvata ajatusviivalla.
Virtuaalinen näppäimistö tarkoittaa tässä kahta asiaa:
Nämä vaihtoehdot voivat olla käytössä yhtä aikaakin. Itse asiassa ensin mainittu toimiikin parhaiten silloin, kun käyttäjä voi nähdä ruudullaan näppäimistön kuvan, joka vastaa sitä, miten fyysinen näppäimistö kulloinkin toimii. Tämä on tilanne esimerkiksi UniPad-editorissa, jota on käytetty tässä dokumentissa esitettyjen ajatusten kokeiluun ja havainnollistamiseen.
Tämä merkitsee, että shift-2 tuottaa oikean suomalaisen lainausmerkin (eikä Ascii-lainausmerkkiä " kuten yleensä) ja heittomerkkinäppäin oikean suomalaisen heittomerkin eikä Ascii-heittomerkkiä. Ascii-heittomerkin tuottamiseksi tarvittaisiin Alt Gr -näppäin yhdessä heittomerkkinäppäimen kanssa. Tämä merkitsee, että näppäimistöltä voisi kirjoittaa totuttuun tapaan, paitsi jos todella tarvitaan kyseisiä Ascii-merkkejä.
Muista piirteistä on syytä huomata, että tässä asettelussa Alt Gr - tuottaa lyhyen ajatusviivan (en dash), vaikka se yllä olevassa kuvassa näyttääkin lyhyemmältä kuin yhdysmerkki (UniPadin fontin takia; tämä korjattaneen lähiaikoina) ja Alt Gr x tuottaa kertomerkin × ja Alt Gr o tuottaa asteen merkin °. Nämä perustuvat toki vain merkkien ulkoasun samantapaisuuteen mutta lienevät helpot muistaa ja käyttää. Selityksenä mainittakoon vielä, että Alt Gr:n kanssa käytettynä välilyöntinäppäin tuottaa tässä asettelussa sitovan välilyönnin (no-break space, NBSP).
Lisäksi ehdotukseni sisältää sen, että Alt Gr yhdessä tasonvaihtonäppäimen (shift) kanssa käytettynä tuottaisi
Ehdotus on kompromissi erilaisten tarpeiden ja rajoitusten välillä. Epäilyttävintä ehkä on, että Ascii-lainausmerkkiä " ei tuotettaisi sillä näppäimellä, jonka näppäinhatussa kyseinen merkki näkyy! Mutta toisaalta kyseiselle näppäimelle Alt Gr:n ja shiftin kanssa käytettynä on erittäin luonnollinen muu funktio: yläindeksi 2:n tuottaminen. Lisäksi Ascii-lainausmerkkiä yleensä tarvitaan sellaisissa yhteyksissä, joissa tarvitaan myös Ascii-heittomerkkiä, esimerkiksi ohjelmoinnissa, ja näillä merkeillä on hyvin samantapaista käyttöä esim. merkkijonojen rajoittimina, jolloin on jotenkin luontevaa, että ne saadaan samasta näppäimestä, erona vain shiftin käyttö.
Pitkän ajatusviivan tuottamisen suhteellinen hankaluus on osittain tarkoituksellista - onhan varsinainen ajatusviiva yleensä osoitus ajatuksen katkeamisesta. Lyhyempi viiva, joka sopii rajakohtailmaisuihin, on yleisemmin tarvittava - ainakin tyylikkäässä tekstissä. Lisäksi tuntuu kohtalaisen luonnolliselta, että näppäimestä, josta saa yhdysmerkin (-) tai pitkän alaviivan (_) sen mukaan, käytetäänkö shift-näppäintä, saa Alt Gr -näppäintä lisäksi käytettäessä vastaavasti lyhyemmän tai pitemmän ajatusviivan. Ehkä ajatus ei ole hirmuisen looginen, mutta se voisi olla helposti muistettavissa. Toisaalta mitään loogisempaakaan tapaa tuottaa ajatusviivoja ei taida olla, ainakaan, jos halutaan käyttöön sekä pitkä että lyhyt viiva.
Edellä kuvatun näppäimistöasettelun olen tehnyt
ja sitä kokeillut UniPadillä, jossa on varsin
helppoa tehdä sellaisia asetteluja. Käytännössä
vain avataan merkistökartta, jossa ovat
kaikki Unicode-merkit, ja siitä voi "vetää"
halutut merkit haluttuihin paikkoihin
näppäimistöön. No, se vaatii hiukan opettelua
ja totuttelua sujuakseen kunnolla. Vaihtoehtona
on kirjoittaa haluttu näppäimistöasettelu
XML-muotoisena datana tiedostoon ja käskeä Unipadiä
käyttämään sitä
(Keyboard-valikon kohdasta Load...)
Edellä kuvattu näppäimistöasetteluni
on saatavilla sellaisena kuvauksena, nimellä
Finnish-Extended.ukb
.
Virtuaalisia näppäimistöjä voisi ajatella käytettävän paitsi eri editoreissa ja tekstinkäsittelyohjelmissa, joissa ne voisivat olla käyttäjän itsensä säädeltävissä, myös erilaisissa yleisemmissä käyttöliittymissä.
Ajatellaan esimerkiksi Web-sivulla olevaa lomaketta. Kirjoitettaessa tekstiä lomakkeen kenttään saatetaan tarvita merkkejä, joita näppäimistöltä ei saa aikaan suoraan. Tämä voi merkitä melkoisia ongelmia. Ajatellaan vaikkapa tilannetta, jossa herra V. Väinämöinen on ulkomaanmatkalla ja käyttää hänelle aivan outoa näppäimistöä eikä tiedä, miten siitä saisi ä:n ja ö:n, mutta hänen pitäisi silti voida kirjoittaa nimensä esimerkiksi ilmoittautumislomakkeeseen. Hiukan hankalakin tapa kirjoittaa ä ja ö olisi parempi kuin ei mitään tapaa.
Yksi vaihtoehto, jolla tilannetta voidaan jossain määrin parantaa, on JavaScriptillä toteutettu käyttöliittymän lisuke, jolla voi valita lisämerkkejä kuvaruudulla näkyvästä virtuaalinäppäimistöstä. Ohessa on yksinkertainen lisuke, jolla voidaan kirjoittaa ä- ja ö-kirjaimia. Paljon yleisempi, mutta samalla hankalakäyttöisempi, väline on kokeiluni, jossa merkkejä voidaan syöttää vaihdettavissa olevalta virtuaalinäppäimistöltä. Periaatteessa tällaisella lisukkeella voitaisiin siis toteuttaa minkä tahansa Unicode-merkkien syöttäminen ainakin silloin, kun käytettävä järjestelmä pystyy merkit esittämään, miksei muutenkin, sillä eihän merkkien näkeminen ole absoluuttisen välttämätöntä, jotta merkit voitaisiin syöttää. (Periaatteessahan merkki voidaan ilmaista nimensä, Unicode-koodinumeron tai muun yksikäsitteisen tunnisteen avulla.)
Olisi myös ajateltavissa, että esimerkiksi suomenkieliseen Web-sivuun, jolla on lomake, liittyisi JavaScriptillä toteutettu kokonainen virtuaalinen näppäimistö, joka vastaisi suomalaista näppäimistöä. Tämä voisi merkitä varsinaisen näppäimistön toiminnan muuttamista, joskin tämä vaatisi hiukan mutkikkaamman koodin, joka ei toimisi kaikissa JavaScriptiä tukevissa selaimissa.
Kenties voitaisiin kehittää myös jonkintasoinen kansallinen normi tällaisille virtuaalisille näppäimistöille. Olisihan hyvä, jos eri ohjelmissa olisi käytettävissä samanlaiset menettelytavat. Näin saataisiin myös kokemuksia siitä, miten sellainen näppäimistö toimii, ja niiden pohjalta ehkä myöhemmin tehtäisiin käyttöjärjestelmään integroituja virtuaalisia näppäimistöjä (yleisiä näppäimistöasetuksia) ja kenties fyysisiäkin näppäimistöjä, joissa näppäinhatut vastaavat kyseisiä asetuksia.