Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-11-20 Diskussionsfäden Arne Babenhauserheide
On Friday 22 October 2010 20:40:27 wettstein...@solnet.ch wrote:
> Wenn du an einem Tag soviel tippst, dass das Ergebnis statistisch
> brauchbar ist, bist du wirklich schnell.  Und wenn es darin nicht vor
> Tippfehlern wimmelt bist du sehr sorgfältig.  Und wenn das Ganze dann
> noch irgendwie repräsentativ ist, bist du sehr durchschnittlich, und das
> passt nicht zu «sehr schnell» und «sehr sorgfältig».

Das stimmt auch wieder :)

> > > Ich bin von meiner Ansicht abgerückt.  Heute behaupte ich, man müsste
> > > die u-ShiftL-Kollision normal und die von u-b Kollision schwächer
> > > werten, weil zwischen u und b ja noch eine Taste (ShiftL) gedrückt
> > > wird. Das ist ein Spezialfall einer «indirekten Kollision»: Einer
> > > Kollision zwischen Tasten, zwischen denen eine weitere Taste mit der
> > > anderen Hand oder mit dem Daumen getippt wird.  Mein aktuelles
> > > Lieblingsthema.
> > 
> > Könntest du mir das erklären? Am besten direkt auf der Liste :)
> 
> Es geht um Sequenzen von drei Tasten, von denen die erste und die letzte
> auf derselben Hand liegen, die mittlere aber nicht.  Solche Sequenzen
> mit zwei Handwechseln sind schnell zu tippen.  Daher kann man sich
> vorstellen, dass die Position der ersten Taste einen Einfluss darauf
> hat, wie leicht oder schnell die dritte zu tippen ist.

Das klingt klasse! Das Gefühl hatte ich nämlich auch schon, dachte aber, dass 
es wohl eher eine fixe Idee ist. Aber nachdem du sie nun bereits durchdacht 
hast, sollte ich sie wohl mal implementieren :)

if is_left(pos1) is is_left(pos3) is not is_left(pos2): 
  (add bigram cost)

> Faktor könnte vom Tippaufwand der mittleren Taste abhängen: Je besser
> oder schneller die mittlere Taste getippt werden kann, desto grösser der
> Faktor.  Das ist aber vermutlich nur eine unnötige Komplikation.

Das könnten wir machen, aber erstmal kommt es nur in die TODO :)

> Sequenzen wie bei der Eingabe von «uB», wenn u und b auf der selben Hand
> sind, sind ein Spezialfall davon, wobei Shift die mittlere Taste im
> Tasten-Trigramm ist.  «Bu» ist ähnlich, aber nicht ganz gleich: Die
> erste Taste ist Shift und die mittlere b.  Allerdings muss Shift
> gehalten werden bis b gedrückt ist, daher beeinflusst Shift das u
> stärker als die erste die dritte Taste in normalen Trigrammen.  Der
> Vorfaktor vor dem Bigrammgewicht sollte daher grösser sein, aber nach
> wie vor kleiner eins.

Damit könnte ich also einfach den Code wiederverwenden. Allerdings müsste dann 
alles über trigramme laufen, und die sind nicht wirklich schnell (weil viel zu 
viele…). 

> Bei Trigrammen ohne Handwechsel kann die erste Taste natürlich auch
> bestimmen, wie gut die dritte zu tippen ist.  Die Situation ist aber
> viel verwickelter, da die mittlere Taste eine grosse Rolle spielt.

Ich hoffe, dass da die Auswirkungen ausreichend gering sind. Nur wenn die 2. 
Stelle (fast) wegfällt, sollte die 3. viel ausmachen. Zumindest, wenn die 
Auswirkungen ausreichend schnell fallen. Wenn das nicht der Fall sein sollte, 
wird das ganze hier *sehr* teuer… aber wenn es sein muss, muss es sein. 

Ich fühle mich gerade in meine Physik-Vorlesungen zurückversetzt: Quadrupole 
sind nur dann direkt sichtbar, wenn die Bipole sich aufheben (heißt: Die 2. 
Ableitung ist nur relevant, wenn die 1. wegfällt). Und ja, das muss man 
trotzdem rechnen… :)

> > Ich habe allerdings noch kein effizientes System im Kopf, um das sauber
> > zu machen. Wie hast du das implementiert?
> 
> Das kannst du im Optimierer sehen, in den Funktionen «aufwand» und
> «diff_aufwand», siehe http://wettstae.home.solnet.ch/opt.c (Falls jemand
> damit rumspielen will, ich habe das auch zusammen im Paket mit meinen
> Korpora, in http://wettstae.home.solnet.ch/Optimierer.tar.gz).

…dafür brauche ich vermutlich etwas länger… (code wirklich verstehen). 

