A Hatszögletű Billentyűzet

Óriási fölfedezést tettem. Az AnySoftKeyboard sokkal jobban használható portrémódban. Fekvő képernyőn egy több méter széles, óriási felület, amin még az olyan betűpárok is Darvas Iván hosszúságú karlóbálásokat igényelnek, mint az EK, az AL-ről nem is beszélve. Állón viszont aránylag egész jól használható. Persze továbbra is csak betűnkénti pötyögéssel, amihez ez a kiosztás teljesen alkalmatlan, de legalább az ember le tudja már írni rajta, amit akar. Nagyjából. Csigalassan.
  Android blogunk szerzőjének, Thonnak megígértem, hogy leírom, mi kellene a Hatszögletű Billentyűzetbe. A Kinesát hat éve használom, a Kissy majdnem teljes szövegét ezzel írtam (az elején valamicskét még nem), isteni praktikus, nagyon gyors és kényelmes.
  De Androidhoz egész másképpen kell adaptálni, erre akkor jöttem rá, amikor elfordítottam az Androidot. (Egyszer majd keresni kell valami elnevezést magára a gépre.) Ez a rendszer három okból is sokkal változékonyabb, mint a Palm: a képernyőméretek különbözőek, a felhasználók ujjait is különböző méretekben gyártják, és a képernyő két oldala között nagyobb a méretkülönbség.

Mindebből az következik, hogy egy igazi komoly ⬡-programot feltehetően más-más billentyűzettel fognak használni olyan emberek, akiknek amúgy megfelel ugyanaz a kiosztás, csak mások a képernyő- és ujjméreteik. Ezért célszerűnek látom szétválasztani a „fizikai” billentyűket azok funkciójától. Vagyis a kész programban külön-külön cserélhetővé tenném őket. Lenne egyfelől egy üres hatszögrács, illetve voltaképpen koordinátasor-gyűjtemény, hiszen a legcélszerűbb, ha nem azt tároljuk, hogy „itt van egy hatszög, ekkora”, hanem hat koordinátapárt minden gombhoz, avagy éppen négyet, ötöt, akárhányat. Nem kell azoknak okvetlenül hatszögletűnek lenni, ha a felhasználónak másmilyen tetszik. Ezeket egyezményes azonosítókkal látjuk el, Q gomb, W gomb, E gomb, ENTER gomb, SPACE gomb. És lenne másfelől egy funkciólista, amely közli, hogy mi a Q gomb jelentése és felirata. Valamint harmadikként a színeket tárolhatnánk külön.
  Vagyis van egy billezet a képernyődön, mondjuk lila betűgombokkal balról és sárga számgombokkal jobbról. Ha kicseréled a koordinátákat, akkor ugyanazokat a betűket és számokat látod ugyanazokban a színekben, de QWERTY-ből átváltoznak KINESA vagy akármi más rendszerré. Ha a feliratokat cseréled ki, akkor ugyanott maradnak a gombok és ugyanúgy lilák meg sárgák lesznek, de mondjuk görög lesz. Ha pedig a színeket, akkor ugyanott maradnak és ugyanazt fogják jelenteni, de zöldek és fehérek lesznek.
  Mindezt persze célszerűen csomagokba kell fogni, hogy együtt is cserélhetőek legyenek, illetve feltehetően az lesz a legjobb, ha egy csomagba több méretet pakolhat az ember. Ilyenek jelenhetnek meg a programhoz: „Szlovák billentyűzet 5, 8 és 10 hüvelykre, vékony ujjra”, mert az illetőnek ekkorák voltak, erre tudott tervezni. Később esetleg valaki hozzteszi a 9 hüvelykes változatot, másvalaki megnöveszti a gombokat vastag ujjhoz stb.
  Ez azért állati fontos, mert akinek vastag az ujja, az a pici gombokat el se találja, csak nyomkodja tehetetlenül, akinek pedig vékony, annak a nagy gombok fölösleges távolságokat jelentenek, amiket értelmetlenül kell megtenni minden egyes ujjmozdulatnál. Palmon ez nem volt probléma, mert a stylus mérete adott, egységesen lehetett méretezni hozzá. Megmértem androidos vonalzóval, a Kinesa 22 milliméter magas a Palm képernyőjén. Öt és fél sornyi billentyű alig több mint két centiben. Ujjal ezt nem lehetne, nekem elég vékony ujjaim vannak, de simán le tudok takarni egy ujjal hét gombot hatszög alakban.

