Re: [Neo] autohotkey neo treiber

2010-12-09 Diskussionsfäden Matthias Wächter
On 02.12.2010 13:04, Ruthard Baudach wrote:
 Ich bin über Nordtast auf Neo aufmerksam geworden und absolut begeistert vom 
 Ebenenkonzept, das von Neo entwickelt wurde.
 
 Leider habe ich auf diesem Weg AutoHotKey kennengelernt, und kann es in 
 meiner täglichen Arbeit nicht mehr missen.
 
 Beides verträgt sich leider nicht, da der AutoHotkeyTreiber nicht neben einem 
 anderen AHK-Skript laufen kann.

So ist es leider.

 Nun bin ich soweit durch den Quellcode von neovars durchgestiegen, dass über 
 den allstarhook in keyhooks.ahk
 alle nur möglichen Hotkeys abgefangen und über AllStar() in varfunctions.ahk 
 an das System weitergereicht werden.
 
 Über custom.ahk kann man sich hier einklinken.
 
 Nur wie? Ich habe in Wiki und Mailarchiv keine Beschreibung gefunden, wie man 
 das Neovars-Skript erweitern kann.

Es gibt hier und da ein paar Anregungen, aber keine vollständige Doku.

 Ich brauche insbesondere die Ur-AHK Funktion einer Hotkeydefinition a lá
 
 !a::
   SendInput {F12}!abc{enter}
 
 Wobei Hotstringdefinitionen a lá
 ::hi::hallo

So einfach ist das nicht. Die Neo-vars-Funktionen zum Aufruf von „Makros“ sind 
den Bedürfnissen eines Tastaturtreibers angepasst, nicht denen eines
Key-Makro-Tools.

Um eine Ersetzung durchzuführen, muss man sich eine Tastenkombination oder auch 
Tastenabfolge aussuchen, die noch nicht belegt ist. Typisch fangen
solche Tastenkombinationen mit Compose (M3+Tab) oder mit einer der toten Tasten 
an. Neo-vars kann jedoch _nicht_ die Strg- oder Alt-Taste in die
normale Betrachtung mit einbeziehen.

Weiters ist es mit Neo-vars nicht möglich, Hotstrings in der Art von 
AHK-Hotstrings zu verwenden. Ich halte diese Funktion aufgrund seiner Umsetzung
für ziemlich bescheiden: Erst muss man „hi“ tippen, dann noch eines der 
Trennzeichen, dann wird AHK selbständig die bereits getippten Zeichen löschen
und durch den String „hallo“ ersetzen. Klappt besonders schlecht, wenn man 
zwischen h und i oder auch zwischen i und dem Trennzeichen mit der Maus an
eine andere Stelle im Text oder gar in ein anderes Fenster klickt, dann 
passieren wundersame Dinge. Wie weit AHK hier Vorkehrungen trifft (Timeouts
zwischen den Tastendrücken, Mausclicks oder auch -Bewegungen zum Abbruch der 
Sequenz), weiß ich nicht, ich halte diese Form der Umsetzung weiterhin
für schlecht.

Ich will Dich aber nicht gänzlich frustrieren :) Es gibt im Wesentlichen 2 
bestehende Möglichkeiten, zu eigenen Funktionen zu kommen:

1. Du klinkst Dich in den Compose-Mechanismus ein.
==

Dazu musst Du im wesentlichen 3 verschiedene Variablentypen kennen:

CM… : Wenn nach Anhängen des aktuellen Zeichens an die Compose-Sequenz 
%CompNew% eine Variable CM%CompNew% existiert, wird das aktuelle Zeichen nicht
ausgegeben (verschluckt) und auf das nächste Zeichen gewartet. Die 
Compose-Sequenz wächst um das aktuelle Zeichen.

CD…: Wenn nach Anhängen des aktuellen Zeichens an die Compose-Sequenz %CompNew% 
eine Variable CD%CompNew% existiert, wird die Compose-Sequenz gelöscht
und der Inhalt der Variable CM%CompNew% ausgegeben.

CF… (nach Überprüfung auf CM… und CD…): Wenn _ohne_ Anhängen des aktuellen 
Zeichens an die Compose-Sequenz %CompNew% eine Variable CF%Comp% existiert,
wird deren Inhalt ausgegeben und dann mit der Verarbeitung des aktuellen 
Zeichens bei leerer Compose-Sequenz fortgefahren.

Optional und für einzelne Zeichen kann es auch erstrebenswert sein, eine 
Variable CRC… zu definieren, damit das Wie-Mit-Neo-Skript eine
Reverse-Auflösung durchführen kann.