> > Die Kosten von Tasten (nicht Zeichen) kann ich ja eigentlich
> > zwischencachen (die bleiben bei dem Layout ja gleich). Mappst du dann
> > einfach die Tastenpositionen und Kosten auf eine Matrix und schreibst
> > die Bigramme in Positionen um?
> 
> Genau.  Jede Taste hat einen Index zwischen 0 und ntaste-1, und zwei
> solcher Indices geben bezeichnen einen Eintrag in der Matrix mit vorab
> berechneten Bigrammkosten (Dazu kommen noch zusätzliche Indices für die
> Behandlung von Shift, aber das ändert nichts am Prinzip).

Matrizen in der Art habe ich inzwischen einmal getestet, allerdings suboptimal 
implementiert (alle Zeichen in der Matrix, statt nur Grundlinie + vorher die 
ngram-listen umschreiben, was ich eh machen muss). 

Mal sehen, was passiert, wenn ich die Matrizen nicht zu groß mache… 
(perfektionismus ist gerne mal überhaupt nicht perfekt :) ). 

Danke für die Tipps!

Liebe Grüße, 
Arne

--
Konstruktive Kritik: 

- http://draketo.de/licht/krude-ideen/konstruktive-kritik



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


Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-11-08 Diskussionsfäden wettstein509
> Das klingt klasse! Das Gefühl hatte ich nämlich auch schon, dachte aber, dass 
> es wohl eher eine fixe Idee ist. Aber nachdem du sie nun bereits durchdacht 
> hast, sollte ich sie wohl mal implementieren :)

Bei mir war es ein Überlegung, kein Gefühl, bis auf einmal, als ich
«debug» getippt habe – das sind bei meiner Belegung vier Handwechsel, d,
b und g liegen auf aber dem gleichen Finger.  Ich tippe oft «debug», und
meistens fällt mir nichts dabei auf.

> Damit könnte ich also einfach den Code wiederverwenden. Allerdings müsste 
> dann 
> alles über trigramme laufen, und die sind nicht wirklich schnell (weil viel 
> zu 
> viele…).

Wichtiger als die Wiederverwertung von Code ist, dass man nicht zu viele
Parameter einführt.  Die wachsen einem auch ohne Trigramme schon über
den Kopf.

Die Rechenzeit geht allerdings in der Tat merklich rauf.  Vielleicht
kann man Abschätzungen machen.  Wenn man die Belegung zweier Tasten
vertauscht und die Aufwandsänderung aufgrund von Einzeltastengewichten
und Bigrammen berechnet hat, könnte man so vielleicht beurteilen, ob die
Trigramme am Ergebnis (Verbesserung oder Verschlechterung) überhaupt
noch etwas ändern können.  Eine gute, schnelle Abschätzung zu machen ist
vermutlich nicht einfach.  Mit C++ kann man die Trigramme auch mit
Gewalt noch in akzeptabler Zeit behandeln, daher bin ich bisher bei der
Holzhammermethode geblieben.

> > Bei Trigrammen ohne Handwechsel kann die erste Taste natürlich auch
> > bestimmen, wie gut die dritte zu tippen ist.  Die Situation ist aber
> > viel verwickelter, da die mittlere Taste eine grosse Rolle spielt.
>
> Ich hoffe, dass da die Auswirkungen ausreichend gering sind. Nur wenn die 2. 
> Stelle (fast) wegfällt, sollte die 3. viel ausmachen. Zumindest, wenn die 
> Auswirkungen ausreichend schnell fallen.

Ich denke, wenn man mit QWERTZ «oj.» tippt hat den Paradefall: Zwei
harmlose Bigramme, ein günstig gelegener mittlere Buchstabe, aber eine
«Kollision» mit weitem Sprung zwischen erstem und letztem Zeichen.

>  Wenn das nicht der Fall sein sollte, 
> wird das ganze hier *sehr* teuer… aber wenn es sein muss, muss es sein. 

Das ist «nur» noch eine Verdoppelung der Rechenzeit.

> Ich fühle mich gerade in meine Physik-Vorlesungen zurückversetzt: Quadrupole 
> sind nur dann direkt sichtbar, wenn die Bipole sich aufheben (heißt: Die 2. 
> Ableitung ist nur relevant, wenn die 1. wegfällt). Und ja, das muss man 
> trotzdem rechnen… :)

Ja, wir machen hier eine Entwicklung des Tippaufwands nach Ordnung der
n-Gramme.  Wenn wir verlangen, dass die Kosten von allen n-Grammen
nichtnegativ sind, muss das sogar konvergieren.  Leider sind bei mir
manche Kosten negativ…

Andreas



Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-11-08 Diskussionsfäden Arne Babenhauserheide
On Friday 22 October 2010 20:40:27 wettstein...@solnet.ch wrote:
> Wenn du an einem Tag soviel tippst, dass das Ergebnis statistisch
> brauchbar ist, bist du wirklich schnell.  Und wenn es darin nicht vor
> Tippfehlern wimmelt bist du sehr sorgfältig.  Und wenn das Ganze dann
> noch irgendwie repräsentativ ist, bist du sehr durchschnittlich, und das
> passt nicht zu «sehr schnell» und «sehr sorgfältig».

Das stimmt auch wieder :)

