Hi Andreas, 

Danke für dein Review! Es hat mich auf viele neue Ideen gebracht. 

On Tuesday 19 October 2010 21:36:47 wettstein...@solnet.ch wrote:
> > > Bisher wird allerdings nur shift berücksichtigt (bzw. Großbuchstaben),
> > > daher  dürften wir noch ein paar Kollisionen auf dem kleinen Finger
> > > verpassen (bei Sonderzeichen auf der dritten oder höheren Ebenen).
> > 
> > Ich arbeite gerade daran, das zu ändern.
> 
> Schau die Zeichenhäufigkeiten im Korpus an.  Für Englisch noch könnte es
> sich lohnen, den Apostrophen mitzunehmen, da er wegen Genitiv-s einen
> bevorzugten Kollisionsgegner hat.  Ansonsten zweifle ich, dass es sich
> rentiert, weitere Zeichen mitzunehmen.  

Ich denke, es eignet sich für Sonderlayouts, z.B. ein Kernel-Hacker-Layout, 
das auf den Linux kernel optimiert ist. [] könnte da einige Kollisionen 
bringen ({} und () nicht, weil davor und danach meist Leerzeichen kommen). 

Für Leute, deren Job Kernelprogrammierung ist, könnte sich die Optimierung 
lohnen. 

Genauso für Leute, die viel Griechisch oder mathematische Symbole schreiben.

> Zudem müsste man erst die
> Typographie im Korpus verifizieren: Was ist wirklich ein Bindestrich,
> was sollte eigentlich ein Gedankenstrich sein?  Was sollte anstelle der
> geraden doppelten ASCII-Anführungszeichen stehen, was anstelle des
> geraden ASCII-Apostrophen?

Dafür brauchen wir „nur“ einen korrekten Korpus :)

Es geht schließlich darum, das tippen zu können, was im Korpus steht.

> > Konkret ist meine Frage, ob das hier die korrekte Aufteilung von Ψ∃ ist:
> Wie tippst du Mod3L+Mod4L?  Mit den offiziellen Neo-Positionen würde ich
> dazu Klein- und Ringfinger nehmen, für Mod3L und Mod4L einzeln aber
> jeweils den kleinen Finger.

Ich nehme auch Kleinen- und Ringfinger, daher ist die Aufteilung sicher nicht 
perfekt. Ideal fände ich es ja, alle Modifier auf den Daumen zu haben. Dann 
ware M6 M3L+M4R. 

> Man könnte Modifierpaare wie virtuelle Tasten behandeln, die von einem
> virtuellen Finger bedient werden.  

Ich fände es grundlegend noch schöner, die feste Zuordnung der Finger auf die 
Tasten aufzulösen. 

Zum Beispiel hat mir eine Bekannte erzählt, dass sie im Tippkurs gelernt hat, 
dass bei Neo „sh“ das „s“ vom Zeigefinger und das „h“ vom Mittelfinger gedrückt 
werden sollte. 

Solche Bewegungen ließen sich dann auch abbilden. Beispielweise könnten die 
Finger durch Bewegungen der Hand verschoben werden: Wenn ich M3 drücke, ist 
meine Hand eine Taste nach links verschoben, so dass M4 auf dem Ringfinger 
liegt. Kosten würden dann allerdings nur noch durch Verzerrungen der Hand 
kommen, nicht mehr durch feste Kosten pro Taste. 

Die nötigen Änderungen wären vermutlich auch nicht allzu groß. Selbst die 
Kosten pro Taste könnten wir weiternutzen, indem sie einfach mit der Hand 
mitwandern. Nach einem s wäre ein k also günstiger als nach einem n. 

> > # Die Modifier beider Zeichen miteinander
> > '⇩⇙', M3L + M4R
> > '⇩⇘', M3L + M3R
> > '⇚⇙', M4L + M4R
> > '⇚⇘', M4L + M3R
> 
> Das ist das Bigrammgewicht Mod6R-Mod6L.  Hier müsste man allerdings noch
> berücksichtigen, dass Mod4R ausnahmsweise vom Ringfinger getippt wird.

Du meinst M4L, oder? 