Beispiel A:

Durch Druck auf ~,r,r (kleines r) wird ein String ausgegeben:

CMT__tlde := 1
CMT__tldeU72 := 1
CDT__tldeU72U72 := EncodeUniComposeA(hallo)

Das ganze lässt sich auch ganz schön in der Bildschirmtastatur mitverfolgen.

Beispiel B:

Durch Druck auf h,i,(space) wird ein String ausgegeben:

CMU68 := 1
CFU68 := U68
CMU68U69 := 1
CFU68U69 := U68U69
CDU68U69U20 := EncodeUniComposeA(hallo )

Nach Drücken auf h wird erstmal garnichts ausgegeben, auch dann noch nicht, 
wenn danach ein i folgt. Hängst Du dann das Space an, wird der String
ausgegeben. Drückst Du nach h oder i eine andere Taste als die in der Sequenz, 
werden die bis dahin zurück gehaltenen Buchstaben auch ausgegeben. Wenn
man h,i auch mit anderen Trennern ersetzen lassen will, muss man für jede 
derartige Sequenz eine entsprechende CD…-Variable mit passendem Inhalt anlegen.

Beispiel C:

Durch Druck auf ♫,m,d soll ein bestimmtes Unicode-Zeichen ᘺ (U+163A: LARGE 
GERMAN CHANCELLOR CLEAVAGE), liebevoll auch „Märkels Dekolleté“ genannt,
ausgegeben werden:

CMS__Comp := 1
CMS__CompU6D := 1
CDS__CompU6DU64 := U00163A
CRCU00163A .=  S__CompU6DU64

Die CRC…-Variable bewirkt, dass Wie-Mit-Neo die entsprechende Sequenz angeben 
kann.

2. Du löst für spezielle Tastendrücke Unterprogrammaufrufe aus.
===

Das kann auf zwei 

[Neo] [NordTast] Grafisches Bewertungstool

2010-12-09 Diskussionsfäden Wolf Belschner
Hallo an alle,

In den letzten Wochen wurde hier mit viel gemeinsamer Anstrengung und
Kleinarbeit ein grafisches Werkzeug entwickelt, dass die Beurteilung von
Belegungen nach ihrer Brauchbarkeit ermöglichen und erleichtern soll.
Eine weitere Version von Andreas ist wohl noch in Arbeit.

Grundüberlegung war, auf einer gegebenen Tastatur die in einem Korpus
(oder auch nur Wort oder Text) auftretenden Bi-gramme grafisch
darzustellen,
1.  nach ihrer Häufigkeit,
2.  ihrer Richtung und
3.  der Bewertung, die der jeweilige Tastenwechsel nach aktuellen
Kriterien erhält.

 Die konzentrierte grafische Darstellung dieser Informationen
ermöglicht, vergleichend die Unterschiede von Belegungen festzustellen,
zeigt Schwächen und Stärken einer Belegung und wo sie auftreten. Daraus
lassen sich dann hoffentlich Rückschlüsse ziehen auf das Gesamtverhalten.

 Ich werde in nächster Zeit versuchen, eine grobe Interpretationshilfe
und -anleitung dafür zu entwickeln und auf der Nordtast Seite zur
Verfügung zu stellen. Jeder ist herzlich eingeladen, daran mitzuwirken.


 Das Werkzeug bietet einige interessante Anwendungsmöglichkeiten für
Entwickler:

 •  Man könnte nur ein Wort, einen Satz oder ein bestimmten Text auf
verschiedenen Belegungen darstellen lassen um festzustellen wie gut oder
schlecht sich diese Aufgabe darauf bewältigen lässt.
 • Tastaturen, die zB auf Grundlage eines deutschen Korpus' optimiert
wurden können mit den Bi-grammen eines zB. englischen Korpus auf ihre
Tippbarkeit im Englischen überprüft werden.
 •  Belegungen können auf ihre Eignung zur Bewältigung rein medizinischer
oder juristischer Texte oder auch Programmiersprachen überprüft werden.
 • theoretisch liessen sich jetzt mit den zur Verfügung stehenden
Mitteln Belegungen für bestimmte Anforderungen und Präferenzen
maßanfertigen.

 Euch fallen bestimmt noch mehr Sachen dazu ein.

 Das entbindet allerdings nicht davon, eine für brauchbar befundene
Belegung einem Praxistest zu unterziehen, da führt letztendlich kein Weg
dran vorbei.

 fröhliches Entwickeln

 Wolf