> > > Ich bin von meiner Ansicht abgerückt.  Heute behaupte ich, man müsste
> > > die u-ShiftL-Kollision normal und die von u-b Kollision schwächer
> > > werten, weil zwischen u und b ja noch eine Taste (ShiftL) gedrückt
> > > wird. Das ist ein Spezialfall einer «indirekten Kollision»: Einer
> > > Kollision zwischen Tasten, zwischen denen eine weitere Taste mit der
> > > anderen Hand oder mit dem Daumen getippt wird.  Mein aktuelles
> > > Lieblingsthema.
> > 
> > Könntest du mir das erklären? Am besten direkt auf der Liste :)
> 
> Es geht um Sequenzen von drei Tasten, von denen die erste und die letzte
> auf derselben Hand liegen, die mittlere aber nicht.  Solche Sequenzen
> mit zwei Handwechseln sind schnell zu tippen.  Daher kann man sich
> vorstellen, dass die Position der ersten Taste einen Einfluss darauf
> hat, wie leicht oder schnell die dritte zu tippen ist.

Das klingt klasse! Das Gefühl hatte ich nämlich auch schon, dachte aber, dass 
es wohl eher eine fixe Idee ist. Aber nachdem du sie nun bereits durchdacht 
hast, sollte ich sie wohl mal implementieren :)

if is_left(pos1) is is_left(pos3) is not is_left(pos2): 
  (add bigram cost)

> Faktor könnte vom Tippaufwand der mittleren Taste abhängen: Je besser
> oder schneller die mittlere Taste getippt werden kann, desto grösser der
> Faktor.  Das ist aber vermutlich nur eine unnötige Komplikation.

Das könnten wir machen, aber erstmal kommt es nur in die TODO :)

> Sequenzen wie bei der Eingabe von «uB», wenn u und b auf der selben Hand
> sind, sind ein Spezialfall davon, wobei Shift die mittlere Taste im
> Tasten-Trigramm ist.  «Bu» ist ähnlich, aber nicht ganz gleich: Die
> erste Taste ist Shift und die mittlere b.  Allerdings muss Shift
> gehalten werden bis b gedrückt ist, daher beeinflusst Shift das u
> stärker als die erste die dritte Taste in normalen Trigrammen.  Der
> Vorfaktor vor dem Bigrammgewicht sollte daher grösser sein, aber nach
> wie vor kleiner eins.

Damit könnte ich also einfach den Code wiederverwenden. Allerdings müsste dann 
alles über trigramme laufen, und die sind nicht wirklich schnell (weil viel zu 
viele…). 

> Bei Trigrammen ohne Handwechsel kann die erste Taste natürlich auch
> bestimmen, wie gut die dritte zu tippen ist.  Die Situation ist aber
> viel verwickelter, da die mittlere Taste eine grosse Rolle spielt.

Ich hoffe, dass da die Auswirkungen ausreichend gering sind. Nur wenn die 2. 
Stelle (fast) wegfällt, sollte die 3. viel ausmachen. Zumindest, wenn die 
Auswirkungen ausreichend schnell fallen. Wenn das nicht der Fall sein sollte, 
wird das ganze hier *sehr* teuer… aber wenn es sein muss, muss es sein. 

Ich fühle mich gerade in meine Physik-Vorlesungen zurückversetzt: Quadrupole 
sind nur dann direkt sichtbar, wenn die Bipole sich aufheben (heißt: Die 2. 
Ableitung ist nur relevant, wenn die 1. wegfällt). Und ja, das muss man 
trotzdem rechnen… :)

> > Ich habe allerdings noch kein effizientes System im Kopf, um das sauber
> > zu machen. Wie hast du das implementiert?
> 
> Das kannst du im Optimierer sehen, in den Funktionen «aufwand» und
> «diff_aufwand», siehe http://wettstae.home.solnet.ch/opt.c (Falls jemand
> damit rumspielen will, ich habe das auch zusammen im Paket mit meinen
> Korpora, in http://wettstae.home.solnet.ch/Optimierer.tar.gz).

…dafür brauche ich vermutlich etwas länger… (code wirklich verstehen). 

> > Die Kosten von Tasten (nicht Zeichen) kann ich ja eigentlich
> > zwischencachen (die bleiben bei dem Layout ja gleich). Mappst du dann
> > einfach die Tastenpositionen und Kosten auf eine Matrix und schreibst
> > die Bigramme in Positionen um?
> 
> Genau.  Jede Taste hat einen Index zwischen 0 und ntaste-1, und zwei
> solcher Indices geben bezeichnen einen Eintrag in der Matrix mit vorab
> berechneten Bigrammkosten (Dazu kommen noch zusätzliche Indices für die
> Behandlung von Shift, aber das ändert nichts am Prinzip).

Matrizen in der Art habe ich inzwischen einmal getestet, allerdings suboptimal 
implementiert (alle Zeichen in der Matrix, statt nur Grundlinie + vorher die 
ngram-listen umschreiben, was ich eh machen muss). 

Mal sehen, was passiert, wenn ich die Matrizen nicht zu groß mache… 
(perfektionismus ist gerne mal überhaupt nicht perfekt :) ). 

