Millainen olisi kunnollinen suomalainen näppäimistö

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.

Miksi?

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ö

Virtuaalinen näppäimistö tarkoittaa tässä kahta asiaa:

  1. fyysisen näppäimistön toiminnan muuttamista, vaikkapa niin, että q-näppäin lähettääkin jonkin muun merkin kuin q-kirjaimen; muutos voi koskea näppäimen peruskäyttöäkin, esimerkiksi haluttaessa kirjoittaa kyrillisiä merkkejä tavallisella suomalaisella näppäimistöllä, tai se voi vaikuttaa vain siihen, miten näppäin toimii silloin, kun sitä käytetään yhdessä esim. Alt Gr -näppäimen (Alternate Graphic) kanssa
  2. jonkin näppäimistön kuvan esittämistä kuvaruudulla niin, että käyttäjä voi siitä esim. hiirellä napsauttamalla kirjoittaa merkkejä.

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.

Ehdotelma näppäimistöasetteluksi

Seuraavat kuvat esittävät yhden hahmotelman siitä, millainen voisi olla virtuaalinen näppäimistö, jolla voi kirjoittaa kunnolla suomea. Ensimmäinen kuva esittää tavanomaista perusnäppäimistö muutettuna vain siten, että Ascii-heittomerkin (') tilalla on oikea heittomerkki (), ja toinen kuva esittää, mitä näppäimistössä voisi olla Alt Gr:n takana eli mitä näppäimestä lähtisi, kun sitä näpäytetään Alt Gr:n ollessa alas painettuna.

[perusnäppäimistö]

[Alt Gr:n avulla saatavat merkit]

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 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

  • ison hattu-s:n ja ison hattu-z:n s- ja z-näppäimistä
  • pitkän ajatusviivan (em dash) yhdysmerkkinäppäimestä
  • yläindeksit ² ja ³ 2- ja 3-näppäimestä Ascii-lainausmerkin (") '-näppäimestä.

    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.

    Missä sitä voisi käyttää?

    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.)

    Tekstikenttä:

    Selaimesi ei tue JavaScriptiä, tai siitä on JavaScript-tuki disabloitu, joten valitettavasti et näe demoa.

    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.


    Viimeisimmän päivityksen ajankohta: 2000-11-14

    Jukka Korpela, Jukka.Korpela@hut.fi