Converted CRLF line endings to LF line endings

pull/15/head
Ulli Kehrle 2 years ago
parent 49f544b6e9
commit f92967573e
Signed by: hrnz
GPG Key ID: 06E88726998AB3C7
  1. 72
      docs/Benutzerhandbuch/Einfuehrungskapitel.md
  2. 192
      docs/Benutzerhandbuch/Sprachen-mit-Neo.md
  3. 324
      docs/Entwicklung/Treiber-KnowHow-NeoVars.md
  4. 294
      docs/Entwicklung/Treiber-KnowHow.md
  5. 32
      docs/Todo/Presseberichte.md

@ -1,36 +1,36 @@
# Kurze Einführung zu Neo
<!---
Dieser Artikel gilt als Einstiegs- und Motivationsartikel für Anfänger. Er entspricht einer Zusammenfassung vor allem des ersten Kapitels des Benutzerhandbuches. Verweise habe ich in diesem Fall tatsächlich fast ausnahmslos weggelassen, damit der Leser sich diese Seite einmal ganz durchliest und somit erstmal einen Eindruck von Neo hat.
Die Hauptquellen sind die alte Projektseite von Hanno und der Flyer bei Promotionmaterial.
--->
Die meisten von euch haben vor sich eine sogenannte Qwertz-Tastatur liegen, auf der ihr schreibt und der Meinung seid, diese Tastatur wäre gut so und hätte sich irgendwie nach ergonomischen Gesichtspunkten entwickelt. Falsch, denn das Qwertz-Tastaturlayout hatte einzig zum Ziel, dass Schreibmaschinentasten sich seltener verhaken. Ebenso wie Schreibmaschinen ist auch das Layout heutzutage überholt.
Schon 1932 erfand Dr. August Dvorak ein Tastaturlayout, das nachweislich leichter zu bedienen und mit deutlich weniger Anstrengung und Risiko auf Sehnenscheidenentzündung zu schreiben war, sowie eine gute Erlernbarkeit zeigte. Doch seine Erfindung blieb bis zum heutigen Tage nahezu unbekannt, obwohl viele Computer sein Tastaturlayout bereits implementiert haben, man müsste es nur aktivieren (Mac, Linux, Windows …).
Das Umlernen eines Layouts kostet zwischen 25 Stunden und 100 Stunden Zeit; es gibt Erfahrungsberichte aus dem Netz, von Leuten, die problemlos später wieder „zurückschalten“ auf ein altes Layout, wenn sie an einem Computer ohne optimiertem Layout arbeiten müssen, was etwa eine Minute Umgewöhnung kostet. Es spricht also kein rationaler Grund gegen das Erlernen eines neuen, effizienteren Layouts. Es sei denn, man ist restlos damit zufrieden, dass die Standardtastatur die eigene Tippgeschwindigkeit ausbremst, zu vorzeitigen Ermüdungserscheinungen und Sehnenscheidenentzündungen führt. Was unserer Meinung nach eigentlich kaum sein kann, redet doch alle Welt von Softwareergonomie und kauft sich schnellere Rechner, während sie auf einem Tastaturlayout beharrt, das 1868 konzipiert wurde, um schnelles Schreiben auf mechanischen frühen Schreibmaschinen zu vermeiden; beziehungsweise die Tasten so anzuordnen, dass man möglichst „TYPEWRITER“ auf der oberen Zeile tippen kann. Für eine derart wichtige Schnittstelle zwischen Maschine und Mensch ist sowas einfach indiskutabel, egal wie lange es „funktioniert“ hat.
Das 2004 von Hanno Behrens entwickelte Neo-Layout ist eine auf [Ergonomie](http://de.wikipedia.org/wiki/Ergonomie) optimierte Tastaturbelegung. Es ordnet die Buchstaben der Tastatur neu, die wichtigsten liegen auf der Grundreihe. Etwa die Vokale uiae auf der linken, die häufigsten deutschen Konsonanten nrtd auf der rechten Hand. Dabei könnt ihr eure alte Tastatur behalten, geändert wird lediglich das Layout, also die Software.
Die Tippgeschwindigkeiten alternativer Layouts sind nicht unumstritten, aber in keiner Analyse schneidet Qwertz besser ab als auch nur irgendein anderes Layout. In den allermeisten Statistiken schlechter, in sehr vielen deutlich schlechter. Und natürlich grundsätzlich schlechter als Neo. Darüber hinaus überlastet Neo im Gegensatz zu Qwertz nicht die linke Hand.
Neben diesen offensichtlichen Vorteilen gibt es noch weitere, die in unserer heutigen Zeit von Nutzen sind:
* Programmier- und Sonderzeichen wie / \ [ ] $ > = sind gut erreichbar
* neue Zeichen wie „ “ » « ¿ ¢ ♥ ♀ … können direkt eingegeben werden
* genauso mathematische Zeichen wie Δ ∂ ∫ √ α β – auch in LaTeX!
* Ziffernblock, Steuerkreuz ← ↑ → ↓ auch auf der Haupttastatur – ideal für Notebooks
## Die Ebenen
Um die umfangreichen Funktionalitäten bieten zu können, benötigt Neo zusätzliche „Ebenen“. Qwertz verwendet fast nur zwei, die erste für die Klein- und die Shift-Ebene für die Großbuchstaben. Dazu kommt noch AltGr für @, \, € u.a.
Neo erweitert diese Idee und bietet gleich sechs Ebenen. Die dafür nötigen Modifier („Umschalttasten“) sind mit den kleinen Fingern gut erreichbar. Wer will, braucht auch nur die ersten drei Ebenen zu nutzen und wird allein davon schon angenehm überrascht sein. Für LaTeX etwa kann man nun den viel zu oft benötigten Backslash bequem per Qwertz-Raute + Qwertz-A erreichen. Und wer meint, dass das US-Layout dies genauso gut schafft, hat wohl noch nie deutsche Umlaute getippt. ;-) ;)
Die vierte Ebene ersetzt euch alles jenseits des Tastaturhauptfeldes, wie etwa den Zahlenblock, den bspw. viele Notebooks nicht haben. Und last but not least: Die griechischen Kleinbuchstaben und mathematischen Zeichen der 5. bzw. 6. Ebene, für deren Aktivierung ihr zwei Modifier gleichzeitig drücken müsst, sind ein ungemein wertvolles Feature für die, die es nutzen.
## Wie es losgeht
Anleitungen zur Einrichtung für alle gängigen Plattformen, Hilfestellungen und FAQ findet ihr hier in diesem Wiki. Genauso Verweise zu weiteren alternativen Layouts, wie etwa Bone, AdNW oder das 2005 entwickelte RISTOME. Projekte zu alternativen Tastaturen gibt es ebenso zu finden wie eine ganze Rubrik über bessere Typgrafie.
Wenn du willst, beschäftige dich damit und triff deine Entscheidung. Sollte sie pro Neo sein, empfehlen wir, dies auch konsequent durchzuziehen. Du kannst dir dafür einige der zahlreichen Erfahrungsberichte und weitere Tipps durchlesen. Aber Vorsicht: Wer einmal Neo benutzt, wird nie wieder etwas anderes wollen.
# Kurze Einführung zu Neo
<!---
Dieser Artikel gilt als Einstiegs- und Motivationsartikel für Anfänger. Er entspricht einer Zusammenfassung vor allem des ersten Kapitels des Benutzerhandbuches. Verweise habe ich in diesem Fall tatsächlich fast ausnahmslos weggelassen, damit der Leser sich diese Seite einmal ganz durchliest und somit erstmal einen Eindruck von Neo hat.
Die Hauptquellen sind die alte Projektseite von Hanno und der Flyer bei Promotionmaterial.
--->
Die meisten von euch haben vor sich eine sogenannte Qwertz-Tastatur liegen, auf der ihr schreibt und der Meinung seid, diese Tastatur wäre gut so und hätte sich irgendwie nach ergonomischen Gesichtspunkten entwickelt. Falsch, denn das Qwertz-Tastaturlayout hatte einzig zum Ziel, dass Schreibmaschinentasten sich seltener verhaken. Ebenso wie Schreibmaschinen ist auch das Layout heutzutage überholt.
Schon 1932 erfand Dr. August Dvorak ein Tastaturlayout, das nachweislich leichter zu bedienen und mit deutlich weniger Anstrengung und Risiko auf Sehnenscheidenentzündung zu schreiben war, sowie eine gute Erlernbarkeit zeigte. Doch seine Erfindung blieb bis zum heutigen Tage nahezu unbekannt, obwohl viele Computer sein Tastaturlayout bereits implementiert haben, man müsste es nur aktivieren (Mac, Linux, Windows …).
Das Umlernen eines Layouts kostet zwischen 25 Stunden und 100 Stunden Zeit; es gibt Erfahrungsberichte aus dem Netz, von Leuten, die problemlos später wieder „zurückschalten“ auf ein altes Layout, wenn sie an einem Computer ohne optimiertem Layout arbeiten müssen, was etwa eine Minute Umgewöhnung kostet. Es spricht also kein rationaler Grund gegen das Erlernen eines neuen, effizienteren Layouts. Es sei denn, man ist restlos damit zufrieden, dass die Standardtastatur die eigene Tippgeschwindigkeit ausbremst, zu vorzeitigen Ermüdungserscheinungen und Sehnenscheidenentzündungen führt. Was unserer Meinung nach eigentlich kaum sein kann, redet doch alle Welt von Softwareergonomie und kauft sich schnellere Rechner, während sie auf einem Tastaturlayout beharrt, das 1868 konzipiert wurde, um schnelles Schreiben auf mechanischen frühen Schreibmaschinen zu vermeiden; beziehungsweise die Tasten so anzuordnen, dass man möglichst „TYPEWRITER“ auf der oberen Zeile tippen kann. Für eine derart wichtige Schnittstelle zwischen Maschine und Mensch ist sowas einfach indiskutabel, egal wie lange es „funktioniert“ hat.
Das 2004 von Hanno Behrens entwickelte Neo-Layout ist eine auf [Ergonomie](http://de.wikipedia.org/wiki/Ergonomie) optimierte Tastaturbelegung. Es ordnet die Buchstaben der Tastatur neu, die wichtigsten liegen auf der Grundreihe. Etwa die Vokale uiae auf der linken, die häufigsten deutschen Konsonanten nrtd auf der rechten Hand. Dabei könnt ihr eure alte Tastatur behalten, geändert wird lediglich das Layout, also die Software.
Die Tippgeschwindigkeiten alternativer Layouts sind nicht unumstritten, aber in keiner Analyse schneidet Qwertz besser ab als auch nur irgendein anderes Layout. In den allermeisten Statistiken schlechter, in sehr vielen deutlich schlechter. Und natürlich grundsätzlich schlechter als Neo. Darüber hinaus überlastet Neo im Gegensatz zu Qwertz nicht die linke Hand.
Neben diesen offensichtlichen Vorteilen gibt es noch weitere, die in unserer heutigen Zeit von Nutzen sind:
* Programmier- und Sonderzeichen wie / \ [ ] $ > = sind gut erreichbar
* neue Zeichen wie „ “ » « ¿ ¢ ♥ ♀ … können direkt eingegeben werden
* genauso mathematische Zeichen wie Δ ∂ ∫ √ α β – auch in LaTeX!
* Ziffernblock, Steuerkreuz ← ↑ → ↓ auch auf der Haupttastatur – ideal für Notebooks
## Die Ebenen
Um die umfangreichen Funktionalitäten bieten zu können, benötigt Neo zusätzliche „Ebenen“. Qwertz verwendet fast nur zwei, die erste für die Klein- und die Shift-Ebene für die Großbuchstaben. Dazu kommt noch AltGr für @, \, € u.a.
Neo erweitert diese Idee und bietet gleich sechs Ebenen. Die dafür nötigen Modifier („Umschalttasten“) sind mit den kleinen Fingern gut erreichbar. Wer will, braucht auch nur die ersten drei Ebenen zu nutzen und wird allein davon schon angenehm überrascht sein. Für LaTeX etwa kann man nun den viel zu oft benötigten Backslash bequem per Qwertz-Raute + Qwertz-A erreichen. Und wer meint, dass das US-Layout dies genauso gut schafft, hat wohl noch nie deutsche Umlaute getippt. ;-) ;)
Die vierte Ebene ersetzt euch alles jenseits des Tastaturhauptfeldes, wie etwa den Zahlenblock, den bspw. viele Notebooks nicht haben. Und last but not least: Die griechischen Kleinbuchstaben und mathematischen Zeichen der 5. bzw. 6. Ebene, für deren Aktivierung ihr zwei Modifier gleichzeitig drücken müsst, sind ein ungemein wertvolles Feature für die, die es nutzen.
## Wie es losgeht
Anleitungen zur Einrichtung für alle gängigen Plattformen, Hilfestellungen und FAQ findet ihr hier in diesem Wiki. Genauso Verweise zu weiteren alternativen Layouts, wie etwa Bone, AdNW oder das 2005 entwickelte RISTOME. Projekte zu alternativen Tastaturen gibt es ebenso zu finden wie eine ganze Rubrik über bessere Typgrafie.
Wenn du willst, beschäftige dich damit und triff deine Entscheidung. Sollte sie pro Neo sein, empfehlen wir, dies auch konsequent durchzuziehen. Du kannst dir dafür einige der zahlreichen Erfahrungsberichte und weitere Tipps durchlesen. Aber Vorsicht: Wer einmal Neo benutzt, wird nie wieder etwas anderes wollen.

