Version 3 (modified by NeoCon’10, 16 years ago) ( diff )

--

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 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 2010-05-05 und 2010-06-18. Ein erstes Ergebnis der Auswertungen und weiterer Tests ist 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 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│
└────┴────┴────┴────────────────────────┴────┴────┴────┴───┘
[['^', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '`', '←'],
 ['⇥', 'x', '.', 'o', 'v', 'ü', 'w', 'c', 'b', 's', 'z', 'q', '´', ()],
 ['⇩', 'h', 'e', 'a', 'i', 'u', 'd', 't', 'n', 'r', 'l', 'm', '⇘', '\n'],
 ['⇧', (), 'k', 'ö', 'ä', ',', 'y', 'f', 'g', 'p', 'ß', 'j', '⇗'],
 [(), (), (), ' ', (), (), (), ()]]
# 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 textcheck.py ausgewählt, um möglichst nahe an der normalen Mono-, Bi- und Trigrammverteilung des Deutschen zu sein)

Note: See TracWiki for help on using the wiki.