Lépjünk tovább. A gomboknak nem muszáj mind hatszögletűnek lenni, a myKbd-ben se lett volna, de amikor ezt fölvetettem Alexnek, azt mondta, persze hogy nem, átírhatom a resource-ot. Kösszépen. Szerintem a myKbd szerkezete merev, bár az ottani célokra megfelel, de miért ne lenne a mi programunk flexibilisebb? (És egy könnyebben kiejthető névre is szüksége lesz.) Például ha valakinek úgy tartja kedve, egy hatszögrács lehetne az írógép-billentyűzet, egy másik valamivel arrébb a számbillezet, egy harmadik területen a kurzornyilak. Amik esetleg négyszögletesek. Számtalan okból akarhat valaki különböző alakú gombokat, ami azt is okozza, hogy itt-ott hézag lesz köztük. Nekünk tehát definiálni, pontosabban definiálhatóvá tenni kell, hogy mi legyen, ha az ujj rácsúszik a hézagra; ha keresztülcsúszik a hézagon; ha külön a hézagot érinti meg. Éspedig hézagonként külön-külön.

Modern billentyűvezérlő nem lehet meg makrótámogatás nélkül. A minimum, hogy egy gomb tudjon
  – szöveget beírni, több karaktert is;
  – alkalmazást indítani;
  – copy, cut, paste funkciókat működtetni;
  – a dátum és idő különböző elemeit kiírni;
  – a rendelkezésre álló üzemmódokat váltogatni;
  – kiosztást cserélni.
  Utóbbival érhető el, hogy mondjuk az arab–orosz szótár számára a felhasználó rátehessen az arab billentyűzetére egy oroszba kapcsoló gombot, az oroszra pedig egy arabítót (mármint ha a két kiosztás nem fér el egyszerre a képernyőjén vagy úgy nem kényelmes neki).
  Továbbfejlesztett változatban, ami már nem biztos, hogy mindenkinek kelleni fog (sőt az sem, hogy okvetlenül kell bele) a gomboknak már illik tudni kis scripteket futtatni, amikben a fenti funkciók mellett minimum változókezelés, elágazás és szubrutinhívás is van.

Milyen tulajdonságai és képességei vannak egy adott gombnak?
  Van neki helye és formája (koordináták). Van egy kitöltési színe, esetleg mintája, alfacsatornával. Van felirata (egy vagy több karakter, esetleg ikon, bittérkép). És van egy vagy több hozzárendelt funkció. El kell, illetve lehet különíteni a következő eseteket:
  – megérintették; duplán érintették; hosszan érintették; rácsúszott az ujj; lecsúszott róla az ujj;
  – shifteletlen; shiftelt; egyéb váltók;
  – kisbetűs módban vagyunk; nagybetűsben vagyunk; különféle egyéb üzemmódokban vagyunk (CJK írásrendszerekhez);
  – honnan jött vagy hová ment tovább az ujj.
  Így például egy szélen, hézag mellett elhelyezett pont gomb jelenthet pontot, ha csak megnyomják, és kitehet a pont után még egy Entert is, ha a gombról kihúzzák az ujjat a hézagra. Vagy ahogy a felhasználónak kedve tartja.
  A gomb egyik tulajdonsága lehet, hogy előfordulhat-e stroke közepén. A myKbd-ben a szóköznél meg lehet adni, hogy ignore middle space in stroke, aminek hatására a szóközön át lehet haladni és az átellenes oldalain levő gombok egymással érintkezővé válnak. Ezt érdemes kiterjeszteni más gombokra is.

