Navigation in diesen ACSpro-Seiten
Hilfe zur Navigation
Einführung in ACSpro
Einführung
ACS-Beispiele
Beispiele
Rechtliches
Rechtliches
ACSpro ist Shareware
Shareware-Bed.
Die ACSpro-Mailing-Listen
Mailing-Listen
Kontakt-Aufnahme
Kontakt
Download von ACSpro
Download
Installation von ACSpro
Installation
History & ToDo-Liste
History, ToDo-Liste
Der Atari-WebRing
ATARI-Webring
Home Einführung in ACSpro GNU-C NKCC-Tastencodes
   ACSpro
 Einführung in ACSpro

NKCC — Der "Normalized Key-Code Converter"

ACSpro verwendet die länderunabhängigen Tastencodes, die mit den etablierten NKCC-Routinen von Harald Siegmund in der Überarbeitung von Christian Felsch erzeugt werden — das frühere Flag AO_SCANCODE ist also nichtig und wird auch nicht mehr unterstützt!

Harald Siegmund schreibt dazu in seiner Dokumentation zu NKCC

NKCC ist ein NME-Produkt (Not macht erfinderisch), das bei dem verzweifelten Versuch entstanden ist, eine flexible und länderunabhängige Tastenmakroverwaltung zu schreiben. Vorgabe war, möglichst alle Kombinationen von Shift (links/rechts), Control und Alternate mit einer anderen Taste erfassen zu können, unabhängig davon, ob die Applikation auf einem deutschen, saudi-arabischen, isländischen oder Wasauchimmer-TOS mit entsprechender Tastenbelegung läuft.

Kein Problem? Von wegen! Wenn man sich die von TOS/GEM zurückgelieferten Tastencodes anschaut, kann einem das kalte Grauen kommen:

a) Alternate plus eine Buchstabentaste liefert lediglich den Scancode des Taste zurück, der von der Belegung der Tastatur (Landessprache!) abhängt. Als ASCII-Code meldet das OS immer eine 0.
b) Bei einigen Tasten variiert der Scancode abhängig davon, welche Zusatztasten gedrückt sind! Ein Beispiel: auf der deutschen Tastatur hat die Taste "1 !" den Scancode 2. Wird zusätzlich Alternate gedrückt, ändert sich der Scancode zu $78 und als ASCII-Code erhältman eine Null.
c) Der Cursortastenblock ist eine einzige Katastrophe. Hier kann man nur darauf hoffen, daß auf allen Tastaturen die gleichen Scancodes geliefert werden. Bei einigen Tasten — nicht allen — ändert sich der Scancode, wenn zusätzlich Control gedrückt wird! Der ASCII-Code hängt vom Zustand der Zusatztasten (Shift, Control) sowie der aktuellen Mondphase ab und spottet jeder Regel.
d) Einige Tastenkombinationen lassen sich so ohne weiteres gar nicht auseinanderhalten, da sie den gleichen Tastencode produzieren. So sind in den meisten Fällen die Tastencodes für Alternate+irgendeine Taste identisch mit Alternate+Shift+irgendeine Taste.

Die Lösung für all diese Probleme heißt NKCC. Ok, nicht ganz so dramatisch: Eine Lösung für all diese Probleme heißt NKCC. ;-)

Die Hauptaufgabe von NKCC liegt in der Konvertierung von Tastencodes in ein sinnvolles, vom Scancode und damit von der Landessprache unabhängiges Format, die NKCC-Tastencodes. Mit NKCC können praktisch alle Tastenkombinationen unterschieden werden. Ausnahmen bilden lediglich jene Kombinationen, die zu Sonderzwecken im Betriebssystem eingesetzt werden (zum Bleistift das altbekannte Alternate+Help, das die Hardcopy-Routine des Systems anwirft).

Hinweis: Eine ausführliche Dokumentation zu NKCC und den NKCC-Tastencodes befindet sich in der mit ACSpro mitgelieferten Datei 'NKCC.DOC' — einige Anmerkungen und technische Details hierzu:

  • ACSpro setzt die GEM-Library von NKCC nicht ein, sondern übersetzt 'nur' die normalen Codes der Event-Schleife in die NKCC-Codes; ein Dead-Key-Handling, ButtonEventHandler etc. ist also mit NKCC nicht möglich. Ab Version V3.0.0 von ACSpro ist daher ein Dead-Key-Handling in ACSpro selbst realisiert worden.
  • Leider stehen die Routinen aus der NKCC-Library aufgrund der Längenbeschränkung auf acht Zeichen nicht den Pascal-Anwendern zur Verfügung!

Hinweis: Die von ACSpro verwendete Version der NKCC-Bibliotheken steht zusammen mit ACSpro zur Verfügung. Da die von ACSpro benötigten NKCC-Routinen bereits in die ACSpro-Bibliothek gelinkt wurden, wird die NKCC-Bibliothek selbst nicht mehr benötigt.



Copyright © Martin Elsässer (E-Mailadressen)
Letzte Aktualisierung am 25. März 2008
Home Einführung in ACSpro GNU-C NKCC-Tastencodes