Danke für die Tipps!

Liebe Grüße, 
Arne

--
Konstruktive Kritik: 

- http://draketo.de/licht/krude-ideen/konstruktive-kritik



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


Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-22 Diskussionsfäden wettstein509
> Ich würde gerne mal wieder schauen, ob ich nicht einen ein-tag-korpus 
> erstellen kann. Mit dem Prog von Klausler kann ich zumindest mein 
> Programmieren mit emacs einfangen. 

Du meist mit einer Art keylogger?  Mit der XRecord-Extension kann man
einen schreiben, der jedes Tastenevent (leider auch solche, die durch
autorepeat erzeugt werden) mitbekommt, nicht nur solche in Emacs.
Leider müsste man mühsam die aktuelle Ebene und daraus die eingegeben
Zeichen rekonstruieren, der Modifikatorstatus wird nämlich nicht
mitgeliefert.  Bei Bedarf kann ich mich näher dazu auslassen.

Wenn du an einem Tag soviel tippst, dass das Ergebnis statistisch
brauchbar ist, bist du wirklich schnell.  Und wenn es darin nicht vor
Tippfehlern wimmelt bist du sehr sorgfältig.  Und wenn das Ganze dann
noch irgendwie repräsentativ ist, bist du sehr durchschnittlich, und das
passt nicht zu «sehr schnell» und «sehr sorgfältig».

> > Ich bin von meiner Ansicht abgerückt.  Heute behaupte ich, man müsste
> > die u-ShiftL-Kollision normal und die von u-b Kollision schwächer
> > werten, weil zwischen u und b ja noch eine Taste (ShiftL) gedrückt wird.
> > Das ist ein Spezialfall einer «indirekten Kollision»: Einer Kollision
> > zwischen Tasten, zwischen denen eine weitere Taste mit der anderen Hand
> > oder mit dem Daumen getippt wird.  Mein aktuelles Lieblingsthema.
> 
> Könntest du mir das erklären? Am besten direkt auf der Liste :)

Es geht um Sequenzen von drei Tasten, von denen die erste und die letzte
auf derselben Hand liegen, die mittlere aber nicht.  Solche Sequenzen
mit zwei Handwechseln sind schnell zu tippen.  Daher kann man sich
vorstellen, dass die Position der ersten Taste einen Einfluss darauf
hat, wie leicht oder schnell die dritte zu tippen ist.

Die einfachste Art, das in eine Bewertung einfliessen zu lassen, ist dem
Trigramm dieselbe Bewertung zu geben wie dem Bigramm aus erstem und
letzten Zeichen, multipliziert mit einem Faktor kleiner eins.  Der
Faktor könnte vom Tippaufwand der mittleren Taste abhängen: Je besser
oder schneller die mittlere Taste getippt werden kann, desto grösser der
Faktor.  Das ist aber vermutlich nur eine unnötige Komplikation.

Sequenzen wie bei der Eingabe von «uB», wenn u und b auf der selben Hand
sind, sind ein Spezialfall davon, wobei Shift die mittlere Taste im
Tasten-Trigramm ist.  «Bu» ist ähnlich, aber nicht ganz gleich: Die
erste Taste ist Shift und die mittlere b.  Allerdings muss Shift
gehalten werden bis b gedrückt ist, daher beeinflusst Shift das u
stärker als die erste die dritte Taste in normalen Trigrammen.  Der
Vorfaktor vor dem Bigrammgewicht sollte daher grösser sein, aber nach
wie vor kleiner eins.

Bei Trigrammen ohne Handwechsel kann die erste Taste natürlich auch
bestimmen, wie gut die dritte zu tippen ist.  Die Situation ist aber
viel verwickelter, da die mittlere Taste eine grosse Rolle spielt.

Wenn man Trigramme mit zwei Handwechseln auf die beschriebene Art in die
Bewertung einbaut, kann unter Umständen (das hängt von anderen den
Details des Bewertungsschemas ab) etwas Interessantes passieren: Die
Vokale bei der optimalen Tastatur verteilen sich auf beide Seiten und
man hat nur noch «wenige» Handwechsel (vielleicht bei 55% aller
Bigramme).  In dieser Hinsicht ähneln diese Belegungen stärker modernen
Belegungen wie Colemak und Arensito als Dvorak.

> Ich habe allerdings noch kein effizientes System im Kopf, um das sauber zu 
> machen. Wie hast du das implementiert? 

Das kannst du im Optimierer sehen, in den Funktionen «aufwand» und
«diff_aufwand», siehe http://wettstae.home.solnet.ch/opt.c (Falls jemand
damit rumspielen will, ich habe das auch zusammen im Paket mit meinen
Korpora, in http://wettstae.home.solnet.ch/Optimierer.tar.gz).

> Die Kosten von Tasten (nicht Zeichen) kann ich ja eigentlich zwischencachen 
> (die bleiben bei dem Layout ja gleich). Mappst du dann einfach die 
> Tastenpositionen und Kosten auf eine Matrix und schreibst die Bigramme in 
> Positionen um? 