Um das hier zu berücksichtigen, müsste die Handverschiebung von M3L-M4L 
erhalten bleiben, d.h. wir müssten komplett auf Trigramme wechseln (teuer). 

Alternativ könnten wir aus den Bigrammen für jedes Zeichen die 
Wahrscheinlichkeit dafür errechnen, dass die Hand beim ersten Zeichen 
verschoben ist, und damit dann alle Bigramme anpassen. Mehr als eine Spalte 
verschiebung dürfte allerdings zumindest bei 10-Finger-Tippen unnötig sein. 
Bei einhändiger Bedienung sieht es da schon ganz anders aus… 

> > # Die Modifier mit dem anderen Modifier der Taste
> > # sortiert – sollte das in beide Richtungen gehen, also 0.5*(m3-m4,
> > m4-m3)? '⇩⇚', M3L + M4L
> > '⇘⇙', M3R + M4R
> 
> Das sind die Einzeltastengewichte für Mod6L und Mod6R.  Die Summe der
> realen Einzeltastengewichte ist wäre ein guter Ausgangspunkt, eine
> Reduktion dafür, dass beide Tasten in mit einer Handbewegung erreicht
> werden, wäre zu überlegen.

Stimmt. Die einfachen Kosten pro Taste sind übrigens schon drin: 

COST_LAYER_ADDITION = [0, 15, 12, 10, 27, 22]

Das hatten wir auch schon im bisherigen Optimierungsdurchgang. 

Die Bigrammaufteilung kommt nur in Fingerwiederholungen, Bewegungsmustern, 
Handwechsel nach unbalance und Zeilenwechseln zum Tragen. 

Bei M4-M3 bedeutet das aktuell eine automatische Fingerwiederholung 
(fälschlicherweise). Da eine Fingerwiederholung 256 Strafpunkte gibt, sollte 
das um etwa Faktor 32 reduziert werden, so dass es insgesamt immernoch ein 
Vorteil ist, eine Taste zu haben, auch wenn sie auf Ebene 5 ist. 

Ein Gedanke, den ich noch hatte ist, bei uB die Fingerkollision von u und 
shift-L stärker zu werten als bei Bu, weil shift etwas früher gedrückt und 
gelöst wird als b. 

…ich glaube allerdings, die Idee ist auch von dir ;)

Um es zu aktivieren müsste ich jetzt nur noch 2 auskommentierte Codezeilen 
wieder reinnehmen :)

> > # Die Modifier mit den dazugehörigen Grundtasten
> > '⇩h', shiftL + h
> > '⇚h', M4L + h
> > '⇙e', M4R + e
> > '⇘e', M3R + e
> > 
> > # Die Modifier mit der jeweils anderen Grundtasten
> > '⇩e', shiftL + e
> > '⇚e', M4L + e
> > 'h⇙', h + M4R
> > 'h⇘', h + M3R
> 
> Mod3L, nicht shiftL, oder?  

Jupp, danke! 
Das Zeichen stimmt, nur der Name nicht :)

> Das sind Bigrammgewichte Mod6L mit
> Buchstabentaste und Buchstabentaste mit Mod6R mit Buchstabentasten.
> Auch hier müsste man noch bedenken, dass Mod4L irregulär getippt wird.

Ok, dann passt das soweit. Danke!

Das irreguläre Tippen von M4L habe ich mal als TODO eingefügt, auch wenn es 
nicht ganz einfach zu korrigieren sein wird.

> > # Die Grundtasten (auf Ebene 1)
> > 'he'
> 
> Das wenigstens ist klar.

:)

> Aber, wie gesagt, schon Ebene 3 lohnt sich kaum zu berücksichtigen,
> Ebene 5 und 6 kannst du für die Optimierung vergessen.

Dann wird der Code auch so gut wie nicht aufgerufen und tut entsprechend nicht 
sehr weh. 

In den Bigrammen tut eine zusätzliche if-Abfrage nicht sehr weh. In den 
Trigrammen wäre das etwas anderes… :)

Liebe Grüße, 
Arne

Attachment: signature.asc
Description: This is a digitally signed message part.

Antwort per Email an