Visual FoxPro-Tastencodes (Aufbau der API-Bibliothek)
Die meisten Tasten der Tastatur behalten ihren Tastenwert bei, auch wenn sie mit unterschiedlichen Zusatztasten (UMSCHALTTASTE, STRG und ALT) kombiniert werden. Allen regulären Tasten der Tastatur (alphabetische Tasten und Sonderzeichen) ist ein Tastencode entsprechend ihrem ASCII-Wert zugeordnet.
Der Tastencode und die Werte der Zusatztasten werden in der EventRec-Struktur zurückgegeben. Der Tastencode kann in EventRec.message und der Wert der Zusatztaste in EventRec.modifiers gefunden werden.
Visual FoxPro interpretiert einige Tasten in Abhängigkeit von der Zusatztaste so, als hätten sie einen anderen Wert. Der Tastenkombination UMSCHALT+F10 entsprechen z. B. die folgenden Felder in EventRec:
- EventRec.message = 15D (Hex)
- EventRec.modifiers = 1000 (Hex)
In ähnlicher Weise sind der Tastenkombination STRG+F10 folgende EventRec-Werte zugeordnet:
- EventRec.message = 167 (Hex)
- EventRec.modifiers = 2000 (Hex)
Wenn eine Taste mit mehr als einer Zusatztaste kombiniert wird, werden die Werte der Zusatztasten addiert. Wenn Sie z. B. STRG+UMSCHALT+F10 drücken, werden die folgenden Werte zurückgegeben:
- EventRec.message = 167 (Hex)
- EventRec.modifiers = 3000 (Hex)
Der Wert in EventRec.modifiers beträgt im obigen Beispiel 0x3000, weil sowohl die Zusatztaste STRG als auch die UMSCHALTTASTE in die Tastenkombination einbezogen wurde. Daher wurde der Wert der UMSCHALTTASTE (0x1000) zum Wert der Zusatztaste STRG (0x2000) addiert, woraus sich der Wert 0x3000 ergibt.
Anmerkung Bei der Interpretation von Tasten (insbesondere Zusatztasten) durch Visual FoxPro handelt es sich um ein inhärentes Merkmal von Visual FoxPro. Andere Programme interpretieren Tasten möglicherweise anders. Wenn eine Taste in Kombination mit einer oder mehreren Zusatztasten (UMSCHALTTASTE, STRG und ALT) gedrückt wird, repräsentiert das höherwertige Nibble (die oberen 4 Bits) die verwendete Zusatztaste.
Die folgende Tabelle zeigt, dass die F8-Taste unterschiedliche Tastencodes aufweist, je nachdem, welche Zusatztaste verwendet wird.
Gedrückte Taste | Zusatztaste | Tastenwert von F8 |
---|---|---|
F8 | Keine (None) | \x142 |
UMSCHALTTASTE+F8 | UMSCHALTTASTE | \x15B |
STRG+F8 | STRG | \x165 |
ALT+F8 | ALT | \x16F |
Macintosh-Tastatur | MS-DOS/Windows-Entsprechung |
---|---|
STRG | |
STRG+WAHLTASTE | ALT |
Jede Sondertaste, die mit Zusatztasten kombiniert werden kann, besitzt in Kombination mit jeder der Zusatztasten einen eindeutigen Wert. Wenn eine Sondertaste mit mehreren Zusatztasten kombiniert wird, ergibt sich für die Taste ein eindeutiger Wert, bezogen auf eine der Zusatztasten, und zwar entsprechend der folgenden Regeln:
- Prüfen Sie zunächst, ob die verwendete Tastenkombination ALT enthält; in diesem Fall wird der Haupttaste ihr ALT-Tastenwert zugeordnet.
- Wenn die Tastenkombination nicht ALT enthält, sollten Sie überprüfen, ob die Zusatztaste STRG verwendet wurde; in diesem Fall wird der Haupttaste ihr STRG-Tastenwert zugeordnet.
- Wenn die Zusatztaste ALT oder STRG nicht verwendet wurde, sollten Sie überprüfen, ob die UMSCHALTTASTE verwendet wurde; in diesem Fall wird der Haupttaste ihr UMSCHALTTASTEN-Wert zugeordnet.
- Wenn keine Zusatztaste verwendet wurde, wird der Haupttaste kein auf Zusatztasten beruhender Tastenwert zugeordnet.
Spezielle Tastencodes
In der folgenden Tabelle werden die Tastenwerte aufgelistet, die Visual FoxPro besonderen Tasten auf der Tastatur zuordnet:
Taste | Tastencode | Zusatztaste |
---|---|---|
LINKE MAUSTASTE | 100 | Keine (None) |
F1 | 13B | Keine (None) |
F2 | 13C | Keine (None) |
F3 | 13D | Keine (None) |
F4 | 13E | Keine (None) |
F5 | 13F | Keine (None) |
F6 | 140 | Keine (None) |
F7 | 141 | Keine (None) |
F8 | 142 | Keine (None) |
F9 | 143 | Keine (None) |
F10 | 144 | Keine (None) |
POS1 | 147 | Keine (None) |
NACH-OBEN-TASTE | 148 | Keine (None) |
BILD-AUF | 149 | Keine (None) |
NACH-LINKS-TASTE | 14B | Keine (None) |
NACH-RECHTS-TASTE | 14D | Keine (None) |
ENDE | 14F | Keine (None) |
NACH-UNTEN-TASTE | 150 | Keine (None) |
BILD-AB | 151 | Keine (None) |
EINFG | 152 | Keine (None) |
ENTF | 153 | Keine (None) |
F11 | 185 | Keine (None) |
F12 | 186 | Keine (None) |
BACKTAB | 10F | shiftKey |
UMSCHALTTASTE+F1 | 154 | shiftKey |
UMSCHALTTASTE+F2 | 155 | shiftKey |
UMSCHALTTASTE+F3 | 156 | shiftKey |
UMSCHALTTASTE+F8 | 157 | shiftKey |
UMSCHALTTASTE+F5 | 158 | shiftKey |
UMSCHALTTASTE+F6 | 159 | shiftKey |
UMSCHALT+F7 | 15A | shiftKey |
UMSCHALTTASTE+F8 | 15B | shiftKey |
UMSCHALTTASTE+F9 | 15C | shiftKey |
UMSCHALTTASTE+F10 | 15D | shiftKey |
UMSCHALTTASTE+F11 | 187 | shiftKey |
UMSCHALTTASTE+F12 | 188 | shiftKey |
STRG+A | 001 | ctrlKey |
STRG+B | 002 | ctrlKey |
STRG+C | 003 | ctrlKey |
STRG+D | 004 | ctrlKey |
STRG+E | 005 | ctrlKey |
STRG+F | 006 | ctrlKey |
STRG+G | 007 | ctrlKey |
STRG+H | 008 | ctrlKey |
STRG+I | 009 | ctrlKey |
STRG+EINGABETASTE | 00A | ctrlKey |
STRG+J | 00A | ctrlKey |
STRG+K | 00B | ctrlKey |
STRG+L | 00C | ctrlKey |
STRG+M | 00D | ctrlKey |
STRG+N | 00E | ctrlKey |
STRG+O | 00F | ctrlKey |
STRG+P | 010 | ctrlKey |
STRG+Q | 011 | ctrlKey |
STRG+R | 012 | ctrlKey |
STRG+S | 013 | ctrlKey |
STRG+T | 014 | ctrlKey |
STRG+U | 015 | ctrlKey |
STRG+V | 016 | ctrlKey |
STRG+W | 017 | ctrlKey |
STRG+X | 018 | ctrlKey |
STRG+Y | 019 | ctrlKey |
STRG+Z | 01A | ctrlKey |
STRG+LINKE KLAMMER | 01B | ctrlKey |
STRG+UMGEKEHRTER SCHRÄGSTRICH | 01C | ctrlKey |
STRG+RECHTE KLAMMER | 01D | ctrlKey |
STRG+CARETZEICHEN | 01E | ctrlKey+shiftKey |
STRG+BINDESTRICH | 01F | ctrlKey |
STRG+LEERTASTE | 020 | ctrlKey |
STRG+F1 | 15E | ctrlKey |
STRG+F2 | 15F | ctrlKey |
STRG+F3 | 160 | ctrlKey |
STRG+F4 | 161 | ctrlKey |
STRG+F5 | 162 | ctrlKey |
STRG+F6 | 163 | ctrlKey |
STRG+F7 | 164 | ctrlKey |
STRG+F8 | 165 | ctrlKey |
STRG+F9 | 166 | ctrlKey |
STRG+F10 | 167 | ctrlKey |
STRG+NACH-LINKS-TASTE | 173 | ctrlKey |
STRG+NACH-RECHTS-TASTE | 174 | ctrlKey |
STRG+ENDE | 175 | ctrlKey |
STRG+BILD-AB | 176 | ctrlKey |
STRG+POS1 | 177 | ctrlKey |
STRG+BILD-AUF | 184 | ctrlKey |
STRG+F11 | 189 | ctrlKey |
STRG+F12 | 18A | ctrlKey |
STRG+NACH-OBEN-TASTE | 18D | ctrlKey |
STRG+NACH-UNTEN-TASTE | 191 | ctrlKey |
STRG+EINFG | 192 | ctrlKey |
STRG+ENTF | 193 | ctrlKey |
STRG+TAB | 194 | ctrlKey |
ALT+Q | 110 | altKey |
ALT+W | 111 | altKey |
ALT+E | 112 | altKey |
ALT+R | 113 | altKey |
ALT+T | 114 | altKey |
ALT+Y | 115 | altKey |
ALT+U | 116 | altKey |
ALT+I | 117 | altKey |
ALT+O | 118 | altKey |
ALT+P | 119 | altKey |
ALT+A | 11E | altKey |
ALT+S | 11F | altKey |
ALT+D | 120 | altKey |
ALT+F | 121 | altKey |
ALT+G | 122 | altKey |
ALT+H | 123 | altKey |
ALT+J | 124 | altKey |
ALT+K | 125 | altKey |
ALT+L | 126 | altKey |
ALT+Z | 12C | altKey |
ALT+X | 12D | altKey |
ALT+C | 12E | altKey |
ALT+V | 12F | altKey |
ALT+B | 130 | altKey |
ALT+N | 131 | altKey |
ALT+M | 132 | altKey |
ALT+F1 | 168 | altKey |
ALT+F2 | 169 | altKey |
ALT+F3 | 16A | altKey |
ALT+F4 | 16B | altKey |
ALT+F5 | 16C | altKey |
ALT+F6 | 16D | altKey |
ALT+F7 | 16E | altKey |
ALT+F8 | 16F | altKey |
ALT+F9 | 170 | altKey |
ALT+F10 | 171 | altKey |
ALT+1 | 178 | altKey |
ALT+2 | 179 | altKey |
ALT+3 | 17A | altKey |
ALT+4 | 17B | altKey |
ALT+5 | 17C | altKey |
ALT+6 | 17D | altKey |
ALT+7 | 17E | altKey |
ALT+8 | 17F | altKey |
ALT+9 | 180 | altKey |
ALT+0 | 181 | altKey |
ALT+F11 | 18B | altKey |
ALT+F12 | 18C | altKey |
ALT+POS1 | 197 | altKey |
ALT+NACH-OBEN-TASTE | 198 | altKey |
ALT+BILD-AUF | 199 | altKey |
ALT+NACH-LINKS-TASTE | 19B | altKey |
ALT+NACH-RECHTS-TASTE | 19D | altKey |
ALT+ENDE | 19F | altKey |
ALT+NACH-UNTEN-TASTE | 1A0 | altKey |
ALT+BILD-AB | 1A1 | altKey |
ALT+EINFG | 1A2 | altKey |
ALT+ENTF | 1A3 | altKey |
Beispiel
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
switch(ev->what)
{
case keyDownEvent: /* Check the keyDownEvent */
if (ev->modifiers & shiftCodeMask) /* A modifier was pressed. */
{
if (ev->modifiers & altKey) /* Check for the ALT Key */
_PutStr("ALT Key Code should be used.\n");
else
if (ev->modifiers & ctrlKey) /* CTRL Key */
_PutStr("CTRL Key Code should be used.\n");
else
if (ev->modifiers & shiftKey) /* SHIFT Key */
_PutStr("SHIFT Key Code should be used.\n");
}
else
_PutStr("Regular Key Code should be used.\n");
return NO; /* Let Visual FoxPro have Key also */
break;
default:
return NO;
}
}
Anmerkung shiftCodeMask, altKey, ctrlKey und shiftKey werden in PRO_EXT.H und PRO_EXT.INC sämtlich wie folgt definiert:
- #define shiftCodeMask 0xf000
- #define shiftKey 0x1000
- #define ctrlKey 0x2000
- #define altKey 0x4000
Siehe auch
Routinen der API-Bibliothek von A-Z | Routinen nach Kategorien der API-Bibliothek | _PutStr( ), API-Bibliotheksroutine | _ASCIICOLS-Systemvariable | _ASCIIROWS-Systemvariable | Visual FoxPro-Systemereignisse (Aufbau der API-Bibliothek) | KeyPress-Ereignis