Genau.  Jede Taste hat einen Index zwischen 0 und ntaste-1, und zwei
solcher Indices geben bezeichnen einen Eintrag in der Matrix mit vorab
berechneten Bigrammkosten (Dazu kommen noch zusätzliche Indices für die
Behandlung von Shift, aber das ändert nichts am Prinzip).

Mit den Bigrammhäufigkeiten ist es genauso, nur sind die Indices nicht
Tastennummern, sondern Buchstabennummern, auch sie von 0 bis ntaste-1
nummeriert.

Kosten und Häufigkeit finden durch die Belegung, dargestellt durch eine
Permutation p der Zahlen 0…ntaste-1, zueinander.  Die Bigrammbewertung
ist dann eine Summe von K(i,j)*H(p(i),p(j)) über alle i,j.  Ein- und
Trigramme sind analog.

Andreas



Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-21 Diskussionsfäden Arne Babenhauserheide
Hi Andreas, 

On Wednesday 20 October 2010 22:49:01 wettstein...@solnet.ch wrote:
> Auch wenn die Programmiersprache oder sogar das Programmierprojekt
> feststeht, man müsste noch wissen ob emacs, vi oder Eclipse benutzt
> wird.  Was im Korpus steht ist nicht alles auch getippt worden.  Tools
> nehmen unter Umständen einiges ab.

Stimmt. Für eine extrem einfache max() Funktion sähe mein Korpus in emacs in 
etwa so aus: 

def max(l):
ges = 0
for num in l: 
ges += num
ret ges

… tab muss auf eine Daumentaste :)

> Die bevorzugten Symbole sind in unterschiedlichen Disziplinen
> verschieden.  Ich glaube nicht, dass sich ein repräsentativer Korpus für
> mathematische Symbole finden lässt.  Ausserdem, wenn man annimmt, dass
> die lateinischen und griechischen Buchstaben aneinander kleben (a am α
> und so weiter) müsste man normale Texte und Formeln gegeneinander
> abwiegen.

Das stimmt. Würde ich eigentlich dann auch so machen (ist aber in switch_key 
noch nicht drin). 

> Ja, man braucht einen hinreichend korrekten Korpus, weil nur ein
> korrekter Korpus repräsentiert, was man tippen will.  Ich habe mir
> tatsächlich schon überlegt, meinen (3MB) Korpus zu bearbeiten, aber das
> ist viel Arbeit mit sehr begrenztem Nutzen.

Ich würde gerne mal wieder schauen, ob ich nicht einen ein-tag-korpus 
erstellen kann. Mit dem Prog von Klausler kann ich zumindest mein 
Programmieren mit emacs einfangen. 

Vielleicht kann emacs das auch direkt (müsste über einen hook gehen – 
irgendwie :) ). 

Da ich fast alles auf emacs umstellen kann (auch mein Mailprogramm), müsste 
ich so alle Daten sammeln können. 

> Das läuft darauf hinaus, dass derselbe Text bei derselben Belegung mit
> unterschiedlichen Bewegungen getippt werden kann.  Schwierig zu bewerten
> und schwierig zu lernen.  Es könnte aber wirklich die Tippeffizienz
> steigern.  Gerade auf der linken Tastaturhälfte könnte man einiges mit
> den «falschen» Fingern machen.

Jupp. Aber Neora könnte auch recht damit haben, dass ein gutes Layout das 
unnötig machen sollte. 

> > 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).
> 
> Da braucht man noch keine Trigramme.  Die Idee mit virtuellen Tasten ist
> ja gerade, das gleichzeitige Drücken von Mod3L und Mod4 wie einen
> einzigen Tastendruck zu behandeln.

Das würde dann den einen Sonderfall abfangen. Wenn es nicht allzu viele davon 
gibt, sollte es gehen, ja. 

> Ich bin von meiner Ansicht abgerückt.  Heute behaupte ich, man müsste
> die u-ShiftL-Kollision normal und die von u-b Kollision schwächer
> werten, weil zwischen u und b ja noch eine Taste (ShiftL) gedrückt wird.
> Das ist ein Spezialfall einer «indirekten Kollision»: Einer Kollision
> zwischen Tasten, zwischen denen eine weitere Taste mit der anderen Hand
> oder mit dem Daumen getippt wird.  Mein aktuelles Lieblingsthema.

Könntest du mir das erklären? Am besten direkt auf der Liste :)
Das ist nämlich effektiv das, an dem ich gerade dransitze und das ich genau 
jetzt korrekt machen kann. 

> Auf die Gefahr hin, dir auf die Nerven zu fallen: Vielleicht solltest du
> die N-gramm-Strafpunkte und -häufigkeiten in simplen Matrizen
> tabellieren.  

Damit fällst du mir definitiv nicht auf die Nerven. Ich habe den Port auf 
python2 (branch: py2) ursprünglich genau dafür gemacht (es gibt scipy noch 
nicht für python3, und das kann effiziente Matrizenrechnung, allerdings nur in 
2D). 

