Caps Lock - Zustand
Moderator: Moderatoren
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Caps Lock - Zustand
Hallo Leute,
weisst jemand, wie ich den Zustand von Caps Lock abfragen kann?
Irgendwie finde ich garnichts. Ich habe schon mit AppKeyState versucht. Das bringt aber nichts, da es nur den Zusand der Taste (gedrückt oder nicht) abfragt.
weisst jemand, wie ich den Zustand von Caps Lock abfragen kann?
Irgendwie finde ich garnichts. Ich habe schon mit AppKeyState versucht. Das bringt aber nichts, da es nur den Zusand der Taste (gedrückt oder nicht) abfragt.
Zuletzt geändert von andreas am Di, 18. Apr 2006 11:29, insgesamt 1-mal geändert.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Andreas,
das ist schon die richtige Funktion - nur wahrscheinlich die falsche Version
In der Hilfe der aktuellen 1.9 RC2_refresh (1.9.328) ist zu dieser Funktion nämlich noch einiges hinzugekommen:
Es gibt jetzt einen weiteren Parameter, mit dem definiert werden kann, ob nur (wie bisher) der Status abgefragt werden soll (Taste ist gedrückt/nicht gedrückt), oder ob der sogenannte "Toggle-Status" abgefragt werden soll (Taste ist dauerhaft gedrückt - wie bei Caps-Lock).
Viele Grüße,
Martin
das ist schon die richtige Funktion - nur wahrscheinlich die falsche Version
In der Hilfe der aktuellen 1.9 RC2_refresh (1.9.328) ist zu dieser Funktion nämlich noch einiges hinzugekommen:
Es gibt jetzt einen weiteren Parameter, mit dem definiert werden kann, ob nur (wie bisher) der Status abgefragt werden soll (Taste ist gedrückt/nicht gedrückt), oder ob der sogenannte "Toggle-Status" abgefragt werden soll (Taste ist dauerhaft gedrückt - wie bei Caps-Lock).
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Caps Lock - Zustand
#define APPKEY_TOGGLED 2 // Missing from AppEvent.chandreas hat geschrieben:Hallo Leute,
weisst jemand, wie ich den Zustand von Caps Lock abfragen kann?
Irgendwie finde ich garnichts. Ich habe schon mit AppKeyState versucht. Das bringt aber nichts, da es nur den Zusand der Taste (gedrückt oder nicht) abfragt.
#define VK_CAPITAL 0x14 // Caps Lock
#define VK_NUMLOCK 0x90 // Num Lock key
#define VK_SCROLL 0x91 // Scroll Lock
STATIC lCAPS := .F.
IF AppKeyState(VK_CAPITAL , .t.) == APPKEY_TOGGLED
IF lCAPS
ELSE
lCAPS := .T.
ENDIF
ELSE
IF lCAPS
lCAPS := .F.
ENDIF
ENDIF
FUNCTION IS_CAPS_ON()
RETURN lCAPS
gruss by OHR
Jimmy
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Hallo Jimmy,
ist das vielleicht für XBase++ 1.9, so wie es Martin schon gesagt hat?
Unter 1.82 hat der Befehl AppKeyState(VK_CAPITAL , .t.) keinen 2. Parameter.
Wenn das so ist, kann ich es erst mit der neuen Version testen, was ich auch machen werde. Jetzt möchte ich es noch nicht tun, da das Programm ständig benutzt wird.
Sonst möchte ich mich für die Hilfe bedanken. Über den 2. Parameter in der neuen Version habe ich nocht nicht gewusst.
ist das vielleicht für XBase++ 1.9, so wie es Martin schon gesagt hat?
Unter 1.82 hat der Befehl AppKeyState(VK_CAPITAL , .t.) keinen 2. Parameter.
Wenn das so ist, kann ich es erst mit der neuen Version testen, was ich auch machen werde. Jetzt möchte ich es noch nicht tun, da das Programm ständig benutzt wird.
Sonst möchte ich mich für die Hilfe bedanken. Über den 2. Parameter in der neuen Version habe ich nocht nicht gewusst.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Andreas,
ja - der zweite Parameter ist neu unter der 1.9.
Viele Grüße,
Martin
ja - der zweite Parameter ist neu unter der 1.9.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
nö, das gibt es schon seit der Xbase++ v1.5x.Martin Altmann hat geschrieben: ja - der zweite Parameter ist neu unter der 1.9.
*** snip ***
According to Volker Spahn from Alaska, this is an undocumented
parameter of AppKeyState().
Message "KbdStat() reports KST_NUMLOCK instead of KST_NUM"
from September / 26 / 2001 in alaska-software.news.bugreport
*** eof ***
in der v1.9x ist es endlich "documentiert" worden, (weil ich gemeckert
habe ? ), aber leider ist das "Demo" immer noch "nichtssagend"
gruss by OHR
Jimmy
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
ich habe jetzt ein weiteres Problem dabei.
Da das Drucken der Caps-Lock-Taste kein Ereignis (bzw. nur beim Ausschalten) auslösst, wird meine Ansicht nicht oder nur beim Drucken einer anderen Taste aktualisiert.
Gibt es eine andere Möglichkeit ausser :keyboard, auf das Drucken der Caps-Lock-Taste zu reagieren?
Da das Drucken der Caps-Lock-Taste kein Ereignis (bzw. nur beim Ausschalten) auslösst, wird meine Ansicht nicht oder nur beim Drucken einer anderen Taste aktualisiert.
Gibt es eine andere Möglichkeit ausser :keyboard, auf das Drucken der Caps-Lock-Taste zu reagieren?
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
die Frage ist wie du es einsetzten möchtest. Bei mit hab ich den v1.9xandreas hat geschrieben:ich habe jetzt ein weiteres Problem dabei.
Da das Drucken der Caps-Lock-Taste kein Ereignis (bzw. nur beim Ausschalten) auslösst, wird meine Ansicht nicht oder nur beim Drucken einer anderen Taste aktualisiert.
Gibt es eine andere Möglichkeit ausser :keyboard, auf das Drucken der Caps-Lock-Taste zu reagieren?
XbpStatusbar() ersetzten müssen weil MSCOMCTL.OCX nicht unter XP64
läuft. Der KB_Status() läuft nun in einem Thread und fragt per Function
den Status der STATIC lCaps etc. ab und verwenden den zur Anzeige
in dem Statusbar.
willst du ohne eine STATIC arbeiten geht das wohl so :
Code: Alles auswählen
***********************************************************************
* FUNCTION Capslock( [lLock] ) -> lOldLocked
***********************************************************************
#define KEYEVENTF_EXTENDEDKEY 0x01
#define KEYEVENTF_KEYUP 0x02
#define APPKEY_TOGGLED 2 // Missing from AppEvent.ch
#define VK_CAPITAL 0x14 // Caps Lock
#define VK_NUMLOCK 0x90 // Num Lock key
#define VK_SCROLL 0x91 // Scroll Lock
#Define VK_INSERT 0x2D // ???
DLLFUNCTION GetKeyState( nVirtKey ) USING STDCALL FROM USER32.DLL
DLLFUNCTION keybd_event( nVirtKey, nScanCode, nFlags, nExtra ) USING STDCALL FROM USER32.DLL
FUNCTION Capslock( lLock )
LOCAL nByte
nByte := GetKeyState(VK_CAPITAL)
// if nByte[1] then CapsLock is ON
IF lLock == NIL
RETURN nByte[1]
ELSEIF lLock .AND. !nByte[1] // Turn CapsLock ON
IF !GetKeyState(VK_CAPITAL)[1]
keybd_event( VK_CAPITAL, 58, KEYEVENTF_EXTENDEDKEY, 0 )
keybd_event( VK_CAPITAL, 58, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0 )
ENDIF
ELSEIF !lLock .AND. nByte[1] // Turn CapsLock OFF
keybd_event( VK_CAPITAL, 58, KEYEVENTF_EXTENDEDKEY, 0 )
keybd_event( VK_CAPITAL, 58, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0 )
ENDIF
RETURN nByte[1]
Jimmy