Andreas K. Foerster schrieb:
On Mon, Mar 24, 2003 at 10:06:02AM +0100, Frank Heckenbach wrote:
ich habe ein Problem mit ReadKey aus der CRT Unit unter Windows.
Unter Linux liefert es immer die gewünschten Werte, unter Windows bekomme ich aber ganz andere Werte wenn NumLock aktiviert ist. Also das betrifft nicht nur den Nummern-Block, sondern alle Tasten.
Beim Nummern-Block sollte es ja auch so sein. Welche Werte bekommst du denn sonst?
Also, wenn NumLock nicht aktiviert ist, kommen die erwarteten Werte. Wenn NumLock aber aktiviert ist, geben die Zahlen (egal welche) die Werte #0+#208 bis #0+#217 wieder und die Buchstaben #0+#218 bis #0+#243. Und zwar nicht nach Anordnung auf der Tastatur, sondern wirklich alphabetisch geordnet.
crt.inc:
ksExtra0 = #208; ...
Demnach wird NumLock offenbar als "Extra"-Taste interpretiert. Eigentlich sollte das ScrollLock sein (was PDCurses unter DJGPP anscheinend fälschlich als NumLock erkennt, daher wohl die Verwechslung). Probier mal Folgendes:
--- p/units/crtc.c.orig Wed Mar 26 09:13:17 2003 +++ p/units/crtc.c Wed Mar 26 23:24:04 2003 @@ -898,7 +898,7 @@ #ifdef XCURSES if (modifiers & PDC_KEY_MODIFIER_MOD4 ) state |= shExtra; if (modifiers & PDC_KEY_MODIFIER_MOD3 ) state = shAltGr; - #else + #elif !defined (_WIN32) if (modifiers & PDC_KEY_MODIFIER_NUMLOCK) state |= shExtra; #endif #endif
Frank