Allerdings kommt scipy zum Glück bald für py3 (numpy ist schon da). 

Ich habe allerdings noch kein effizientes System im Kopf, um das sauber zu 
machen. Wie hast du das implementiert? 

Die Kosten von Tasten (nicht Zeichen) kann ich ja eigentlich zwischencachen 
(die bleiben bei dem Layout ja gleich). Mappst du dann einfach die 
Tastenpositionen und Kosten auf eine Matrix und schreibst die Bigramme in 
Positionen um? 

> Dann ist die Auswertung im wesentlichen ein Skalarprodukt
> zwischen Strafpunkten und Häufigkeiten, und sowas rechnet sich gut und
> schnell, auch wenn in den Matrizen viele Nullen stehen die man unnütz
> abarbeitet.  Ich mache das so ähnlich, und kann auch mit Trigrammen
> einige hundert lokal optimale Tastaturen pro Minute berechnen.  

*selbst testen will* :)

Ich muss nur noch ein geeignetes Schema finden, um alle Kostenfunktionen auf 
Matrizenoperationen umzuschreiben. 

> Es würde
> mich wundern wenn es bei den numerischen Erweiterungen für Python nicht
> etwas gäbe, mit dem man zumindest bis auf eine Grössenordnung daran
> heran kommt.

Gibt es: SciPy. Noch effizienter mit scipy.weave (C++ in Python). Aber halt 
bisher nur in python2 (vermutlich nur noch ein paar Wochen lang :) ). 

Dazu, es im Python2 branch zu testen, bin ich durch pypy erstmal nicht 
gekommen (weil es im Gegensatz zu pypy Umstrukturierungen benötigt). 
Hoffentlich komme ich in 2 Wochen oder so dazu (jetzt wird es erstmal etwas 
turbulent…). 

Liebe Grüße, 
Arne
--
A man in the streets faces a k

Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-21 Diskussionsfäden wettstein509
Sorry, ich habe das gestern versehentlich direkt an Arne geschickt.
Jetzt aber richtig:

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

Auch wenn die Programmiersprache oder sogar das Programmierprojekt
feststeht, man müsste noch wissen ob emacs, vi oder Eclipse benutzt
wird.  Was im Korpus steht ist nicht alles auch getippt worden.  Tools
nehmen unter Umständen einiges ab.

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

Die bevorzugten Symbole sind in unterschiedlichen Disziplinen
verschieden.  Ich glaube nicht, dass sich ein repräsentativer Korpus für
mathematische Symbole finden lässt.  Ausserdem, wenn man annimmt, dass
die lateinischen und griechischen Buchstaben aneinander kleben (a am α
und so weiter) müsste man normale Texte und Formeln gegeneinander
abwiegen.

> Dafür brauchen wir „nur“ einen korrekten Korpus :)
>
> Es geht schließlich darum, das tippen zu können, was im Korpus steht.

Ja, man braucht einen hinreichend korrekten Korpus, weil nur ein
korrekter Korpus repräsentiert, was man tippen will.  Ich habe mir
tatsächlich schon überlegt, meinen (3MB) Korpus zu bearbeiten, aber das
ist viel Arbeit mit sehr begrenztem Nutzen.

> 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. 

Das läuft darauf hinaus, dass derselbe Text bei derselben Belegung mit
unterschiedlichen Bewegungen getippt werden kann.  Schwierig zu bewerten
und schwierig zu lernen.  Es könnte aber wirklich die Tippeffizienz
steigern.  Gerade auf der linken Tastaturhälfte könnte man einiges mit
den «falschen» Fingern machen.

> > 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?

Ja, richtig.

> 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). 

Da braucht man noch keine Trigramme.  Die Idee mit virtuellen Tasten ist
ja gerade, das gleichzeitige Drücken von Mod3L und Mod4 wie einen
einzigen Tastendruck zu behandeln.

> 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 ;)

Ich bin von meiner Ansicht abgerückt.  Heute behaupte ich, man müsste
die u-ShiftL-Kollision normal und die von u-b Kollision schwächer
werten, weil zwischen u und b ja noch eine Taste (ShiftL) gedrückt wird.
Das ist ein Spezialfall einer «indirekten Kollision»: Einer Kollision
zwischen Tasten, zwischen denen eine weitere Taste mit der anderen Hand
oder mit dem Daumen getippt wird.  Mein aktuelles Lieblingsthema.

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

Auf die Gefahr hin, dir auf die Nerven zu fallen: Vielleicht solltest du
die N-gramm-Strafpunkte und -häufigkeiten in simplen Matrizen
tabellieren.  Dann ist die Auswertung im wesentlichen ein Skalarprodukt
zwischen Strafpunkten und Häufigkeiten, und sowas rechnet sich gut und
schnell, auch wenn in den Matrizen viele Nullen stehen die man unnütz
abarbeitet.  Ich mache das so ähnlich, und kann auch mit Trigrammen
einige hundert lokal optimale Tastaturen pro Minute berechnen.  Es würde
mich wundern wenn es bei den numerischen Erweiterungen für Python nicht
etwas gäbe, mit dem man zumindest bis auf eine Grössenordnung daran
heran kommt.

