= Neo 3 = Während der Fokus der Optimierung von Neo 1 zu Neo 2 die Anordnung der Sonderzeichen war, soll nun mit Neo 3 unter anderem die erste Ebene nochmals unter die Lupe genommen werden. Hintergrund ist, dass Neo 1 von Hanno bisher nur „von Hand“ auf die Häufigkeit der deutschen und englischen Buchstaben, Bi- und Trigramme optimiert wurde. In der dritten Version soll nun eine bessere Belegung mt Hilfe computergestützer Optimierung gefunden werden. Wir erzeugen dafür gemeinsam Layouts und sammeln die besten in EvolvedLayouts. Weiterhin existieren Überlegungen zu einer [wiki:Hardwareentwicklung eigenen Hardware] und der [wiki:Neo3/Modifierpositionen Neuanordnung der Modifier]. == Ansätze == Es gibt zwei vollständig lauffähige Optimierungsskripte. Andreas hat ein sehr schnelles [https://sites.google.com/site/ausderneowelt/ Optimierungsprogramm in C++] entwickelt. Arne hat ein langsameres [http://draketo.de/node/282 Optimierungsskript] in Python geschrieben, das als Ziel einfache Definitionen jeglicher Art von Kosten hat. Beide suchen mit evolutionären Algorithmen neue Belegungen. == Optimierungskriterien == [wiki:Neo3/Optimierungskriterien 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]. == Zwischenergebnisse in Benutzung == === Bone === {{{ jduax zclmwß' htieo bnrsgq⇘ fvüäö py,.k ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ` │ ← │ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ │ ⇥ │ j │ d │ u │ a │ x │ z │ c │ l │ m │ w │ q │ ' │ Ret│ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ │ ⇩ │ h │ t │ i │ e │ o │ b │ n │ r │ s │ g │ ß │ ⇘ │ │ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┤ │ ⇧ │ M4│ f │ v │ ü │ ä │ ö │ p │ y │ , │ . │ k │ ⇗ │ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┼────┬────┤ │Strg│ Fe │ Alt│ Leerzeichen │ M4 │ Fe │ Me │Strg│ └────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ }}} == 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 │ ⇗ │ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┼────┬────┤ │Strg│ Fe │ Alt│ Leerzeichen │ M4 │ Fe │ Me │Strg│ └────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ # 20.26 billion total penalty compared to notime-noeffort # 5.200 mean key position cost in file 1gramme.txt ( 14.97172742 ) # 1.462 % finger repeats in file 2gramme.txt ( 0.625756672 ) # 5.672 million keystrokes disbalance of the fingers ( 1.418243149 ) # 0.014 % finger repeats top to bottom or vice versa ( 0.096325632 ) # 1.337 % of trigrams have no handswitching (after direction change counted x 1 ) ( 0.7786491 ) # 3.644 billion (rows²/dist)² to cross ( 0.728944685051 ) # 0.027 hand disbalance. Left: 0.472553485553 %, Right: 0.527446514447 % # 0.115 badly positioned shortcut keys (weighted). # 1.183 no handswitching after unbalancing key (weighted). # 3.467 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) }}} == Andere Layouts zum Vergleich == === Neo 2 === {{{ xvlcw khgfqß´ uiaeo snrtdy üöäpz bm,.j ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ` │ ← │ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ │ ⇥ │ x │ v │ l │ c │ w │ k │ h │ g │ f │ q │ ß │ ´ │ Ret│ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ │ ⇩ │ u │ i │ a │ e │ o │ s │ n │ r │ t │ d │ y │ ⇘ │ │ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┤ │ ⇧ │ M4│ ü │ ö │ ä │ p │ z │ b │ m │ , │ . │ j │ ⇗ │ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴─┬─┴──┬┴───┼────┬────┤ │Strg│ Fe │ Alt│ Leerzeichen │ M4 │ Fe │ Me │Strg│ └────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ # 26.14 billion total penalty compared to notime-noeffort # 5.316 mean key position cost in file 1gramme.txt ( 15.30537094 ) # 4.915 % finger repeats in file 2gramme.txt ( 2.10366848 ) # 6.474 million keystrokes disbalance of the fingers ( 1.618522503 ) # 0.337 % finger repeats top to bottom or vice versa ( 2.314164224 ) # 2.495 % of trigrams have no handswitching (after direction change counted x 1 ) ( 1.4533227 ) # 4.934 billion (rows²/dist)² to cross ( 0.986984074596 ) # 0.011 hand disbalance. Left: 0.488482681216 %, Right: 0.511517318784 % # 0.057 badly positioned shortcut keys (weighted). # 1.956 no handswitching after unbalancing key (weighted). # 3.461 movement pattern cost (weighted). }}} === Qwertz === {{{ qwert zuiopü+ asdfg hjklöä