@ -1,97 +1,97 @@
# Sprachen mit Neo
Es gibt einige Anleitungen zu verschiedenen Sprachen mit Neo.
Hier die komplexeren, für die es extra Seiten gibt:
* [IPA mit Neo](IPA-mit-Neo.md), ([IPA](IPA))
* [Griechisch mit Neo](Griechisch.md)
## Vietnamesisch mit Neo
Zu den lateinischen Zeichen, inkl. Đđ, das mit T3(3)D/d eingegeben wird, gibt es im Vietnamesischen zwölf Vokale, die in der nachstehenden Tabelle in den Zeilen angegeben wird. Jeder Vokal kann mit einem der fünf Töne (Spalten) kombiniert sein. Bei der Eingabe wird jeweils erst der Ton und dann der Vokal eingegeben, also `˘a → ằ.
Der Thanh nặng (.) kann durch T1(6) oder ♫!a → ạ eingegeben werden, der Thanh hỏi mit T3(5) oder ♫?a → ả. Das o und u mit Horn werden über den Haken ˞ auf T1(5) eingegeben.
| Thanh không | sắc (´) | huyền (`) | hỏi (᾿) | ngã (˜) | nặng (.)|
| :---: | :---: | :---: | :---: | :---: | ---: |
| a | á | à | ả | ã | ạ|
| ă (˘a) | ắ | ằ | ẳ | ẵ | ặ|
| â (ˆa) | ấ | ầ | ẩ | ẫ | ậ|
| e | é | è | ẻ | ẽ | ẹ|
| ê (ˆe) | ế | ề | ể | ễ | ệ|
| i | í | ì | ỉ | ĩ | ị|
| o | ó | ò | ỏ | õ | ọ|
| ô (ˆo) | ố | ồ | ổ | ỗ | ộ|
| ơ (˞o) | ớ | ờ | ở | ỡ | ợ|
| u | ú | ù | ủ | ũ | ụ|
| ư (˞u) | ứ | ừ | ử | ữ | ự|
| y | ý | ỳ | ỷ | ỹ | ỵ|
## Afrikanische Sprachen mit Neo
!!! info "Fehlender Inhalt"
Dieser Abschnitt existiert noch nicht. Du kannst helfen, ihn aufzubauen.
## Kyrillisch mit Neo
Einen Modus zum Schreiben des kyrillischen Alphabets ist nicht in Neo 2 enthalten, es gibt aber dennoch bereits eine ausgearbeitete Belegung, die sich für Neo-Nutzer besonders einfach merken lässt und die praktische alle vorkommenden Zeichen abdeckt. Siehe im SVN-Repository unter neo-kyr. Hier die Belegungen von Ebene 1, bzw. Ebene 2.
```
┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
│ Ь │1│2│3│4│5│6│7│8│9│0│-│`│ Back │
├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
│Tab⇥│ч│в│л│ц│ш│к│х│г│ф│ж│ѕ│´│ Ret │
├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
│ M3 │у│и│а│е│о│с│н│р│т│д│ь│M3│ │
├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
│Ums│M4│ћ│і│э│п│з│б│м│,│.│ј│ Umsch │
├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
└───┴──┴──┴───────────┴──┴──┴──┴───┘
┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
│ ◌҃ │°│§│ℓ│»│«│$│€│„│“│”│—│¸│ Back │
├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
│Tab⇥│Ч│В│Л│Ц│Ш│К│Х│Г│Ф│Ж│Ѕ│˜│ Ret │
├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
│ M3 │У│И│А│Е│О│С│Н│Р│Т│Д│Ь│M3│ │
├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
│Ums│M4│Ћ│І│Э│П│З│Б│М│–│•│Ј│ Umsch │
├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
└───┴──┴──┴───────────┴──┴──┴──┴───┘
```
Sowie die mit toten Tasten erzeugbaren Zeichen:
|Taste|Аа|Бб|Вв|Гг|Дд|Ее|Жж|Зз|Ѕѕ|Ии|Іі|Јј|Кк|Лл|Мм|Нн|Оо|Пп|Рр|Сс|Тт|Ћћ|Уу|Фф|Хх|Цц|Чч|Шш|Ьь|Ээ|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| Ь | | | | |Яя|Єє| | | | |Ыы| | |Љљ| |Њњ|Юю| | | | | | | | | | | |Ъъ| |
| \` | | | | | |Ѐѐ| | | |Ѝѝ| | | | | | | | | | | | | | | | | | | | |
| ´ | | | |Ѓѓ| | | | | | | | |Ќќ| | | | | | | | | | | | | | | | | |
| ↻ | | | | | |Әә| |Ԑԑ| | | | | | | | | |Џџ| | | | | | | | |Һһ| | |Єє|
| ¸ | | | |Ӷӷ| | |Җҗ|Ҙҙ| | | | |Ққ| | |Ңң| | | |Ҫҫ|Ҭҭ| | | |Ҳҳ| |Ҷҷ|Щщ| | |
| ¨ |Ӓӓ| | | | |Ёё|Ӝӝ|Ӟӟ| |Ӥӥ|Її| | | | | |Ӧӧ| | | | | |Ӱӱ| | | |Ӵӵ| | |Ӭӭ|
| / | | | |Ғғ| | | | | | | | |Ҟҟ| | | |Өө| |Ҏҏ| | | |Ұұ| |Ӿӿ| |Ҹҹ| |Ҍҍ| |
| ˝ | | | | | | | | | | | | | | | | | | | | | | |Ӳӳ| | | | | | | |
| ˘ |Ӑӑ| | | | |Ӗӗ|Ӂӂ| | |Йй| | | | | | | | | | | | |Ўў| | | | | | | |
| ¯ | | | | | | | | | |Ӣӣ| | |Ҡҡ| | | | | | | | | |Ӯӯ| | | | | |Ъъ| |
| ˞ | | | | | | | | | | | | |Ӄӄ| | |Ӈӈ| |Ԓԓ| | |Ꚍꚍ|Ђђ| | |Ӽӽ| | | | | |
| ♫··¹| | | |Ґґ| |Әә|Ԛԛ|Ӡӡ| | |Ӏӏ| | | | | |Ҩҩ| | | | | |Үү| | | |Ҽҽ|Ԝԝ| | |
¹ Compose und dann zwei mal die Taste drücken. Hiermit kann man noch eine (seltene) Variante eingeben. Also beispielsweise ♫ГГ → Ґ.
Weitere Zeichen (in loser Reihenfolge und hier nur die Großbuchstaben): ♫↻¸Ч → Ӌ, bzw. ♫,Ч → Ӌ, ♫,Л → Ӆ, ♫,М → Ӎ, ♫,Н → Ӊ, ¨↻♫Е → Ӛ, ¨/О → Ӫ, ¨ˆІ → Ӹ, ♫|К → Ҝ, ˘¸И → Ҋ, ˞/Г → Ӻ, ˞↻Ч → Ꚕ, ♫АЕ → Ӕ, ♫ЛХ → Ԕ, ♫РХ → Ԗ, ♫ЯЕ → Ԙ, ♫ТЦ → Ҵ, ♫НТ → Ҥ, ¸♫ЧЧ → Ҿ.
## Türkisch mit Neo
Das türkische Alphabet besitzt einige Buchstaben, die es im Deutschen nicht gibt und die mit toten Tasten oder Compose erzeugt werden müssen:
|Buchstabe|mit Compose|mit toten Tasten|
| :---: | :---: | :---: |
|ç|♫,c|T2(2) c|
|Ç|♫,C|T2(2) C|
|ǧ| |T1(2) g|
|Ǧ| |T1(2) G|
|ı|♫.i|T1(4) i|
|İ|♫.I|T1(4) I|
|ş|♫,s|T2(2) s|
|Ş|♫,S|T2(2) S|
# Sprachen mit Neo
Es gibt einige Anleitungen zu verschiedenen Sprachen mit Neo.
Hier die komplexeren, für die es extra Seiten gibt:
* [IPA mit Neo](IPA-mit-Neo.md), ([IPA](IPA))
* [Griechisch mit Neo](Griechisch.md)
## Vietnamesisch mit Neo
Zu den lateinischen Zeichen, inkl. Đđ, das mit T3(3)D/d eingegeben wird, gibt es im Vietnamesischen zwölf Vokale, die in der nachstehenden Tabelle in den Zeilen angegeben wird. Jeder Vokal kann mit einem der fünf Töne (Spalten) kombiniert sein. Bei der Eingabe wird jeweils erst der Ton und dann der Vokal eingegeben, also `˘a → ằ.
Der Thanh nặng (.) kann durch T1(6) oder ♫!a → ạ eingegeben werden, der Thanh hỏi mit T3(5) oder ♫?a → ả. Das o und u mit Horn werden über den Haken ˞ auf T1(5) eingegeben.
| Thanh không | sắc (´) | huyền (`) | hỏi (᾿) | ngã (˜) | nặng (.)|
| :---: | :---: | :---: | :---: | :---: | ---: |
| a | á | à | ả | ã | ạ|
| ă (˘a) | ắ | ằ | ẳ | ẵ | ặ|
| â (ˆa) | ấ | ầ | ẩ | ẫ | ậ|
| e | é | è | ẻ | ẽ | ẹ|
| ê (ˆe) | ế | ề | ể | ễ | ệ|
| i | í | ì | ỉ | ĩ | ị|
| o | ó | ò | ỏ | õ | ọ|
| ô (ˆo) | ố | ồ | ổ | ỗ | ộ|
| ơ (˞o) | ớ | ờ | ở | ỡ | ợ|
| u | ú | ù | ủ | ũ | ụ|
| ư (˞u) | ứ | ừ | ử | ữ | ự|
| y | ý | ỳ | ỷ | ỹ | ỵ|
## Afrikanische Sprachen mit Neo
!!! info "Fehlender Inhalt"
Dieser Abschnitt existiert noch nicht. Du kannst helfen, ihn aufzubauen.
## Kyrillisch mit Neo
Einen Modus zum Schreiben des kyrillischen Alphabets ist nicht in Neo 2 enthalten, es gibt aber dennoch bereits eine ausgearbeitete Belegung, die sich für Neo-Nutzer besonders einfach merken lässt und die praktische alle vorkommenden Zeichen abdeckt. Siehe im SVN-Repository unter neo-kyr. Hier die Belegungen von Ebene 1, bzw. Ebene 2.
```
┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
│ Ь │1│2│3│4│5│6│7│8│9│0│-│`│ Back │
├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
│Tab⇥│ч│в│л│ц│ш│к│х│г│ф│ж│ѕ│´│ Ret │
├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
│ M3 │у│и│а│е│о│с│н│р│т│д│ь│M3│ │
├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
│Ums│M4│ћ│і│э│п│з│б│м│,│.│ј│ Umsch │
├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
└───┴──┴──┴───────────┴──┴──┴──┴───┘
┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
│ ◌҃ │°│§│ℓ│»│«│$│€│„│“│”│—│¸│ Back │
├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
│Tab⇥│Ч│В│Л│Ц│Ш│К│Х│Г│Ф│Ж│Ѕ│˜│ Ret │
├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
│ M3 │У│И│А│Е│О│С│Н│Р│Т│Д│Ь│M3│ │
├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
│Ums│M4│Ћ│І│Э│П│З│Б│М│–│•│Ј│ Umsch │
├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
│Str│Fe│Al│Leerzeichen│M4│Fe│Me│Str│
└───┴──┴──┴───────────┴──┴──┴──┴───┘
```
Sowie die mit toten Tasten erzeugbaren Zeichen:
|Taste|Аа|Бб|Вв|Гг|Дд|Ее|Жж|Зз|Ѕѕ|Ии|Іі|Јј|Кк|Лл|Мм|Нн|Оо|Пп|Рр|Сс|Тт|Ћћ|Уу|Фф|Хх|Цц|Чч|Шш|Ьь|Ээ|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| Ь | | | | |Яя|Єє| | | | |Ыы| | |Љљ| |Њњ|Юю| | | | | | | | | | | |Ъъ| |
| \` | | | | | |Ѐѐ| | | |Ѝѝ| | | | | | | | | | | | | | | | | | | | |
| ´ | | | |Ѓѓ| | | | | | | | |Ќќ| | | | | | | | | | | | | | | | | |
| ↻ | | | | | |Әә| |Ԑԑ| | | | | | | | | |Џџ| | | | | | | | |Һһ| | |Єє|
| ¸ | | | |Ӷӷ| | |Җҗ|Ҙҙ| | | | |Ққ| | |Ңң| | | |Ҫҫ|Ҭҭ| | | |Ҳҳ| |Ҷҷ|Щщ| | |
| ¨ |Ӓӓ| | | | |Ёё|Ӝӝ|Ӟӟ| |Ӥӥ|Її| | | | | |Ӧӧ| | | | | |Ӱӱ| | | |Ӵӵ| | |Ӭӭ|
| / | | | |Ғғ| | | | | | | | |Ҟҟ| | | |Өө| |Ҏҏ| | | |Ұұ| |Ӿӿ| |Ҹҹ| |Ҍҍ| |
| ˝ | | | | | | | | | | | | | | | | | | | | | | |Ӳӳ| | | | | | | |
| ˘ |Ӑӑ| | | | |Ӗӗ|Ӂӂ| | |Йй| | | | | | | | | | | | |Ўў| | | | | | | |
| ¯ | | | | | | | | | |Ӣӣ| | |Ҡҡ| | | | | | | | | |Ӯӯ| | | | | |Ъъ| |
| ˞ | | | | | | | | | | | | |Ӄӄ| | |Ӈӈ| |Ԓԓ| | |Ꚍꚍ|Ђђ| | |Ӽӽ| | | | | |
| ♫··¹| | | |Ґґ| |Әә|Ԛԛ|Ӡӡ| | |Ӏӏ| | | | | |Ҩҩ| | | | | |Үү| | | |Ҽҽ|Ԝԝ| | |
¹ Compose und dann zwei mal die Taste drücken. Hiermit kann man noch eine (seltene) Variante eingeben. Also beispielsweise ♫ГГ → Ґ.
Weitere Zeichen (in loser Reihenfolge und hier nur die Großbuchstaben): ♫↻¸Ч → Ӌ, bzw. ♫,Ч → Ӌ, ♫,Л → Ӆ, ♫,М → Ӎ, ♫,Н → Ӊ, ¨↻♫Е → Ӛ, ¨/О → Ӫ, ¨ˆІ → Ӹ, ♫|К → Ҝ, ˘¸И → Ҋ, ˞/Г → Ӻ, ˞↻Ч → Ꚕ, ♫АЕ → Ӕ, ♫ЛХ → Ԕ, ♫РХ → Ԗ, ♫ЯЕ → Ԙ, ♫ТЦ → Ҵ, ♫НТ → Ҥ, ¸♫ЧЧ → Ҿ.
## Türkisch mit Neo
Das türkische Alphabet besitzt einige Buchstaben, die es im Deutschen nicht gibt und die mit toten Tasten oder Compose erzeugt werden müssen:
|Buchstabe|mit Compose|mit toten Tasten|
| :---: | :---: | :---: |
|ç|♫,c|T2(2) c|
|Ç|♫,C|T2(2) C|
|ǧ| |T1(2) g|
|Ǧ| |T1(2) G|
|ı|♫.i|T1(4) i|
|İ|♫.I|T1(4) I|
|ş|♫,s|T2(2) s|
|Ş|♫,S|T2(2) S|
Dabei ist T1 die Taste links der 1 und T2 die Taste rechts der 0.

@ -1,163 +1,163 @@
# NeoVars für Entwickler
!!! warning "Zu überarbeiten"
Diese Seite ist nach der Portierung noch nicht inhaltlich überarbeitet worden. Einige Inhalte sind womöglich obsolet oder besser auf anderen Seiten aufgehoben. Eine Überarbeitung der Seite ist angeraten. Diskussionen sind zu entfernen oder zu verschieben.
**Eine schnelle, sehr pragmatische Kurzanleitung zum Verändern von Buchstaben findet sich [hier](http://www.adnw.de/uploads/Main/ADNWMitNeo-TreiberUnterWindows/NeoVarsModAnleitung2.pdf)**
## Geschichte
NeoVars ist die nunmehr zweite Implementierung des NEO-Tastaturlayouts in der Programmiersprache AutoHotKey (auch AHK), www.autohotkey.com. Statt mit langen if-then-else-Bäumen auf getrennten Key-Hooks arbeitet neo-vars mit einem globalen, für (fast) alle Tasten durchlaufenen Key-Hook (keyhooks.ahk), der nicht nur für key-press sondern auch für key-release (up) verwendet wird.
## Key-Hook
Der Key-Hook durchläuft die Funktion AllStar (varsfunctions.ahk), in der der Name der gedrückten Taste (PhysKey, dann ActKey) um die aktuelle Ebenennummer erweitert wird und das Ergebnis als Variable abgefragt wird. Diese Variable (gespeichert in char) sagt nun, was sich hinter dem Tastendruck für ein Zeichen (z.B. „U0041“ für ein großes A) oder auch Sonderzeichen (z.B. „SComp“ für Compose), oder auch Unterprogrammaufruf (z.B. „P_EHt“ für das Umschalten des Einhand-Modus) verbirgt. Dieser „Lookup“, den man in „besseren“ Programmiersprachen mit assoziativen Hash-Arrays implementiert, wird in AHK über dynamische Variablenabfragen gemacht, wobei diese Variablen vorher definiert wurden.
## Variablen
Variablen werden aber nicht nur für die Zuweisung Ebene+Taste=Zeichen (keydefinitions.ahk) verwendet, sondern auch für Shortcuts (shortcuts.ahk), die später dazu dienen, aus abstrakten Zeichen wieder von Programmen verwendbare Tastendrücke zu machen: Aus „SHome“ wird beispielsweise über »send« wieder „{Home down}“ für den Tastendruck und „{Home up}“ für das Loslassen. Auch für Buchstaben und Sonderzeichen wird diese Methode verwendet, um größtmögliche Kompatibilität mit normalen Programmen zu gewährleisten. Alles, wofür es keine Shortcuts gibt, wird als Unicode-Zeichen an die
Applikation geschickt. Ein paar wenige Zeichen können nicht oder nur schwer durch getrennte Down-Up-Sequenzen umgesetzt werden; an diesen Stellen wird auf den getrennten Key-Release verzichtet und das Zeichen bzw. eine dafür notwendige Zeichenfolge über das gute alte »send« geschickt.
Zweiter wichtiger und auch für den Benutzer spürbarer Unterschied zum alten AHK-Skript ist die Unterstützung von Key-Press und -Release (down- und up-events), wodurch z.B. manche Programme erst benutzbar werden, wie z.B. Spiele, die die Dauer messen, für die eine Taste niedergedrückt ist. Dafür muss sich das Skript aber für jede Taste merken, was es bei einem späteren Release für ein Zeichen schicken muss, damit keine Taste „hängen“ bleibt. Auch diese Informationen werden in Variablen gespeichert, deren Namen mit dem Scancode/Virtualcode der Taste zusammenhängen.
Ähnlich werden Compose-Sequenzen unterstützt: Ist eine Variable definiert, die darauf hinweist, dass die bisherige Sequenz ein Compositum ist, wird dieses dargestellt. Ist eine andere Variable definiert, die sagt, dass bis zu einem fertigen Compositum noch mehr Zeichen kommen können, wird das aktuelle Zeichen nicht ausgegeben und stattdessen dem Compositum angehängt. Die dafür nötigen Variablen werden von einem Extra-Skript aus den definierten Compose-Sequenzen erstellt und als AHK-Code abgespeichert (compose.generated.ahk). Hier ist von Vorteil, dass AHK fast beliebig lange Variablennamen unterstützt.
Mit der Verwendung von Unterprogrammen, sowohl beim Drücken von Tasten, als auch bei Composita, eröffnen sich interessante
Möglichkeiten, die z.T. noch gar nicht ausgeschöpft sind. Ein paar Schmankerln sind aber jetzt schon eingebaut, wofür aber z.T. auch Hooks bemüht werden müssen.
Erst diese Key-Hooks an mehreren Stellen machen Spezial-Modi möglich: Es gibt einen Physical-Key-Hook, der z.B. für die Implementierung des Einhand-Neo verwendet wird (einhandneo.ahk). Er kann unter entsprechenden Nebenbedingungen, wie hier dem Gedrückthalten der Space-Taste, Tastencodes austauschen. Ein weiterer Key-Hook ermöglicht das Abfangen sämtlicher Tastendrücke für z.B. einen Römische-Zahlen-Modus (tools.ahk), um den gewohnten Ablauf zu ändern, um also hier die gedrückten Ziffern als Dezimalzahl zu interpretieren und in die für sie nötigen römischen Zahlen-Buchstaben umzuwandeln. Ähnlich funktioniert auch der generische Unicode-Zeichengenerator über ♫uu.
Eine weitere Stelle für Hooks ist die Ausgabefunktion, die derzeit für das Decodieren von Unicode-Zeichen verwendet wird: ♫dd und dann ein Zeichen eingeben, das auch über ein Compositum entstanden sein kann, und ein kleiner ToolTip gibt den entsprechenden Unicode-Codepoint aus (tools.ahk).
## Bildschirmtastatur
Die Bildschirmtastatur (M3+F1) reagiert nunmehr dynamisch auf die verschiedenen aktivierten Ebenen, d.h. mit dem Drücken eines Modifiers wird automatisch die entsprechende Ebene angezeigt, ohne dass man diese manuell wählen müsste. Im CapsLock-Modus funktioniert das noch nicht richtig, da sich dort Buchstaben und Sonderzeichen unterschiedlich verhalten und wir dafür noch zwei zusätzliche PNG-Dateien brauchen. Abgesehen davon gibt es Überlegungen, die Bildschirmtastatur komplett dynamisch zu machen, das heißt, dass man auch die zu erwartenden Compose-Sequenzen sehen kann. Wenn man also das tote Hochkomma ́ tippt, würde die Bildschirmtastatur für die solcherart unterstützten Tasten die Buchstaben mit Apostroph darstellen. Ob das aber so einfach geht, ist nicht ganz klar: Erstens muss die Ausgabe ausreichend gut ausschauen, zweitens muss die Existenz eines dafür ausgelegten Unicode-Fonts sichergestellt sein, und schließlich muss man die entsprechenden Windows-Funktionen umständlich über DLL-Calls aufrufen, um die AHK-Beschränkung auf die System-Codepage zu überwinden. Ob diese Funktion dann auch die benötigte Performance hat, müsste sich erst erweisen.
Das AHK-Skript (leider nicht das EXE) bindet jetzt eine eventuell bestehende individuelle Datei aus dem NEO2-Applikationsverzeichnis ein (custom.ahk). Überhaupt sind die Spezialmodi wie EinHand-Neo, Lernmodus und Lang-s-Tastatur in eigene „Module“ ausgelagert worden, die den restlichen Code überhaupt nicht mehr tangieren. Das bedeutet einerseits, dass man sie einfacher warten kann, andererseits auch, dass sie durch diese leicht zu durchschauende Kapselung als Vorlage für individuelle Erweiterungen zur Verfügung stehen. So wäre denkbar, dass man auch die normale Belegung in ein Modul packt, das dann recht einfach und unabhängig vom restlichen Code gewartet werden kann.
Auf kurze Sicht steht eine automatische Tasten-Layout-Generierung auf dem Plan, mit der man über einen Klick die aktuelle Tastenbelegung aus der Referenz erzeugen kann. Zuvor sollte ein vernünftiges Dateiformat für die Referenz gefunden werden, dann kann mit der Erstellung des Konverters begonnen werden.
Last, but not least gehört für die vielen Konfigurationsoptionen ein entsprechender Dialog her. Der Kapselung wegen könnten die einzelnen Module hier separate Dialogboxen oder Tabs erhalten.
## Tray-Tipps
Übrigens stellt neo-vars seine Informationen (z.B. über die Aktivierung des Mod4-Lock) über Tray-Tips dar, die mitunter im Explorer oder über die Registry aktiviert werden müssen. Diese Einstellung zu ändern, wäre auch ein heißer Kandidat für die Config-Dialoge.
Nur ein kleiner Teil des Codes wurde vom alten Neo-AHK übernommen, darunter die kaum benutzten Keyboard-LEDs und die stark angepassten Unicode-Zeichenausgaben und Ebenenfunktionen. Mittlerweile werden sogar die Modifier über die normalen Keyboard-Hooks geleitet, wodurch man im Prinzip auch diese Zeichen generisch umlegen kann. Einen Strich durch die Rechnung macht uns AHK mit einer recht unflexiblen Handhabung der Alt-Taste, die zwar ge-hookt aber nicht so einfach gesendet werden kann (AHK sendet bona fide automatisch Key-release-Events und simuliert Strg-Tastendrücke). Strg, Win und Konsorten wären hingegen kein Problem.
Wir hatten recht lang ein generelles Performance-Problem, das zur Folge hatte, dass hier und da ein Zeichen nicht vom AHK-Skript verarbeitet wurde und stattdessen direkt zur Applikation weiter gereicht wurde. Dieses Problem ist offenbar auf AHK und dessen Funktion SendInput in seiner derzeitigen Version zurückzuführen. Mit SendEvent (bzw. »SendMode Event« am Beginn des Skripts) haben wir aber keine Probleme mehr, weshalb neo-vars nun auch die offizielle AHK-Version ist.
## Individuelles Zusatz-Skript
Sofern man NeoVars als AHK-Skript startet und nicht als vorcompiliertes .EXE, hat man die Möglichkeit, eine Datei `custom.ahk` im Neo2-Anwendungsdaten-Verzeichnis (`%APPDATA%\Neo2\`) in den NeoVars-Start einzubinden. Über diesen Mechanismus kann man auf sämtliche Funktionen von AutoHotkey zugreifen und auch am Innersten von NeoVars Anpassungen vornehmen.
Man kann `custom.ahk` beispielsweise benützen, um das Tastaturlayout permanent oder auch per Hotkey, den individuellen Wünschen entsprechend, änderbar zu machen. Im Anschluss ist ein Skript zu sehen, das die alternative MU-HP-Variante einrichtet und per Hotkey M3+F8 zugänglich macht.
```
; -*- encoding:utf-8 -*-
; NEO-MUHP
; (c) 2009 Matthias Wächter
CharProc__UHPt() {
global
; Custom Layout togglen
isUHP := !(isUHP)
if (isUHP) {
CharProc__UHP1()
if (zeigeModusBox)
TrayTip,NEO-MU-HP-Belegungsvariante,Die Belegungsvariante wurde aktiviert. Zum Deaktivieren`, Mod3+F8 druecken.,10,1
} else {
CharProc__UHP0()
if (zeigeModusBox)
TrayTip,NEO-MU-HP-Belegungsvariante,Die Belegungsvariante wurde deaktiviert.,10,1
}
}
CharProc__UHP1() {
global
; NEO-MU-HP-Tastaturbelegungsvariante aktivieren
ED12("010",1,"y","Y")
ED12("011",1,"o","O")
ED12("012",1,"a","A")
ED12("013",0,",","–")
ED12("014",1,"j","J")
ED12("015",1,"k","K")
ED12("016",1,"g","G")
ED12("017",1,"c","C")
ED12("018",1,"l","L")
ED12("019",1,"f","F")
ED12("01A",1,"x","X")
ED12("01E",1,"i","I")
ED12("01F",1,"u","U")
ED12("020",1,"e","E")
ED12("021",1,"h","H")
ED12("022",1,"p","P")
ED12("023",1,"d","D")
ED12("024",1,"t","T")
ED12("025",1,"n","N")
ED12("026",1,"r","R")
ED12("027",1,"s","S")
ED12("028",1,"ß","ẞ")
ED12("02C",1,"ü","Ü")
ED12("02D",1,"ö","Ö")
ED12("02E",1,"ä","Ä")
ED12("02F",0,".","•")
ED12("030",1,"q","Q")
ED12("031",1,"v","V")
ED12("032",1,"m","M")
ED12("033",1,"b","B")
ED12("034",1,"z","Z")
ED12("035",1,"w","W")
}
CharProc__UHP0() {
global
; NEO-MU-DK-Tastaturbelegungsvariante deaktivieren
ED12("010",1,"x","X")
ED12("011",1,"v","V")
ED12("012",1,"l","L")
ED12("013",1,"c","C")
ED12("014",1,"w","W")
ED12("015",1,"k","K")
ED12("016",1,"h","H")
ED12("017",1,"g","G")
ED12("018",1,"f","F")
ED12("019",1,"q","Q")
ED12("01A",1,"ß","ẞ")
ED12("01E",1,"u","U")
ED12("01F",1,"i","I")
ED12("020",1,"a","A")
ED12("021",1,"e","E")
ED12("022",1,"o","O")
ED12("023",1,"s","S")
ED12("024",1,"n","N")
ED12("025",1,"r","R")
ED12("026",1,"t","T")
ED12("027",1,"d","D")
ED12("028",1,"y","Y")
ED12("02C",1,"ü","Ü")
ED12("02D",1,"ö","Ö")
ED12("02E",1,"ä","Ä")
ED12("02F",1,"p","P")
ED12("030",1,"z","Z")
ED12("031",1,"b","B")
ED12("032",1,"m","M")
ED12("033",0,",","–")
ED12("034",0,".","•")
ED12("035",1,"j","J")
}
ActivateNEOMUHP() {
global
CP3F8 := "P__UHPt" ; M3+F8: Aktiviere/Deaktiviere NEO-MU-HP
IniRead,isMUHP,%ini%,Global,isMUHP,0
if (isMUHP)
CharProc__UHP1()
}
ActivateNEOMUHP()
```
# NeoVars für Entwickler
!!! warning "Zu überarbeiten"
Diese Seite ist nach der Portierung noch nicht inhaltlich überarbeitet worden. Einige Inhalte sind womöglich obsolet oder besser auf anderen Seiten aufgehoben. Eine Überarbeitung der Seite ist angeraten. Diskussionen sind zu entfernen oder zu verschieben.
**Eine schnelle, sehr pragmatische Kurzanleitung zum Verändern von Buchstaben findet sich [hier](http://www.adnw.de/uploads/Main/ADNWMitNeo-TreiberUnterWindows/NeoVarsModAnleitung2.pdf)**
## Geschichte
NeoVars ist die nunmehr zweite Implementierung des NEO-Tastaturlayouts in der Programmiersprache AutoHotKey (auch AHK), www.autohotkey.com. Statt mit langen if-then-else-Bäumen auf getrennten Key-Hooks arbeitet neo-vars mit einem globalen, für (fast) alle Tasten durchlaufenen Key-Hook (keyhooks.ahk), der nicht nur für key-press sondern auch für key-release (up) verwendet wird.
## Key-Hook
Der Key-Hook durchläuft die Funktion AllStar (varsfunctions.ahk), in der der Name der gedrückten Taste (PhysKey, dann ActKey) um die aktuelle Ebenennummer erweitert wird und das Ergebnis als Variable abgefragt wird. Diese Variable (gespeichert in char) sagt nun, was sich hinter dem Tastendruck für ein Zeichen (z.B. „U0041“ für ein großes A) oder auch Sonderzeichen (z.B. „SComp“ für Compose), oder auch Unterprogrammaufruf (z.B. „P_EHt“ für das Umschalten des Einhand-Modus) verbirgt. Dieser „Lookup“, den man in „besseren“ Programmiersprachen mit assoziativen Hash-Arrays implementiert, wird in AHK über dynamische Variablenabfragen gemacht, wobei diese Variablen vorher definiert wurden.
## Variablen
Variablen werden aber nicht nur für die Zuweisung Ebene+Taste=Zeichen (keydefinitions.ahk) verwendet, sondern auch für Shortcuts (shortcuts.ahk), die später dazu dienen, aus abstrakten Zeichen wieder von Programmen verwendbare Tastendrücke zu machen: Aus „SHome“ wird beispielsweise über »send« wieder „{Home down}“ für den Tastendruck und „{Home up}“ für das Loslassen. Auch für Buchstaben und Sonderzeichen wird diese Methode verwendet, um größtmögliche Kompatibilität mit normalen Programmen zu gewährleisten. Alles, wofür es keine Shortcuts gibt, wird als Unicode-Zeichen an die
Applikation geschickt. Ein paar wenige Zeichen können nicht oder nur schwer durch getrennte Down-Up-Sequenzen umgesetzt werden; an diesen Stellen wird auf den getrennten Key-Release verzichtet und das Zeichen bzw. eine dafür notwendige Zeichenfolge über das gute alte »send« geschickt.
Zweiter wichtiger und auch für den Benutzer spürbarer Unterschied zum alten AHK-Skript ist die Unterstützung von Key-Press und -Release (down- und up-events), wodurch z.B. manche Programme erst benutzbar werden, wie z.B. Spiele, die die Dauer messen, für die eine Taste niedergedrückt ist. Dafür muss sich das Skript aber für jede Taste merken, was es bei einem späteren Release für ein Zeichen schicken muss, damit keine Taste „hängen“ bleibt. Auch diese Informationen werden in Variablen gespeichert, deren Namen mit dem Scancode/Virtualcode der Taste zusammenhängen.
Ähnlich werden Compose-Sequenzen unterstützt: Ist eine Variable definiert, die darauf hinweist, dass die bisherige Sequenz ein Compositum ist, wird dieses dargestellt. Ist eine andere Variable definiert, die sagt, dass bis zu einem fertigen Compositum noch mehr Zeichen kommen können, wird das aktuelle Zeichen nicht ausgegeben und stattdessen dem Compositum angehängt. Die dafür nötigen Variablen werden von einem Extra-Skript aus den definierten Compose-Sequenzen erstellt und als AHK-Code abgespeichert (compose.generated.ahk). Hier ist von Vorteil, dass AHK fast beliebig lange Variablennamen unterstützt.
Mit der Verwendung von Unterprogrammen, sowohl beim Drücken von Tasten, als auch bei Composita, eröffnen sich interessante
Möglichkeiten, die z.T. noch gar nicht ausgeschöpft sind. Ein paar Schmankerln sind aber jetzt schon eingebaut, wofür aber z.T. auch Hooks bemüht werden müssen.
Erst diese Key-Hooks an mehreren Stellen machen Spezial-Modi möglich: Es gibt einen Physical-Key-Hook, der z.B. für die Implementierung des Einhand-Neo verwendet wird (einhandneo.ahk). Er kann unter entsprechenden Nebenbedingungen, wie hier dem Gedrückthalten der Space-Taste, Tastencodes austauschen. Ein weiterer Key-Hook ermöglicht das Abfangen sämtlicher Tastendrücke für z.B. einen Römische-Zahlen-Modus (tools.ahk), um den gewohnten Ablauf zu ändern, um also hier die gedrückten Ziffern als Dezimalzahl zu interpretieren und in die für sie nötigen römischen Zahlen-Buchstaben umzuwandeln. Ähnlich funktioniert auch der generische Unicode-Zeichengenerator über ♫uu.
Eine weitere Stelle für Hooks ist die Ausgabefunktion, die derzeit für das Decodieren von Unicode-Zeichen verwendet wird: ♫dd und dann ein Zeichen eingeben, das auch über ein Compositum entstanden sein kann, und ein kleiner ToolTip gibt den entsprechenden Unicode-Codepoint aus (tools.ahk).
## Bildschirmtastatur
Die Bildschirmtastatur (M3+F1) reagiert nunmehr dynamisch auf die verschiedenen aktivierten Ebenen, d.h. mit dem Drücken eines Modifiers wird automatisch die entsprechende Ebene angezeigt, ohne dass man diese manuell wählen müsste. Im CapsLock-Modus funktioniert das noch nicht richtig, da sich dort Buchstaben und Sonderzeichen unterschiedlich verhalten und wir dafür noch zwei zusätzliche PNG-Dateien brauchen. Abgesehen davon gibt es Überlegungen, die Bildschirmtastatur komplett dynamisch zu machen, das heißt, dass man auch die zu erwartenden Compose-Sequenzen sehen kann. Wenn man also das tote Hochkomma ́ tippt, würde die Bildschirmtastatur für die solcherart unterstützten Tasten die Buchstaben mit Apostroph darstellen. Ob das aber so einfach geht, ist nicht ganz klar: Erstens muss die Ausgabe ausreichend gut ausschauen, zweitens muss die Existenz eines dafür ausgelegten Unicode-Fonts sichergestellt sein, und schließlich muss man die entsprechenden Windows-Funktionen umständlich über DLL-Calls aufrufen, um die AHK-Beschränkung auf die System-Codepage zu überwinden. Ob diese Funktion dann auch die benötigte Performance hat, müsste sich erst erweisen.
Das AHK-Skript (leider nicht das EXE) bindet jetzt eine eventuell bestehende individuelle Datei aus dem NEO2-Applikationsverzeichnis ein (custom.ahk). Überhaupt sind die Spezialmodi wie EinHand-Neo, Lernmodus und Lang-s-Tastatur in eigene „Module“ ausgelagert worden, die den restlichen Code überhaupt nicht mehr tangieren. Das bedeutet einerseits, dass man sie einfacher warten kann, andererseits auch, dass sie durch diese leicht zu durchschauende Kapselung als Vorlage für individuelle Erweiterungen zur Verfügung stehen. So wäre denkbar, dass man auch die normale Belegung in ein Modul packt, das dann recht einfach und unabhängig vom restlichen Code gewartet werden kann.
Auf kurze Sicht steht eine automatische Tasten-Layout-Generierung auf dem Plan, mit der man über einen Klick die aktuelle Tastenbelegung aus der Referenz erzeugen kann. Zuvor sollte ein vernünftiges Dateiformat für die Referenz gefunden werden, dann kann mit der Erstellung des Konverters begonnen werden.
Last, but not least gehört für die vielen Konfigurationsoptionen ein entsprechender Dialog her. Der Kapselung wegen könnten die einzelnen Module hier separate Dialogboxen oder Tabs erhalten.
## Tray-Tipps
Übrigens stellt neo-vars seine Informationen (z.B. über die Aktivierung des Mod4-Lock) über Tray-Tips dar, die mitunter im Explorer oder über die Registry aktiviert werden müssen. Diese Einstellung zu ändern, wäre auch ein heißer Kandidat für die Config-Dialoge.
Nur ein kleiner Teil des Codes wurde vom alten Neo-AHK übernommen, darunter die kaum benutzten Keyboard-LEDs und die stark angepassten Unicode-Zeichenausgaben und Ebenenfunktionen. Mittlerweile werden sogar die Modifier über die normalen Keyboard-Hooks geleitet, wodurch man im Prinzip auch diese Zeichen generisch umlegen kann. Einen Strich durch die Rechnung macht uns AHK mit einer recht unflexiblen Handhabung der Alt-Taste, die zwar ge-hookt aber nicht so einfach gesendet werden kann (AHK sendet bona fide automatisch Key-release-Events und simuliert Strg-Tastendrücke). Strg, Win und Konsorten wären hingegen kein Problem.
Wir hatten recht lang ein generelles Performance-Problem, das zur Folge hatte, dass hier und da ein Zeichen nicht vom AHK-Skript verarbeitet wurde und stattdessen direkt zur Applikation weiter gereicht wurde. Dieses Problem ist offenbar auf AHK und dessen Funktion SendInput in seiner derzeitigen Version zurückzuführen. Mit SendEvent (bzw. »SendMode Event« am Beginn des Skripts) haben wir aber keine Probleme mehr, weshalb neo-vars nun auch die offizielle AHK-Version ist.
## Individuelles Zusatz-Skript
Sofern man NeoVars als AHK-Skript startet und nicht als vorcompiliertes .EXE, hat man die Möglichkeit, eine Datei `custom.ahk` im Neo2-Anwendungsdaten-Verzeichnis (`%APPDATA%\Neo2\`) in den NeoVars-Start einzubinden. Über diesen Mechanismus kann man auf sämtliche Funktionen von AutoHotkey zugreifen und auch am Innersten von NeoVars Anpassungen vornehmen.
Man kann `custom.ahk` beispielsweise benützen, um das Tastaturlayout permanent oder auch per Hotkey, den individuellen Wünschen entsprechend, änderbar zu machen. Im Anschluss ist ein Skript zu sehen, das die alternative MU-HP-Variante einrichtet und per Hotkey M3+F8 zugänglich macht.
```
; -*- encoding:utf-8 -*-
; NEO-MUHP
; (c) 2009 Matthias Wächter
CharProc__UHPt() {
global
; Custom Layout togglen
isUHP := !(isUHP)
if (isUHP) {
CharProc__UHP1()
if (zeigeModusBox)
TrayTip,NEO-MU-HP-Belegungsvariante,Die Belegungsvariante wurde aktiviert. Zum Deaktivieren`, Mod3+F8 druecken.,10,1
} else {
CharProc__UHP0()
if (zeigeModusBox)
TrayTip,NEO-MU-HP-Belegungsvariante,Die Belegungsvariante wurde deaktiviert.,10,1
}
}
CharProc__UHP1() {
global
; NEO-MU-HP-Tastaturbelegungsvariante aktivieren
ED12("010",1,"y","Y")
ED12("011",1,"o","O")
ED12("012",1,"a","A")
ED12("013",0,",","–")
ED12("014",1,"j","J")
ED12("015",1,"k","K")
ED12("016",1,"g","G")
ED12("017",1,"c","C")
ED12("018",1,"l","L")
ED12("019",1,"f","F")
ED12("01A",1,"x","X")
ED12("01E",1,"i","I")
ED12("01F",1,"u","U")
ED12("020",1,"e","E")
ED12("021",1,"h","H")
ED12("022",1,"p","P")
ED12("023",1,"d","D")
ED12("024",1,"t","T")
ED12("025",1,"n","N")
ED12("026",1,"r","R")
ED12("027",1,"s","S")
ED12("028",1,"ß","ẞ")
ED12("02C",1,"ü","Ü")
ED12("02D",1,"ö","Ö")
ED12("02E",1,"ä","Ä")
ED12("02F",0,".","•")
ED12("030",1,"q","Q")
ED12("031",1,"v","V")
ED12("032",1,"m","M")
ED12("033",1,"b","B")
ED12("034",1,"z","Z")
ED12("035",1,"w","W")
}
CharProc__UHP0() {
global
; NEO-MU-DK-Tastaturbelegungsvariante deaktivieren
ED12("010",1,"x","X")
ED12("011",1,"v","V")
ED12("012",1,"l","L")
ED12("013",1,"c","C")
ED12("014",1,"w","W")
ED12("015",1,"k","K")
ED12("016",1,"h","H")
ED12("017",1,"g","G")
ED12("018",1,"f","F")
ED12("019",1,"q","Q")
ED12("01A",1,"ß","ẞ")
ED12("01E",1,"u","U")
ED12("01F",1,"i","I")
ED12("020",1,"a","A")
ED12("021",1,"e","E")
ED12("022",1,"o","O")
ED12("023",1,"s","S")
ED12("024",1,"n","N")
ED12("025",1,"r","R")
ED12("026",1,"t","T")
ED12("027",1,"d","D")
ED12("028",1,"y","Y")
ED12("02C",1,"ü","Ü")
ED12("02D",1,"ö","Ö")
ED12("02E",1,"ä","Ä")
ED12("02F",1,"p","P")
ED12("030",1,"z","Z")
ED12("031",1,"b","B")
ED12("032",1,"m","M")
ED12("033",0,",","–")
ED12("034",0,".","•")
ED12("035",1,"j","J")
}
ActivateNEOMUHP() {
global
CP3F8 := "P__UHPt" ; M3+F8: Aktiviere/Deaktiviere NEO-MU-HP
IniRead,isMUHP,%ini%,Global,isMUHP,0
if (isMUHP)
CharProc__UHP1()
}
ActivateNEOMUHP()
```
**Achtung:** Die hier verwendeten Funktionen erfordern umfangreiches Wissen rund um AutoHotkey und NeoVars. Desweiteren ist das hier dargestellte Skript nur lauffähig, wenn es als UTF-8-Datei abgespeichert wurde.

@ -1,147 +1,147 @@
# Treiber-Know-How
!!! warning "Zu überarbeiten"
Diese Seite ist nach der Portierung noch nicht inhaltlich überarbeitet worden. Einige Inhalte sind womöglich obsolet oder besser auf anderen Seiten aufgehoben. Eine Überarbeitung der Seite ist angeraten. Diskussionen sind zu entfernen oder zu verschieben.
Auf dieser Seite sollen Interna der Treiberentwicklung festgehalten werden.
Mit welchen Programmen lassen sich die Treiber bearbeiten, welche Möglichkeiten sind schon getestet worden, was kann in der Zukunft noch probiert werden?
Auch Sackgassen sollten dokumentiert werden, damit nicht die nächsten wieder reinlaufen!
Natürlich kann diese Seite auch denjenigen helfen, die sich ihre Treiber individuell anpassen wollen.
Dafür gibt es wohl vor allem zwei Gründe:
* spezielle Bedürfnisse, die in der allgemeinen Referenz nicht berücksichtigt werden können
* spezielle Hardware, die Anpassungen nötig macht
## Windows
Für Windows gibt es momentan drei Neo-Treiber. Infos zur [Einrichtung der Treiber](/Benutzerhandbuch/Installation#windows) gibt es auf einer Extraseite.
### kbdneo
kbdneo ist ein richtiger Treiber, der direkt die Tastendrucke der Tastatur empfängt. Leider kann er bislang noch nicht alle Funktionen der Referenz umsetzen. Diese können mit einem AHK-Skript nachgerüstet werden.
Für die Entwicklung des kbdneo-Treibers wird momentan das [Windows Driver Kit](http://www.microsoft.com/whdc/devtools/wdk/wdkpkg.mspx) verwendet.
Für die M3-Ebene wird ein neu geschaffener Modifier verwendet, für die M4-Ebene der japanische Kana-Modifier.
Im »WinDDK-Programmordner«\src\input\layout\ gibt es einige Beispiele.
Ein guter Texteditor reicht für die Bearbeitung der Dateien.
Kompiliert wird der Treiber durch Eingabe von ‚build‘ im Ordner der Quellcodedateien in dem ‚Build Environment‘.
(Für weitere Infos: Florian Janßen fragen.)
### Neovars
Neovars ist in der Skriptsprache [Autohotkey](https://www.autohotkey.com/) geschrieben. Dies ermöglicht die komplette Umsetzung der Referenz (und noch mehr). Die Skripte sowie die fertig kompilierte exe-Dateien lassen sich ohne Administratorrechte ausführen. Allerdings kann mit dieser Herangehensweise kein echtes Tastaturlayout realisiert werden, da die Tastendrucke lediglich abgefangen und umgewandelt werden, was zu ganz eigenen Problemen führt.
Der aktuelle AHK-Treiber ist Neovars, der auch aktiv weiterentwickelt wird. Es gibt ausführliche Hinweise für [Nutzer](/Benutzerhandbuch/neovars) wie [Entwickler](Treiber-KnowHow-NeoVars.md).
Die letzte Version vor der Neuimplementierung steht [im SVN](../src/branch/master/windows/ahk-auslaufend) für Entwickler zu Testzwecken zur Verfügung.
Dieser Treiber sollte aber nicht mehr verwendet werden.
### neo2-llkh
neo2-llkh ist ein sehr schlanker Treiber, der weder Autohotkey noch Admin-Rechte benötigt. Er unterstützt alle sechs Ebenen und bietet ein paar Funktionen, die in den anderen Treibern nicht verfügbar sind: Zum Beispiel können die linke Alt- und Strg-Taste vertauscht werden, CapsLock kann als zusätzliche Escape-Taste konfiguriert werden oder man kann einstellen, dass für Shortcuts das QWERTZ-Layout gelten soll.
Dieser Treiber ist der jüngste in der Liste und deshalb auch nicht so gut erprobt wie die anderen.
### Weitere Programme
Es gibt noch einige andere Programme, mit denen ebenfalls die Änderung des Windows-Tastaturlayouts möglich ist. Sie sind jedoch den oben beschriebenen aus verschiedenen Gründen unterlegen:
* MSKLC: [MSKLC 1.4](http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx) ist für Windows, kostenlos und gut, wenn man „nur“ 4 Ebenen hat. Es ist in der Hilfedatei hervorragend beschrieben. Man erstellt wie mit dem DDK (kbdneo) ein „echtes“ Tastaturlayout. Wurde für Neo1 verwendet, inzwischen jedoch vom [DDK](TreiberKnowHow#kbdneo) (siehe dort) abgelöst.
* KbdEdit: Ein vielversprechendes Programm zur Erstellung von Tastaturlayouts. Doch da nicht nur die Entwicklerversion Geld kostet, sondern auch das fertige Layout nur mit dem kostenpflichtigen Player verwendet werden kann, kommt es für Neo leider nicht in Frage.
* [KeyTweak](http://webpages.charter.net/krumsick/): Greift direkt in die Registry ein und ermöglicht so nicht das Umschalten zwischen Neo und qwertz. Kann aber z.B. CapsLock dauerhaft zu AltGr ändern.
## Linux
Hier ist [die Einrichtung von Neo unter Linux](/Benutzerhandbuch/Linux) beschrieben.
Die Linux-„Treiber“ sind reine Textdateien, lassen sich also mit dem Editor bearbeiten.
Interessant sind also vor allem Probleme, die beim Bearbeiten aufgetaucht sind.
Falls Linux mit einer **Mac-Tastatur** betrieben werden soll (adb, z.B. Installation auf einem iBook), gibt es wohl Probleme, CapsLock umzubelegen. Dazu ist ein Patch (macintosh-mangle-caps-lock-events-on-adb-keyboards.patch) notwendig, der einen Eintrag /proc/sys/dev/adbhid/mangle_caps_lock_events hinzufügt (siehe dazu [hier](http://hans.fugal.net/yodl/blosxom.cgi/mac/caps.html) und [hier](http://lists.debian.org/debian-powerpc/2005/12/msg00214.html)).
Dieser [Patch](http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/) befand sich auch eine Weile im ­mm Zweig des Kernels, ist aber inzwischen wieder rausgeflogen.
### Xmodmap
Zur Info die allgemeine [Man-Page](http://www.xfree86.org/4.0.1/xmodmap.1.html) zur Xmodmap, sowie eine deutsche Seite aus dem [Ubuntu-Wiki](http://wiki.ubuntuusers.de/Xmodmap).
### Xkbmap
Vier Ressourcen, die beim Entwickeln von xkb helfen können:
* [„XKB configuration guide“](http://www.xfree86.org/current/XKB-Config.html), hier wird die Einrichtung von XFree86 XKB beschrieben, das Manual richtet sich vor allem an Anwender.
* [„How to further enhance XKB configuration“](http://www.xfree86.org/current/XKB-Enhancing.html), hier wird vor allem für Entwickler die Erstellung von neuen (internationalisierten) Tastaturlayouts beschrieben. Für ein einfaches Layout ohne komplizierte Modifier-Verhalten sollte diese Anleitung ausreichen.
* [„An Unreliable Guide to XKB Configuration“](http://www.charvolant.org/~doug/xkb/html/index.html), vermutlich nicht ganz so unverlässlich, wie es sich selbst schimpft :-)
* [X Keyboard Extension von Ivan Pascal](http://pascal.tsu.ru/en/xkb/), auch wenn Sprache und Rechtschreibung dort sehr zu wünschen übrig lassen, bekommt man dort einen weitaus tieferen Einblick als in all den anderen Anleitungen.
Es wurde viel diskutiert, wie der Name des Layouts in den Treibern und im X-Server sein soll.
Für die Aufnahme in den offiziellen X-Server muss das Layout »de_neo« heißen, im X-Server wird also „neo“ als Option des Layouts „de“ ausgewählt.
### Compose
Es gibt eine eigene Seite zum [Einrichten der Neo-Composedatei](/Benutzerhandbuch/Tote-Tasten-und-Compose#Linux).
## Mac OS
Allgemeine Infos gibt es unter [Einrichtung von Neo auf einem Mac](/Benutzerhandbuch/macOS).
Eventuelle Alternativen zum [neo.keylayout](#neokeylayout):
* Wird ein X-Server installiert, läßt sich auch eine Xmodmap laden. Allerdings benötigt man eine speziell angepaßte Version der Xmodmap, und sie wirkt sich nur auf Programme aus, die unter X11 laufen. Zu finden ist diese angepaßte Version im Anhang von Pascals Mail auf der Mailingliste: [neo_mac.xmodmap](http://lists.neo-layout.org/pipermail/diskussion/2009-June/013158.html) (ab »nächster Teil«). Allerdings funktionieren dabei nicht die Ebenen 4 und 6 (siehe entsprechende [Diskussion](http://lists.neo-layout.org/pipermail/diskussion/2009-June/013159.html)).
* Vielleicht wird es irgendwann auch eine Dotnet-Implementierung für AHK geben, dann könnte man auch den AHK-Treiber am Mac benutzen ([die Meldung dazu](http://www.autohotkey.com/forum/topic34421-30.html)).
### neo.keylayout
Es ist nicht schwierig, die Datei [neo.keylayout](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/mac_osx/neo.keylayout) zu bearbeiten, da Apple sich hier für das mensch- wie maschinenlesbare XML-Format entschieden hat.
* **code** gibt die Nummer der Taste an, durch deren Drücken man das dahinter geschriebene Zeichen erhält.
* Nach Tasten mit **action** wartet der Computer auf eine zweite Eingabe.
* Welches Zeichen man durch die Kombinationen erhält, kann man am Ende der Datei unter **actions** definieren.
* Weitere Infos gibt’s in einer [Technical Note](http://developer.apple.com/technotes/tn2002/tn2056.html).
[Ukelele](http://scripts.sil.org/ukelele) ist ein sehr guter Keyboardlayouteditor für Mac, sowohl was Handhabung als auch Dokumentation angeht. Dies ist komfortabler, als die XML-Datei mit einem normalen Texteditor zu bearbeiten.
### Modifier
Neo verwendet die „Alt-/Optionstaste“ als M3, also ist Ebene 3 mit „Alt/Option“, Ebene 5 mit „Alt/Option“ + „Shift“ erreichbar. In den Systemeinstellungen verbirgt sich unter „Tastatur“ das „Sondertasten-Menü“ (engl. bei den System Preferences „Keyboard“ → „Modifier“). Dort können CapsLock, Ctrl, Alt/Option/Wahltaste und Apfel/Befehlstaste neu belegt werden. Es wird empfohlen, dort für CapsLock die Funtkion „Alt/Option“ einzustellen, um den linken Mod3 am gewohnten Platz vorzufinden.
Die Tasten # und < lassen sich in den Systemeinstellungen nicht als Modifier einstellen. Das ist jedoch über das Programm [KeyRemap4MacBook](http://pqrs.org/macosx/keyremap4macbook/index.html) möglich in Kombination mit der für Neo angepassten [http://neo-layout.org/private.xml](http://wiki.neo-layout.org/browser/mac_osx/private.xml?format=raw). Diese xml-Datei lässt sich auch noch weiter bearbeiten und an individuelle Bedürfnisse anpassen.
#### M4 und rechte CMD-Taste
Wer eine Apple-Tastatur besitzt, bei der rechts neben der Leertaste eine weitere CMD-Taste existiert, kann über folgende Lösung diese Taste als weitere CMD- und nicht als M4-Taste nutzen (M4 wird dann über die rechte ALT-Taste bedient). Dann können Shortcuts mit Command-Key auch per Zehnfingerstystem und ohne Klammergriff bedient werden können.
Hierzu einfach die [KeyRemap4MacBook XML Datei](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/mac_osx/private.xml) anpassen:
```
<!-- Mod 4 Modifiers and Mod 4 Locks -->
<autogen>--KeyOverlaidModifier-- KeyCode::OPTION_R, ModifierFlag::EXTRA1,
KeyCode::VK_MODIFIER_EXTRA1, KeyCode::VK_LOCK_EXTRA1</autogen>
<autogen>--KeyToKey-- KeyCode::OPTION_R, KeyCode::VK_MODIFIER_EXTRA1</autogen>
```
Ein umbinden der rechten Option auf rechte Command ist danach auch nicht mehr nötig in KeyRemap4MacBook.
## Compose
Zur Aufnahme oder Änderung von [Compose](Compose)-Kombinationen muss die Datei SVN/Compose/Compose.neo um die entsprechenden Einträge ergänzt werden. Diese UTF-8-Datei ist im Standard-Compose-Format für Linux geschrieben. Die Compose-Funktion unter Windows (beispielsweise die des NeoVars) wird hieraus automatisch generiert.
### Beschreibung einer typischen Kombination
Die Coko ♫|C=ℂ würde beispielsweise durch die folgende Zeile umgesetzt werden:
> `<Multi_key> <bar> <C> : "ℂ" U02102 # DOUBLE-STRUCK CAPITAL C`
Dabei steht…
* `<Multi_key>` für ♫,
* `<bar>` für | (symbolischer Linux-Name in ASCII),
* `<C>` für C (auch ASCII ;-)),
* `"ℂ"` für die Ausgabe (diesmal als echtes, d.h. UTF-8-kodiertes Unicode-Zeichen zwischen den Anführungszeichen),
* und alles hiernach ist ein Kommentar, und zwar
* der eindeutige Unicode-Codepointder Ausgabe: ` U02102`,
* und die offizielle Unicode-Beschreibung dieses Zeichens: `# DOUBLE-STRUCK CAPITAL C`.
Die offiziellen Beschreibungen und Codepoints können in der [Unicode-Referenz](http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt) nachgeschlagen werden. Bei umfangreichen systematischen Ergänzen ist es sinnvoll, die Cokos zur Arbeitsersparung mit einer Tabellenverarbeitung zu erstellen, oder ein entsprechendes Skript zu erstellen.
### Überschreiben vorhandener Cokos
Falls einmal bereits vorhandene Kombinationen bewusst umdefiniert werden sollten, ist es wichtig, dass die Compose.neo am Ende der Compose eingefügt wird, da bei mehrfach vorhandenen Kombinationen stets die letzte gültig ist.
### Sonstige Hinweise
* Bei Kombinationen mit Zahlen die KP_-Zahlen nicht vergessen!
* Wieso setzt man sowohl <underbar\> als auch <underscore\>?
* Einige Programme (z.B. gucharmap) reagieren auf beide unterschiedlich, bei Neo wird aber nur underscore benutzt. Da es in der Standard-Compose stets beide Definitionen gibt, wurde das bislang so beibehalten, auch wenn die underbar-Definitionen höchstwahrscheinlich nie gebraucht werden werden.
* Funktionieren auch Angaben der Form <Multi_key\> <U1234\> <∀>?
* Unter Linux definitiv nicht. Darum sollten wir bei der bisherigen Lösung bleiben, die vielleicht für Entwickler umständlicher ist, aber dafür problemlos funktioniert.
# Treiber-Know-How
!!! warning "Zu überarbeiten"
Diese Seite ist nach der Portierung noch nicht inhaltlich überarbeitet worden. Einige Inhalte sind womöglich obsolet oder besser auf anderen Seiten aufgehoben. Eine Überarbeitung der Seite ist angeraten. Diskussionen sind zu entfernen oder zu verschieben.
Auf dieser Seite sollen Interna der Treiberentwicklung festgehalten werden.
Mit welchen Programmen lassen sich die Treiber bearbeiten, welche Möglichkeiten sind schon getestet worden, was kann in der Zukunft noch probiert werden?
Auch Sackgassen sollten dokumentiert werden, damit nicht die nächsten wieder reinlaufen!
Natürlich kann diese Seite auch denjenigen helfen, die sich ihre Treiber individuell anpassen wollen.
Dafür gibt es wohl vor allem zwei Gründe:
* spezielle Bedürfnisse, die in der allgemeinen Referenz nicht berücksichtigt werden können
* spezielle Hardware, die Anpassungen nötig macht
## Windows
Für Windows gibt es momentan drei Neo-Treiber. Infos zur [Einrichtung der Treiber](/Benutzerhandbuch/Installation#windows) gibt es auf einer Extraseite.
### kbdneo
kbdneo ist ein richtiger Treiber, der direkt die Tastendrucke der Tastatur empfängt. Leider kann er bislang noch nicht alle Funktionen der Referenz umsetzen. Diese können mit einem AHK-Skript nachgerüstet werden.
Für die Entwicklung des kbdneo-Treibers wird momentan das [Windows Driver Kit](http://www.microsoft.com/whdc/devtools/wdk/wdkpkg.mspx) verwendet.
Für die M3-Ebene wird ein neu geschaffener Modifier verwendet, für die M4-Ebene der japanische Kana-Modifier.
Im »WinDDK-Programmordner«\src\input\layout\ gibt es einige Beispiele.
Ein guter Texteditor reicht für die Bearbeitung der Dateien.
Kompiliert wird der Treiber durch Eingabe von ‚build‘ im Ordner der Quellcodedateien in dem ‚Build Environment‘.
(Für weitere Infos: Florian Janßen fragen.)
### Neovars
Neovars ist in der Skriptsprache [Autohotkey](https://www.autohotkey.com/) geschrieben. Dies ermöglicht die komplette Umsetzung der Referenz (und noch mehr). Die Skripte sowie die fertig kompilierte exe-Dateien lassen sich ohne Administratorrechte ausführen. Allerdings kann mit dieser Herangehensweise kein echtes Tastaturlayout realisiert werden, da die Tastendrucke lediglich abgefangen und umgewandelt werden, was zu ganz eigenen Problemen führt.
Der aktuelle AHK-Treiber ist Neovars, der auch aktiv weiterentwickelt wird. Es gibt ausführliche Hinweise für [Nutzer](/Benutzerhandbuch/neovars) wie [Entwickler](Treiber-KnowHow-NeoVars.md).
Die letzte Version vor der Neuimplementierung steht [im SVN](../src/branch/master/windows/ahk-auslaufend) für Entwickler zu Testzwecken zur Verfügung.
Dieser Treiber sollte aber nicht mehr verwendet werden.
### neo2-llkh
neo2-llkh ist ein sehr schlanker Treiber, der weder Autohotkey noch Admin-Rechte benötigt. Er unterstützt alle sechs Ebenen und bietet ein paar Funktionen, die in den anderen Treibern nicht verfügbar sind: Zum Beispiel können die linke Alt- und Strg-Taste vertauscht werden, CapsLock kann als zusätzliche Escape-Taste konfiguriert werden oder man kann einstellen, dass für Shortcuts das QWERTZ-Layout gelten soll.
Dieser Treiber ist der jüngste in der Liste und deshalb auch nicht so gut erprobt wie die anderen.
### Weitere Programme
Es gibt noch einige andere Programme, mit denen ebenfalls die Änderung des Windows-Tastaturlayouts möglich ist. Sie sind jedoch den oben beschriebenen aus verschiedenen Gründen unterlegen:
* MSKLC: [MSKLC 1.4](http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx) ist für Windows, kostenlos und gut, wenn man „nur“ 4 Ebenen hat. Es ist in der Hilfedatei hervorragend beschrieben. Man erstellt wie mit dem DDK (kbdneo) ein „echtes“ Tastaturlayout. Wurde für Neo1 verwendet, inzwischen jedoch vom [DDK](TreiberKnowHow#kbdneo) (siehe dort) abgelöst.
* KbdEdit: Ein vielversprechendes Programm zur Erstellung von Tastaturlayouts. Doch da nicht nur die Entwicklerversion Geld kostet, sondern auch das fertige Layout nur mit dem kostenpflichtigen Player verwendet werden kann, kommt es für Neo leider nicht in Frage.
* [KeyTweak](http://webpages.charter.net/krumsick/): Greift direkt in die Registry ein und ermöglicht so nicht das Umschalten zwischen Neo und qwertz. Kann aber z.B. CapsLock dauerhaft zu AltGr ändern.
## Linux
Hier ist [die Einrichtung von Neo unter Linux](/Benutzerhandbuch/Linux) beschrieben.
Die Linux-„Treiber“ sind reine Textdateien, lassen sich also mit dem Editor bearbeiten.
Interessant sind also vor allem Probleme, die beim Bearbeiten aufgetaucht sind.
Falls Linux mit einer **Mac-Tastatur** betrieben werden soll (adb, z.B. Installation auf einem iBook), gibt es wohl Probleme, CapsLock umzubelegen. Dazu ist ein Patch (macintosh-mangle-caps-lock-events-on-adb-keyboards.patch) notwendig, der einen Eintrag /proc/sys/dev/adbhid/mangle_caps_lock_events hinzufügt (siehe dazu [hier](http://hans.fugal.net/yodl/blosxom.cgi/mac/caps.html) und [hier](http://lists.debian.org/debian-powerpc/2005/12/msg00214.html)).
Dieser [Patch](http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/) befand sich auch eine Weile im ­mm Zweig des Kernels, ist aber inzwischen wieder rausgeflogen.
### Xmodmap
Zur Info die allgemeine [Man-Page](http://www.xfree86.org/4.0.1/xmodmap.1.html) zur Xmodmap, sowie eine deutsche Seite aus dem [Ubuntu-Wiki](http://wiki.ubuntuusers.de/Xmodmap).
### Xkbmap
Vier Ressourcen, die beim Entwickeln von xkb helfen können:
* [„XKB configuration guide“](http://www.xfree86.org/current/XKB-Config.html), hier wird die Einrichtung von XFree86 XKB beschrieben, das Manual richtet sich vor allem an Anwender.
* [„How to further enhance XKB configuration“](http://www.xfree86.org/current/XKB-Enhancing.html), hier wird vor allem für Entwickler die Erstellung von neuen (internationalisierten) Tastaturlayouts beschrieben. Für ein einfaches Layout ohne komplizierte Modifier-Verhalten sollte diese Anleitung ausreichen.
* [„An Unreliable Guide to XKB Configuration“](http://www.charvolant.org/~doug/xkb/html/index.html), vermutlich nicht ganz so unverlässlich, wie es sich selbst schimpft :-)
* [X Keyboard Extension von Ivan Pascal](http://pascal.tsu.ru/en/xkb/), auch wenn Sprache und Rechtschreibung dort sehr zu wünschen übrig lassen, bekommt man dort einen weitaus tieferen Einblick als in all den anderen Anleitungen.
Es wurde viel diskutiert, wie der Name des Layouts in den Treibern und im X-Server sein soll.
Für die Aufnahme in den offiziellen X-Server muss das Layout »de_neo« heißen, im X-Server wird also „neo“ als Option des Layouts „de“ ausgewählt.
### Compose
Es gibt eine eigene Seite zum [Einrichten der Neo-Composedatei](/Benutzerhandbuch/Tote-Tasten-und-Compose#Linux).
## Mac OS
Allgemeine Infos gibt es unter [Einrichtung von Neo auf einem Mac](/Benutzerhandbuch/macOS).
Eventuelle Alternativen zum [neo.keylayout](#neokeylayout):
* Wird ein X-Server installiert, läßt sich auch eine Xmodmap laden. Allerdings benötigt man eine speziell angepaßte Version der Xmodmap, und sie wirkt sich nur auf Programme aus, die unter X11 laufen. Zu finden ist diese angepaßte Version im Anhang von Pascals Mail auf der Mailingliste: [neo_mac.xmodmap](http://lists.neo-layout.org/pipermail/diskussion/2009-June/013158.html) (ab »nächster Teil«). Allerdings funktionieren dabei nicht die Ebenen 4 und 6 (siehe entsprechende [Diskussion](http://lists.neo-layout.org/pipermail/diskussion/2009-June/013159.html)).
* Vielleicht wird es irgendwann auch eine Dotnet-Implementierung für AHK geben, dann könnte man auch den AHK-Treiber am Mac benutzen ([die Meldung dazu](http://www.autohotkey.com/forum/topic34421-30.html)).
### neo.keylayout
Es ist nicht schwierig, die Datei [neo.keylayout](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/mac_osx/neo.keylayout) zu bearbeiten, da Apple sich hier für das mensch- wie maschinenlesbare XML-Format entschieden hat.
* **code** gibt die Nummer der Taste an, durch deren Drücken man das dahinter geschriebene Zeichen erhält.
* Nach Tasten mit **action** wartet der Computer auf eine zweite Eingabe.
* Welches Zeichen man durch die Kombinationen erhält, kann man am Ende der Datei unter **actions** definieren.
* Weitere Infos gibt’s in einer [Technical Note](http://developer.apple.com/technotes/tn2002/tn2056.html).
[Ukelele](http://scripts.sil.org/ukelele) ist ein sehr guter Keyboardlayouteditor für Mac, sowohl was Handhabung als auch Dokumentation angeht. Dies ist komfortabler, als die XML-Datei mit einem normalen Texteditor zu bearbeiten.
### Modifier
Neo verwendet die „Alt-/Optionstaste“ als M3, also ist Ebene 3 mit „Alt/Option“, Ebene 5 mit „Alt/Option“ + „Shift“ erreichbar. In den Systemeinstellungen verbirgt sich unter „Tastatur“ das „Sondertasten-Menü“ (engl. bei den System Preferences „Keyboard“ → „Modifier“). Dort können CapsLock, Ctrl, Alt/Option/Wahltaste und Apfel/Befehlstaste neu belegt werden. Es wird empfohlen, dort für CapsLock die Funtkion „Alt/Option“ einzustellen, um den linken Mod3 am gewohnten Platz vorzufinden.
Die Tasten # und < lassen sich in den Systemeinstellungen nicht als Modifier einstellen. Das ist jedoch über das Programm [KeyRemap4MacBook](http://pqrs.org/macosx/keyremap4macbook/index.html) möglich in Kombination mit der für Neo angepassten [http://neo-layout.org/private.xml](http://wiki.neo-layout.org/browser/mac_osx/private.xml?format=raw). Diese xml-Datei lässt sich auch noch weiter bearbeiten und an individuelle Bedürfnisse anpassen.
#### M4 und rechte CMD-Taste
Wer eine Apple-Tastatur besitzt, bei der rechts neben der Leertaste eine weitere CMD-Taste existiert, kann über folgende Lösung diese Taste als weitere CMD- und nicht als M4-Taste nutzen (M4 wird dann über die rechte ALT-Taste bedient). Dann können Shortcuts mit Command-Key auch per Zehnfingerstystem und ohne Klammergriff bedient werden können.
Hierzu einfach die [KeyRemap4MacBook XML Datei](https://git.neo-layout.org/neo/neo-layout/raw/branch/master/mac_osx/private.xml) anpassen:
```
<!-- Mod 4 Modifiers and Mod 4 Locks -->
<autogen>--KeyOverlaidModifier-- KeyCode::OPTION_R, ModifierFlag::EXTRA1,
KeyCode::VK_MODIFIER_EXTRA1, KeyCode::VK_LOCK_EXTRA1</autogen>
<autogen>--KeyToKey-- KeyCode::OPTION_R, KeyCode::VK_MODIFIER_EXTRA1</autogen>
```
Ein umbinden der rechten Option auf rechte Command ist danach auch nicht mehr nötig in KeyRemap4MacBook.
## Compose
Zur Aufnahme oder Änderung von [Compose](Compose)-Kombinationen muss die Datei SVN/Compose/Compose.neo um die entsprechenden Einträge ergänzt werden. Diese UTF-8-Datei ist im Standard-Compose-Format für Linux geschrieben. Die Compose-Funktion unter Windows (beispielsweise die des NeoVars) wird hieraus automatisch generiert.
### Beschreibung einer typischen Kombination
Die Coko ♫|C=ℂ würde beispielsweise durch die folgende Zeile umgesetzt werden:
> `<Multi_key> <bar> <C> : "ℂ" U02102 # DOUBLE-STRUCK CAPITAL C`
Dabei steht…
* `<Multi_key>` für ♫,
* `<bar>` für | (symbolischer Linux-Name in ASCII),
* `<C>` für C (auch ASCII ;-)),
* `"ℂ"` für die Ausgabe (diesmal als echtes, d.h. UTF-8-kodiertes Unicode-Zeichen zwischen den Anführungszeichen),
* und alles hiernach ist ein Kommentar, und zwar
* der eindeutige Unicode-Codepointder Ausgabe: ` U02102`,
* und die offizielle Unicode-Beschreibung dieses Zeichens: `# DOUBLE-STRUCK CAPITAL C`.
Die offiziellen Beschreibungen und Codepoints können in der [Unicode-Referenz](http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt) nachgeschlagen werden. Bei umfangreichen systematischen Ergänzen ist es sinnvoll, die Cokos zur Arbeitsersparung mit einer Tabellenverarbeitung zu erstellen, oder ein entsprechendes Skript zu erstellen.
### Überschreiben vorhandener Cokos
Falls einmal bereits vorhandene Kombinationen bewusst umdefiniert werden sollten, ist es wichtig, dass die Compose.neo am Ende der Compose eingefügt wird, da bei mehrfach vorhandenen Kombinationen stets die letzte gültig ist.
### Sonstige Hinweise
* Bei Kombinationen mit Zahlen die KP_-Zahlen nicht vergessen!
* Wieso setzt man sowohl <underbar\> als auch <underscore\>?
* Einige Programme (z.B. gucharmap) reagieren auf beide unterschiedlich, bei Neo wird aber nur underscore benutzt. Da es in der Standard-Compose stets beide Definitionen gibt, wurde das bislang so beibehalten, auch wenn die underbar-Definitionen höchstwahrscheinlich nie gebraucht werden werden.
* Funktionieren auch Angaben der Form <Multi_key\> <U1234\> <∀>?
* Unter Linux definitiv nicht. Darum sollten wir bei der bisherigen Lösung bleiben, die vielleicht für Entwickler umständlicher ist, aber dafür problemlos funktioniert.

@ -1,16 +1,16 @@
# Presseberichte
Im Rahmen der [Werbung und Vermarktung von Neo](Vermarktung.md) sind bereits mehrere Presseberichte entstanden – es dürfen aber gerne noch mehr werden!
<!-- Hier werden verschiedene Presseberichte aufgezählt, deren Kriterien zur Listung jedoch nicht hinreichend definiert sind. Ich werde in Kürze eine Neufassung formulieren und dabei Kriterien aufstellen, die zumindest auf Wiki-Ebene diskutiert werden sollten, wenn nicht auf der Ebene der ML (für einen Artikel lohnt sich solch eine Diskussion m.E. nach nicht).
Kriterien sollen nach meiner Vorstellung vor allem Relevanz (überregionale Angebote, bedeutende (technische) Webseiten wären hier zum Beispiel Attribute) und Qualität/Umfang (sodass gute Schilderungen nicht verloren gehen) sein. Für letzteres dürfte man also meiner Ansicht durchaus auch Berichte aufnehmen, die die Relevanzkriterien nicht erfüllen.
-->
## Bereits erschienen
In chronologischer Reihenfolge:
- Phillip H. Poll: *Neu verteilt. Ergonomischeres Tastaturlayout mit Neo*, in: [LinuxUser](http://www.linux-user.de/) 05/2009 ([der Artikel ist auch online abrufbar](https://www.linux-community.de/ausgaben/linuxuser/2009/05/ergonomischeres-tastaturlayout-mit-neo/)).
- Daniel Knittl-Frank: *Neo – Ergonomisch optimiert*, in: [Yalm-Magazine](http://www.freiesmagazin.de/yalm) 07/2009 ([direkter Link zur PDF](http://www.freiesmagazin.de/ftp/yalm/2009/yalm.2009.07.pdf)).
- Frank Stähr: *Neo – ein ergonomisches Tastaturlayout*, in: [freiesMagazin](http://www.freiesmagazin.de), Mai 2010 ([Link](http://www.freiesmagazin.de/mobil/freiesMagazin-2010-05-bilder.html#10_05_neo2))
- Arno Trautmann: *Neo & XƎLaTeX. Ergonomie und Zeichenvielfalt*, in: [Die TeXnische Komödie](https://www.dante.de/dtk/), 2/2010 ([Link](http://archiv.dante.de/DTK/PDF/komoedie_2010_2.pdf)), S. 48
- Es gab am 4. November 2013 einen Radiobericht auf DRadioWissen: [QWERTZ hat keinen WERT](http://www.dradiowissen.de/computertastatur-qwertz-hat-keinen-wert.33.de.html?dram:article_id=267526); verfügbar im Podcast-Archiv: [podcast.de](http://www.podcast.de/episode/230092610/Computertastatur+-+QWERTZ+hat+keinen+WERT/)
- Mirko Dölle: *Handgeschnitzte Android-Tastatur*, in: [Zeitschrift c’t](https://www.heise.de/ct/), 30. Oktober 2015, [Link zur Vorschau des Artikels](https://www.heise.de/ct/ausgabe/2015-24-Eigene-Tastatur-Layouts-fuer-Multiling-O-Keyboard-entwerfen-2852700.html)
# Presseberichte
Im Rahmen der [Werbung und Vermarktung von Neo](Vermarktung.md) sind bereits mehrere Presseberichte entstanden – es dürfen aber gerne noch mehr werden!
<!-- Hier werden verschiedene Presseberichte aufgezählt, deren Kriterien zur Listung jedoch nicht hinreichend definiert sind. Ich werde in Kürze eine Neufassung formulieren und dabei Kriterien aufstellen, die zumindest auf Wiki-Ebene diskutiert werden sollten, wenn nicht auf der Ebene der ML (für einen Artikel lohnt sich solch eine Diskussion m.E. nach nicht).
Kriterien sollen nach meiner Vorstellung vor allem Relevanz (überregionale Angebote, bedeutende (technische) Webseiten wären hier zum Beispiel Attribute) und Qualität/Umfang (sodass gute Schilderungen nicht verloren gehen) sein. Für letzteres dürfte man also meiner Ansicht durchaus auch Berichte aufnehmen, die die Relevanzkriterien nicht erfüllen.
-->
## Bereits erschienen
In chronologischer Reihenfolge:
- Phillip H. Poll: *Neu verteilt. Ergonomischeres Tastaturlayout mit Neo*, in: [LinuxUser](http://www.linux-user.de/) 05/2009 ([der Artikel ist auch online abrufbar](https://www.linux-community.de/ausgaben/linuxuser/2009/05/ergonomischeres-tastaturlayout-mit-neo/)).
- Daniel Knittl-Frank: *Neo – Ergonomisch optimiert*, in: [Yalm-Magazine](http://www.freiesmagazin.de/yalm) 07/2009 ([direkter Link zur PDF](http://www.freiesmagazin.de/ftp/yalm/2009/yalm.2009.07.pdf)).
- Frank Stähr: *Neo – ein ergonomisches Tastaturlayout*, in: [freiesMagazin](http://www.freiesmagazin.de), Mai 2010 ([Link](http://www.freiesmagazin.de/mobil/freiesMagazin-2010-05-bilder.html#10_05_neo2))
- Arno Trautmann: *Neo & XƎLaTeX. Ergonomie und Zeichenvielfalt*, in: [Die TeXnische Komödie](https://www.dante.de/dtk/), 2/2010 ([Link](http://archiv.dante.de/DTK/PDF/komoedie_2010_2.pdf)), S. 48
- Es gab am 4. November 2013 einen Radiobericht auf DRadioWissen: [QWERTZ hat keinen WERT](http://www.dradiowissen.de/computertastatur-qwertz-hat-keinen-wert.33.de.html?dram:article_id=267526); verfügbar im Podcast-Archiv: [podcast.de](http://www.podcast.de/episode/230092610/Computertastatur+-+QWERTZ+hat+keinen+WERT/)
- Mirko Dölle: *Handgeschnitzte Android-Tastatur*, in: [Zeitschrift c’t](https://www.heise.de/ct/), 30. Oktober 2015, [Link zur Vorschau des Artikels](https://www.heise.de/ct/ausgabe/2015-24-Eigene-Tastatur-Layouts-fuer-Multiling-O-Keyboard-entwerfen-2852700.html)

Loading…
Cancel
Save