Andreas



Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-20 Diskussionsfäden Arne Babenhauserheide
Hi Martin, 

On Wednesday 20 October 2010 22:51:12 Martin Roppelt wrote:
> > 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.
> 
> Ja, natürlich, es wird eine stetige Beibehaltung der Grundstellung
> gelehrt. Das Tippen mit schwebenden Händen ist interessant und auch
> möglich (neulich hatte mir jemand erzählt er hat Qwertz über
> 2-Finger-System gelernt, Finger dazugenommen – und irgendwann hat er das
> blind gemacht, ohne sich dabei an irgendwelche „Regeln“ zu halten), aber
> schwieriger (zu lernen).

Das war bei mir auch so. Der Nachteil war, dass ich nie wirklich blind tippen 
konnte, weil ich alle paar Wörter meine Handhaltung prüfen musste („ist die 
Taste wirklich da?“). 

Der Vorteil war, dass die Haltung etwas angenehmer war als die Starre, weil 
eben die Hände sich stetig etwas bewegt haben. 

> > Solche Bewegungen ließen sich dann auch abbilden.
> 
> Werden sie dann Standard? Wird dann gleichzeitig auf „normale“ und diese
> Schreibweise optimiert? Btw finde ich die starre besser, die andere mag
> allerdings mehr Möglichkeiten eröffnen, ergonomisch zu schreiben (oder
> auch nicht …), fragt sich dann nur, ob das dann wirklich noch
> ergonomisch ist.

Ich denke, um das zu diskutieren ist die Liste hier da. Ich habe keine Ahnung, 
wie viele Leute hier starr oder schwebend tippen. 

Ich finde an der Starren v.a. gut, dass ich sie schnell lernen konnte. Aber 
gerade bei 2-mod-Griffen breche ich aus ihr aus, und ich denke mit mehr 
Schreibpraxis im starren tippen werde ich an noch mehr Stellen aus ihr 
ausbrechen. Mein Qwertz hatte >10 Jahre mit kontinuierlich viel Tippen, um 
sich zu entwickeln, mein Neo hat bisher nichtmal ein Jahr. 

> > 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.
> 
> Macht Sinn.

Dann schau ich das mal genauer an. Danke! 

Liebe Grüße, 
Arne
-- 
Unpolitisch sein
heißt politisch sein, 
ohne es zu merken. 
- Arne (http://draketo.de)




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


Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-20 Diskussionsfäden Arne Babenhauserheide
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

Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-20 Diskussionsfäden Arne Babenhauserheide
On Tuesday 19 October 2010 22:09:15 Florian Janßen wrote:
> Am 19.10.2010 22:07, schrieb Martin Roppelt:
> > wettstein...@solnet.ch schrieb:
> >> Hier müsste man alledings noch berücksichtigen, dass Mod4R
> >> ausnahmsweise vom Ringfinger getippt wird.
> > 
> > Ringfinger? Ich nehme dafür immer den Daumen … (naja, gut, es ist ein
> > Laptop)
> 
> hier auch Daumen (ausgewachsene 08/15 Tastatur)

Vermutlich Mod4*L* :)

Liebe Grüße, 
Arne
--
Ich hab' nichts zu verbergen – hab ich gedacht: 

- http://draketo.de/licht/lieder/ich-hab-nichts-zu-verbergen



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


Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-19 Diskussionsfäden Arne Babenhauserheide
On Monday 18 October 2010 23:04:28 Arne Babenhauserheide wrote:
> On Tuesday 28 September 2010 23:50:27 Arne Babenhauserheide 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. Und dafür brauche ich Hilfe. Ich
> habe nämlich etwas den Überblick verloren.

Kurz ein Update: Ich habe für Bigramme inzwischen alle Ebenen integriert 
(Vorsicht: Der aktuelle tip berechnet dadurch die Layouts inzwischen etwas 
anders als config-2010-09-19.1). Nachdem das dann ein gutes Stück langsamer 
war, habe ich mich an den profiler gesetzt und den Code nochmal ein paar 
Stunden lang optimiert. 

## Ergebnis

### Vorher

$ time ./check_neo.py  -v --evolve 1000
…
real13m37.446s
user12m29.945s
sys 0m1.776s

### Jetzt

$ time ./check_neo.py  -v --evolve 1000
…
real9m53.473s
user9m49.648s
sys 0m0.280s

Pypy (Zweig: py2-pypy) spart nochmal etwa 5-20% Rechenzeit (meine händische 
Optimierung scheint ein paar der Optimierungen von pypy vorwegzunehmen und 
python3 ist bei viel unicode schneller als python2.6). 

$ time pypy-c-jit-78030-linux/bin/pypy ./check_neo.py -v --evolve 1000
…
real9m8.582s
user8m39.048s
sys 0m0.431s

(der Test hier allerdings mit etwas mehr Systemlast als die anderen. Ein py3-
Test kurz danach brauchte 10m39.052s, user: 9m48.295s – etwa 1min 15s länger ⇒ 
~12% reale Zeitersparnis). 