A jelenlegi androidos billezetek rendszeresen alkalmaznak kis popup ablakokat, amikben alternatív jelek jelennek meg. Nem zárkózom el az elől, hogy ha igény van rá, benne legyen a programban, de részemről köszönöm, nem. Lassítja, nehézkessé teszi az írást, hogy keresgélni kell, melyik gombon van a szükséges jel, azt lenyomva tartani, amíg a popup megjelenik, abból kiválasztani, ha többen vannak. Ezenfelül ha véletlenül túl soká tartottunk lenyomva egy gombot, akkor felugrik a popup, és onnantól csak az abban szereplő karakterek valamelyike jelenhet meg, a gomb alapjele nem. Telefonon esetleg szükség lehet rá, mert kevesebb gomb fér el, táblagépen nem igazán. A 10,1 hüvelykes képernyő kb. 21·12 centi, ebből levéve egy 21·3-as sávot (fekvő módban) 63 négyzetcentit kapunk, vagyis 1·1 centis gombokból 63-at lehet elhelyezni. Az elég sok. Álló módban ugyanezen a képernyőn 12·5 centiből kijön hatvan gomb, és még mindig nem használtuk el a fél képernyőt. (Igazából több jön ki, mert én négyzeteket számoltam, de hatszögekben gondolkodunk.)
  Telefonon ennek csak a töredéke jut, mondjuk a Palm TX elég nagy képernyője 8,6·4,8 cm, ennek a felét véve elhelyezhetünk húsz darab egy négyzetcentis gombot, ez semmire se elég, kisebbek kellenek, de ez legyen azok gondja, akik majd konkrétan nekiállnak billezeteket rajzolni a programunkhoz.
  A lényeg, hogy a popupok helyett praktikusabbnak tartom a váltókat. Nem a PC-s váltógombok, Shift, Ctrl, Alt, Win reprodukálását, hanem a tervező tetszése szerintieket. A váltógomboknak illik vizuálisan is jelezni, hogy milyen állapotban vannak, vagyis meg lehet adni másik feliratot, kitöltési színt, ikont, bittérképet. Sőt többfélét, mert több állapotuk is lehet. Célszerűen minimum három: kikapcsolt, bekapcsolt (egy gomb után visszakapcsol), rögzített (nem kapcsol vissza). De lehessen olyat is csinálni, aminek csak kettő van, vagy esetleg többféle jelentést adnak a gomboknak. Például zsebszámológépeken gyakran vannak olyan gombok, amiknek három jelentésük van háromféle színnel felírva, és egy vagy két gombbal lehet kiválasztani, hogy melyik szín érvényes.

Mindezek a gombok egy téglalap alakú területen jelennek meg, amit Windows alatt ablaknak, programozói nyelven formnak hívnak, Androidon fogalmam sincs. Legyen most a neve alap. Ennek is megvannak a tulajdonságai.
  Van neki mérete, többféle. Álló és fekvő módban, vékony és vastag ujjhoz, sok és kevés gombot tartalmazó kiosztásokhoz más-más méretű alap kell. El tudok képzelni például tízes billentyűzetet, amin csak a számjegyek és műveleti jelek vannak, és táblagépen a képernyő egyik sarkában jelenik meg, telefonon egy vékony csíkban. A gombok leírásának koordinátáit az alaphoz képest kell értelmezni. Az alap esetleg mozgatható (balkezeseknek áttehető a másik oldalra).
  Van neki színe, mintája, háttérképe, alfacsatornával.
  Ahol nincsenek gombok, hanem hézag van, ott az alapot látjuk és érintjük.

Feltehetően csak az alapon lehet majd érzékelni bizonyos gesztusokat, mert máskülönben összekeverednénk a gombok használatával. De lehet, hogy a pinch és spread például a gombokon is megy. Ezeket is fel lehet ismerni és funkciókat rendelni hozzájuk.
  A multitouchról programozói szempontból még semmit se tudok, ezért még nem igazán tudom megmondani, mi a teendő vele. A hatszögletű billentyűzet nem tízujjas gépeléshez való, hanem egyujjas csúsztatáshoz, de persze ettől még lehet rajta gépelni is.

Nem említettem külön, mert magától értetődő, hogy kezelni kell most már a teljes Unicode-ot, és hogy ez csúsztatós billezet. Ez az egyetlen módja, hogy érintőképernyőn igazán gyorsan és megbízhatóan lehessen írni, mert az ujjat felemelni, arrébb tenni időbe telik, és a sík, jellegtelen felületen nehéz pontosan célozni. A myKbd-nek van egy-két opciója, amiket érdemes megszemlélni, mint például a stroke margin, hogy milyen mélységig kell az ujjnak becsúsznia egy gomb területére, hogy az észlelve legyen. De mivel nálunk a gombok mérete változhat, feltehetően nem vagy nemcsak pixelben kell megadni, hanem milliméterben, illetve százalékban (a gomb középpontja és széle közötti távolság százalékában).

És hihetetlenül fontos, ami a myKbd-höz nem készült el (én csináltam egyet, de az se volt túl jó): egy WYSIWYG billentyűkiosztás-editor.

»»»»»»