= Neo 3 = Während der Fokus der Optimierung von Neo 1 zu Neo 2 die Anordnung der Sonderzeichen war, soll nun mit Neo 3 die erste Ebene nochmals unter die Lupe genommen werden. Hintergrund ist, dass Neo 1 von Hanno bisher nur „von Hand“ auf die wichtigsten dt. und engl. Bi- und Trigramme optimiert wurde. In der dritten Version soll nun eine bessere Belegung mt Hilfe computergestützer Optimierung gefunden werden. == Optimierungskriterien == Arne hat ein [http://draketo.de/node/282 Optimierungsskript] geschrieben, welches mittels eines evolutionären Algorithmus ein besseres Layout sucht. Kriterien sind: * Gute Tastenpositionen (auf der Grundlinie ist z.B. besser als links unten). * Möglichst wenige Fingerwiederholungen (einen Finger mehrfach hintereinander nutzen). * Handwechsel bei Richtungswechsel (horizontal). * Wenige Zeilenwechsel auf der gleichen Hand. * Handwechsel, wenn eine Hand aus ihrer Grundposition gezogen wird. * Gleichmäßige Fingerbelastung (aber nur halbe Last auf dem Kleinen, weil er sonst frühzeitig aussteigen kann). * Minimierung bestimmter Fingerübergänge (z.B. Mittel- auf Ringfinger). Die Schwierigkeit besteht in der Abwägung der einzelnen Kriterien, da diese von Person zu Person unterschiedlich bewertet werden. Die verwendete Tastatur spielt natürlich auch eine Rolle. Außerdem beieinflussen sich die Kriterien gegenseitig, wodurch einer passenden Gewichtung eine wichtige Rolle zukommt. Um eine gute Gewichtung der Kriterien zu finden, müssen daher optimierte Layouts von möglichst vielen verschiedenen Leuten getestet werden. Außerdem können so noch fehlende Kriterien gefunden werden. Erste Schritte dazu sind die Auswertungen von [http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/empirie/2010-05-05-eval.txt 2010-05-05] und [http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/empirie/2010-06-18-eval.txt 2010-06-18]. Ein erstes Ergebnis der Auswertungen und weiterer Tests ist [http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/config.py config.py]. Um den Vergleich zu erleichtern, können Texte so umgeschrieben werden, dass die einzelnen Buchstaben denen auf der Tastaturbelegung entsprechen. Aus dem Text ASDF von QWERTZ würde bei der Konvertierung UIAE in Neo 2 werden, so dass ein Neo 2 Nutzer den Textfluss des QWERTZ-Layouts testen könnte. Im Optimierer macht das das Skript [http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/convert_text_between_layouts.py convert_text_between_layouts.py]. == Output des Optimierers == Ein aktuelles Zwischenergebnis ist: {{{ x.ovü wcbszq´ heaiu dtnrlm köä,y fgpßj ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ` │ ← │ ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬─────┤ │ ⇥ │ x │ . │ o │ v │ ü │ w │ c │ b │ s │ z │ q │ ´ │ Ret │ ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─┐ │ │ ⇩ │ h │ e │ a │ i │ u │ d │ t │ n │ r │ l │ m │ ⇘ │ │ ├────┬┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬┴────┴───┤ │ ⇧ │ M4│ k │ ö │ ä │ , │ y │ f │ g │ p │ ß │ j │ ⇗ │ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬───┤ │Str │ Fe │ Al │ Leerzeichen │ M4 │ Fe │ Me │Str│ └────┴────┴────┴────────────────────────┴────┴────┴────┴───┘ # 19.4945368777 billion total penalty compared to notime-noeffort # 5.20024710029 mean key position cost in file 1gramme.txt ( 14.97172742 ) # 1.46203171006 % finger repeats in file 2gramme.txt ( 0.625756672 ) # 5.67297259958 million keystrokes disbalance of the fingers ( 0.907675615 ) # 0.0140660833892 % finger repeats top to bottom or vice versa ( 0.096325632 ) # 1.33706504472 % of trigrams have no handswitching (after direction change counted x 1 ) ( 0.5190994 ) # 3.64472342525 billion (rows²/dist)² to cross ( 0.728944685051 ) # 0.0274465144465 hand disbalance. Left: 0.472553485553 %, Right: 0.527446514447 % # ( 0.1151616616 badly positioned shortcut keys (weighted).) # ( 1.18313572 no handswitching after unbalancing key (weighted).) # ( 3.46710072 movement pattern cost (weighted).) }}} Ein auf dieses Layout konvertierter Text für Nutzer von Neo 2 sieht so aus: Ket katir rot rlhu ier ,aat Üedlyinit clr siy arsitir Niy,id irnbitrnp adf sei Fhuannir aof siy Ueyyid qo baddir gimarrirp fehu adf ,tlniünltir uitaoffniddnir ors sayen yieri fhudeyyfnir Gibwthunormir gifnänemnirv Für Qwertz-Tipper sieht er so aus: Zfl zdlsk kgl keua sfk ,ddl Yföeäsjsl rek hsä dkhslsk Jsä,sö skjnslkjv döo hfs Ouadjjsk dgo hsä Afääsö pg ndöösk ismdkkskv ofua döo ,lejsyjelsk asldgoojsööjsk gkh hdäfj äsfks ouaöfääojsk Isntluajgkmsk isojcjfmjskw Das Original ist: Wir waren nur noch ein paar Kilometer von dem anderen Tempel entfernt, als die Schatten aus dem Himmel zu fallen begannen, sich als Protektoren herausstellten und damit meine schlimmsten Befürchtungen bestätigten. (Der Text ist mit [http://bitbucket.org/ArneBab/evolve-keyboard-layout/src/tip/textcheck.py textcheck.py] ausgewählt, um möglichst nahe an der normalen Mono-, Bi- und Trigrammverteilung des Deutschen zu sein) === Bedeutung der Werte === {{{ xoä.ü wcslzq´ heaiu dtrnmb köv,y fgßjp # 19.5707274099 billion total penalty compared to notime-noeffort → Gesamtkosten # 5.20537748476 mean key position cost in file 1gramme.txt ( 14.98649801 ) → Durchschnittskosten pro Taste # 1.36734358818 % finger repeats in file 2gramme.txt ( 0.585229696 ) → Fingerwiederholungen in Prozent der Gesamtanschläge # 6.03645600705 million keystrokes disbalance of the fingers ( 0.965832961 ) → Disbalance der Finger: Wie weit weicht die Lastverteilung vom Ziel ab? Welche Einheit hat der Messwert? → Standardabweichung :) (heißt: akut unklar) # 0.0205566265665 % finger repeats top to bottom or vice versa ( 0.140773376 ) → Fingerwiederholungen von der unteren in die obere Zeile (oder umgekehrt) # 1.25755658986 % of trigrams have no handswitching (after direction change counted x 1 ) ( 0.7323468 ) → Keine Handwechsel nach Richtungswechsel (in Prozent der getippten Trigramme) # 2.61460336638 billion (rows²/dist)² to cross ( 0.522920673276 ) → Zeilenwechsel: eine nach oben: 1, zwei nach oben: 4, geteilt durch den Abstand in Spalten und das ganze quadriert. # 0.0274465144465 hand disbalance. Left: 0.472553485553 %, Right: 0.527446514447 % → Belastung der Hände # ( 0.1151616616 badly positioned shortcut keys (weighted).) →  Kosten bei schlecht positionierten xcvz # ( 1.17525416 no handswitching after unbalancing key (weighted).) → Kein Handwechsel nach Tasten, die die Hand aus dem Gleichgewicht ziehen. # ( 3.46710072 movement pattern cost (weighted).) →  Kosten von Fingerübergängen (bisher nur abgeschätzte Kosten der Übergänge) }}}