Im Vergleich zu Python 2.6 spart pypy etwa 50   % Rechenzeit: 

$ time python ./check_neo.py -v --evolve 1000
…
real19m12.752s
user17m53.741s
sys 0m1.264s

… dachte, das könnte euch interessieren :)

Liebe Grüße, 
Arne
--
Konstruktive Kritik: 

- http://draketo.de/licht/krude-ideen/konstruktive-kritik



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


Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-19 Diskussionsfäden Florian Janßen
Am 19.10.2010 22:07, schrieb Martin Roppelt:
> wettstein...@solnet.ch schrieb:
>> Hier müsste man alledings noch berücksichtigen, dass Mod4R 
>> ausnahmsweise vom Ringfinger getippt wird.
> 
> Ringfinger? Ich nehme dafür immer den Daumen … (naja, gut, es ist ein 
> Laptop)

hier auch Daumen (ausgewachsene 08/15 Tastatur)

Florian



Re: [Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-19 Diskussionsfäden wettstein509
> > 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.  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?

> 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.

Man könnte Modifierpaare wie virtuelle Tasten behandeln, die von einem
virtuellen Finger bedient werden.  Im Beispiel oben besteht der
virtuelle Finger aus linkem Klein- und Ringfinger.  Für die viruelle
Taste überlegt man sich dann die Strafpunkte in Kombination mit allen
anderer realen und virtuellen Tasten.

Die gedankliche Einführung der virtuellen Taste führt noch nicht zu
einer Herleitung der Bewertung aus bekannten Bewertungen, denn das geht
eben nicht, weil Modifierkombinationen anders getippt werden als
Modifier einzeln.  Es ist lediglich eine nützliche Abstraktion,
vermutlich auch nett zum implementieren, zumindest in meinem Optimierer
wäre es so.

> # Die Modifier beider Zeichen miteinander
> '⇩⇙', M3L + M4R
> '⇩⇘', M3L + M3R
> '⇚⇙', M4L + M4R
> '⇚⇘', M4L + M3R

Das ist das Bigrammgewicht Mod6R-Mod6L.  Hier müsste man alledings noch
berücksichtigen, dass Mod4R ausnahmsweise vom Ringfinger getippt wird.

> # 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.

> # 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?  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.

> # 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.

Andreas



[Neo] Brauche Hilfe bei der Behandlung von bigrammen mi t Großschreibung und höheren Ebenen

2010-10-18 Diskussionsfäden Arne Babenhauserheide
On Tuesday 28 September 2010 23:50:27 Arne Babenhauserheide 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. Und dafür brauche ich Hilfe. Ich habe 
nämlich etwas den Überblick verloren. 

Ich habe eine Liste von Bigrammen und teile sie in Bigrammen aus ihren 
Grundtasten und die jeweils dazugehörigen Modifier auf. 

Die Modifier sind: 

shift L/R: ⇧/⇗
M3 L/R: ⇩/⇘
M4 L/R: ⇚/⇙

Die Eingabe-Bigramme sehen so aus: 

[(36, "ab"), (24, "Ab"), (16, "aB"), (10, "AB"), (6, "¾2"), (4, "(}"), (2, 
"Ψ∃"), (1, "q")]

Jetzt werden die aufgeteilt, und ich bin nicht ganz sicher, ob die Ausgabe 
korrekt ist… Die meisten sind klar, aber v.a. Ψ∃ macht mir Probleme. 

Konkret ist meine Frage, ob das hier die korrekte Aufteilung von Ψ∃ ist: 

# Die Modifier beider Zeichen miteinander
'⇩⇙', M3L + M4R
'⇩⇘', M3L + M3R
'⇚⇙', M4L + M4R
'⇚⇘', M4L + M3R

# 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

# 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

# Die Grundtasten (auf Ebene 1)
'he'


Wenn ja, dann sollte der folgende Doctest korrekt sein: 

[(36, 'ab'), (24, '⇗b'), (24, '⇗a'), (24, 'ab'), (16, '⇧b'), (16, 'a⇧'), (16, 
'ab'), (10, '⇧b'), (10, '⇗⇧'), (10, '⇗b'), (10, '⇗a'), (10, 'a⇧'), (10, 'ab'), 
(6, '¾2'), (4, '⇩⇘'), (4, '⇩n'), (4, '⇩e'), (4, '⇘e'), (4, 'n⇘'), (4, 'ne'), 
(2, '⇩⇚'), (2, '⇩⇙'), (2, '⇩⇘'), (2, '⇩h'), (2, '⇩e'), (2, '⇚⇙'), (2, '⇚⇘'), 
(2, '⇚h'), (2, '⇚e'), (2, '⇙e'), (2, '⇘⇙'), (2, '⇘e'), (2, 'h⇙'), (2, 'h⇘'), 
(2, 'he')]

Liebe Grüße, 
Arne
--
Ein Würfel System - einfach saubere Regeln: 

- http://1w6.org



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