Uživatelsky přívětivá platforma: Swyft Card a Canon Cat (I)

Žil byl jednou jeden Jef Raskin a ten se u Apple zabýval vývojem levného a snadno ovladatelného počítače.
I přišel Steve Jobs, nacpal do Macintoshe okenní prostředí, které bylo vytvářeno pro mnohem dražší pracovní stanici Lisa, a Macintosh nakonec vypadal úplně jinak, než si Jef Raskin na počátku představoval.

Ovšem okenní prostředí nenaplňovalo Raskinovu představu o efetivním využívání počítače.

Nutnost přehmatávat mezi klávesnicí a myší kdykoli, kdy chtěl uživatel například přesunout kurzor na jinou pozici v textu (nezapomeňme, že Steve Jobs tak moc důvěřoval myši, že Macintosh neměl zpočátku ani kurzorové klávesy), překlikávání mezi jednotlivými okny a klepání na ikony, to vše podle Raskina uživatele zdržovalo (a podle mých současných zkušeností s aplikacemi ve Windows nadále zdržuje) od opravdové práce.

Jeho představa uživatelské přívětivosti byla jiná.

Jeho představa neoddělovala operační systém a aplikace.
Sám systém byl aplikace.

Neznala ukládání souborů a vůbec odvrhovala souborový systém jako složitou věc, ve které se vyznat je pro uživatele spíše utrpení než přínos.
Na disku je zaznamenána aktuální podoba dokumentů včetně třeba aktuální polohy kurzoru.
Pracovat bylo možno s několika dokumenty.
Dokument byl dle potřeby čímkoli – textem, tabulkou, kalkulačkou nebo příkazem programovacího jazyka.
Podstatný byl rychlý pohyb v dokumentu, rychlé vyhledávání, rychlé přepínání dokumentů.

Při opravové práci by myš zdržovala, proto si Raskin vymyslel speciální funkční klávesy a co nejlépe zapmatovatelné klávesové zkratky.

Na Macintosh už nemohl, ale zaměřil se na jiný výtvor firmy Apple – na Apple ][, respektive na Apple //e.
Jeho nová firma vyrobila pro Apple //e SwyftCard – jednoduchou kartu, obsahující Raskinův nový firmware.

Mike Willegal v nedávné době Swyft Card prozkoumal, zdokumentoval a dokonce na eBay prodával pár replik této karty.
Takže ten, kdo má Apple //e, si může Raskinovu představu o tom, jak měl fungovat Macintosh, vyzkoušet na vlastním stroji.

Jef Raskin se u Apple ][ nezastavil, pokračoval vývojem počítače s procesorem Motorola 68000, s proporčním textem, ze kterého se stal Canon Cat – ale základ ovládání zůstal podobný, jako u Swyft Card.

Jak tedy systém podle Raskina vypadá?

V podstatě jako textový editor.
Na obrazovce je možné se pohybovat v několika dokumentech, něco psát, a počítač podle toho něco dělá nebo nedělá.

Nepřipomíná to příkazovou řádku, i když se to umí chovat podobně.

Textový editor, který je základem systému, svými schopnostmi trochu připomíná PipeDream od Marka Coltona (mimochodem též rallye závodníka) – ten existoval pro MS-DOS, Risc OS a tvořil i jednu ze zabudovaných aplikací Sinclairova Cambridge Z88.
Tam je také napsaný text podle kontextu odstavcem textu, buňkami tabulkového editoru, prvky databáze nebo něčím jiným.
(Pipedreamu je podobný jeho předchůdce Acornsoft View Professional pro BBC Micro, též od Marka Coltona, který v sobě integroval dřívejší programy Acorn View, ViewSheet a ViewStore.
O Pipedreamu jsem psal na dřívejším blogu v článku o Lotus Improv.)

Aby klávesnice Apple ][ obsahovala funkční klávesy, které jsou pro Swyft Card potřeba, dodávaly se přelepky.
ESC se změnil na „PAGE“, TAB na „LEAP AGAIN“, CTRL na „USE FRONT“, klávesy s jablkem na „LEAP“ (s vybarveným a nevybarveným kolečkem) a významem LEAP BACKWARD a LEAP FORWARD.
Z přední strany kláves s písmeny se nalepily další přelepky. Na A „INSERT“, D „SEND“, G „CALC“, L „DISK“ a N „PRINT“.

Canon Cat rozlišuje ještě PAGE a DOCUMENT (klávesa PAGE stištěná se shiftem), klávesu „UNDO“ a „LOCK“, má klávesu „TAB“, ale nemá klávesu „LEAP AGAIN“, tu nahrazuje stiskem LEAP a „USE FRONT“ současně.
Povely na klávesách pro „USE FRONT“ má rozšířené:
O „ADD SPELLING“, W „BOLD“, E „CAPS“, na A má „COPY“ místo „INSERT“, N „EXPLAIN“ a na J je „PRINT“, – „INDENT“, / „KEYBOARD“, V „LEARN“, +/= „LEFT MARGIN“, U „LINE SPACE“, X „LOCAL LEAP“, T „PARAGRAPH STYLE“, ‚ „PHONE“, * „RIGHT MARGIN“, na klávese „RETURN“ je „SEND“ a D „SEND CONTROL“, 1/2 „SETUP“, , „SORT“, na klávese „UNDO“ je „SPELL CHECK LEAP“, na „PAGE“ je „TITLES“, Q „UNDERLINE“.

Vzhled obrazovky na Swyft Card vypadá jako textový editor (ve znakovém režimu 80 znaků na řádek) s viditelným textem, kurzorem, oddělovači dokumentů a případně s označeným blokem, na Canon Cat je vidět i pravítko s tabulátory a ikonky formátování odstavce, řádkování, nastavené klávesnice a ukazatel volné paměti, aktivity disku, řádku s kurzorem a podobně.

Rozdíly jsou opravdu spíš v drobnostech, ale přesto se v následujícím popisu, pokud nebude uvedeno jinak, budu držet implementace na Swyft Card.

K pohybu v dokumentu a mezi nimi slouží leapování.
Jef Raskin tomuto způsobu pohybu věřil podobně, jako Steve Jobs věřil myši. Takže ani Swyft Card nevyužívá kurzorové klávesy!

Editor při psaní zobrazuje konce stránek, přičemž rozlišuje „page break“ a „page character“.
„Page break“ přijde sám, když naplníte počet řádek, odpovídající jedné stránce, je označen jednoduchou čarou.
„Page character“ vkládá sám uživatel a je označen dvojitou čárou.

Dokument na jedné disketě může mít maximálně 200 číslovaných stran, fyzicky se na disketu vejde asi 20 plných stran textu. Dokument může být rozdělen na více disket – to, co je uloženo na disketě, nemusí být číslováno od první strany, tím lze překročit omezení na 200 stran.

K posunu se místo kurzorových kláves používají obbě LEAP klávesy – jedna pro pohyb vzad a druhá vpřed.

Pohyb zvaný v manuálu „creeping“ je podobný pohybu kurzorovými klávesami – jednoduchhý stisk (a puštění) LEAP klávesy posune kurzor o jeden znak (vpřed nebo vzad podle použité klávesy).

Pak je tu pohyb zvaný „leaping“.

Stisknete příslušnou klávesu LEAP, podržíte a stisknete znak, na který se chcete dostat. Kurzor na něj skočí a vy klávesu LEAP můžete pustit.

Místo jednoho znaku můžete zapsat celý řetězec až 31 znaků. Držte klávesu LEAP a pište text, kurzor během psaní nalézá postupně jeho výskyt.

Pokud chcete najít jiný výskyt znaku nebo řetězce, není potřeba zadávat jej znovu, je tu klávesa „LEAP AGAIN“.
Stále držte příslušnou klávesu LEAP a stiskem „LEAP AGAIN“ skáčete mezi jednotlivými výskyty zadaného textu nebo znaku.
(Pokud není stištěna klávesa LEAP, funguje „LEAP AGAIN“ jako TAB.)

Puštěním klávesy LEAP se leapování ukončí a kurzor zůstane stát na nalezeném textu.

Zadání neexistujícího textu způsobí skok zpátky na původní pozici kurzoru.
Pokud chcete leapování zrušit, prostě zadejte text, který se v dokumentu nevyskytuje (třeba dostatečně dlouhou řadu znaků X).

Při zadávání řetězce během leapování jej můžete umazávat a opravovat stiskem DELETE. Hledaný řetězec se zkrátí a kurzor se vrátí na výskyt původního textu. Úplným smazáním se kurzor vrátí na výchozí pozici.

Zadaný řetězec zůstává v paměti i po puštění klávesy LEAP, takže lze střídat směr hledání.
Stisknete LEAP FORWARD, zadáváte hledaný text.
Swyft Card sice funguje tak, že při dosažení konce dokumentu se začne prohledávat od začátku, ale můžete směr hledání otočit.
Pusťte LEAP FORWARD, stiskněte LEAP BACKWARD a bez zadávání nového textu (který by smazal ten předchozí) stiskněte „LEAP AGAIN“.

Při vyhledávání se malá písmena v zadaném řetězci interpretují jako „case insensitive“, tedy vyhledána jsou jak malá, tak velký písmena, ale při zadání velkého písmene se vyhledává výskyt opravdu jen velkého.
Tedy hledání slova „Leap“ nalezne kromě „Leap“ i „LEAP“, ale ne výskyt „leap“.

Pro leapování mezi větami lze použít hledání znaku tečka.
Stejně tak lze při vyhledávání použít znak RETURN pro leapování mezi odstavci nebo stiskem PAGE leapovat mezi jednotlivými stránkami.

Lze označovat bloky textu.
Obvykle tak, že skočíte na začátek označovaného textu, stisknete LEAP, leapnete na jeho konec a stisknete obě LEAP klávesy.
Pokud jsou označeny znaky, které nechcete, můžete rozsah upravit creepováním – stiskem LEAP BACKWARD nebo LEAP FORWARD skočíte na začátek nebo konec označeného bloku, creepováním (stisky příslušné LEAP klávesy) si nastavíte kurzor a stisknete oba LEAPy.

Další způsob je ten, že stiskem obou LEAP kláves označíte text, napsaný od posledního LEAPování.

Některé příkazy (PRINT, CALC, SEND) toto dělají automaticky – označí text napsaný od posledního LEAPování a provedou s ním svou akci.
Pokud již byl nějaký blok označen, příkaz, automaticky označující blok, k již označenému bloku přidá to, co bylo napsáno od posledního leapování.

Asi uživatelsky nejpřívětivější je třetí způsob, kdy stisknete (a pustíte) obě klávesy LEAP, napíšete text a stisknete obě klávesy LEAP.
Nasaný text se označí jako blok.

Mazání textu se provádí klávesou DELETE, maže označený text, při autorepeatu maže dále znak po znaku. Text smazaný znak po znaku nelze obnovovat.
Pokud je označený blok prázdný, maže se vpravo od kurzoru. Při označeném bloku textu se maže vlevo od kurzoru.
To má svůj důvod – pokud něco napíšete, a chcete to opravit, nachází se text určený ke smazání vlevo.
Pokud vyhledáváte nějaký text, který chcete smazat, a leapnete na něj, nachází se text vpravo od kurzoru.

Stiskem INSERT (USE FRONT + A) je možné smazaný blok opět obnovit.
Text mazaný po znaku obnovit nejde.

INSERT lze použít i ke kopírování.
Označte blok, smažte DELETE, stiskněte INSERT. Blok se obnoví a zůstane ve „schránce“. Leapněte na nové místo a stiskem INSERT text znovu vložte.

Dalším mačkáním INSERT se text vkládá znovu a znovu, dokud „text ve schránce“ (obnovovací buffer smazaného textu) nenahradíte jiným (novým smazáním).

INSERT jde využít i pro funkci „najít a nahradit“.
Napište a smažte text, kterým se bude nahrazovat (napsat text, leapnout na jeho začátek, zmáčknout oba LEAPy, stisknout DELETE).

Leapněte na text, který chcete nahradit, opakovaným stiskem DELETE jej smažte znak po znaku.
Stiskem INSERT (USE FRONT + A) vložte nový text.

Další výskyty textu už nahrazujete jen pomocí LEAP AGAIN, DELETE, INSERT.

Nu, zatím jsme se seznámili jen s editorem, ale ne s tím, co doopravdy umí dělat.
Povely DISK, CALC, SEND a PRINT tedy počkají na pokračování příště…