Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Tastatur Hardware Scan Code (https://www.delphipraxis.net/204795-tastatur-hardware-scan-code.html)

johndoe049 29. Jun 2020 22:42

Tastatur Hardware Scan Code
 
Hallo,
mit VK_RETURN erhalte ich einen identischen Wert für die Return Taste im Textbereich und für die Enter Taste am Ziffernblock.

Weiss jemand, wie ich an den Hardware Scan Code rankomme? Ich kenne zwei Anwendungen, die zwar nicht mit Delphi oder Lazarus erstellt wurden, wo diese Unterscheidung funktioniert.

Da ich 64bit Compiliere, habe ich selbst noch nichts sinnvolles gefunden.

Ich habe zwar das hier gefunden, das lässt sich jedoch nicht mit 64bit Compilieren.

https://forum.lazarus.freepascal.org...?topic=40752.0

Danke im voraus.

himitsu 29. Jun 2020 23:11

AW: Tastatur Hardware Scan Code
 
In den Tastatur-ScanCodes lässt es sich noch unterscheiden.
Beim bereits übersetzen VirtualKeyCode gibt es da keinen Unterschied mehr.
Du könntest WM_KEYUP/DOWN überschreiben ... da ist Beides drin.

Und wie man das ganz einfach rausbekommt?
Einfach ausprobieren. :zwinker:

blawen 29. Jun 2020 23:11

AW: Tastatur Hardware Scan Code
 
Schau mal hier oder hier

johndoe049 30. Jun 2020 10:54

AW: Tastatur Hardware Scan Code
 
Die beiden Beispiele gehen so nicht.
Das eine ist aus 2007 und das andere ist für C++ zugeschnitten.

Da ich direkt auf der Form mit Key Preview arbeite, wird WM_KEYDOWN wahrscheinlich zu früh abgefangen. Im Delphi Beispiel kommt nichts an.

WM_KEYUP/DOWN überschreiben entspricht nicht der Entwicklerpolicy von uns.

Gibt es eine andere Möglichkeit auf den Tastaturpuffer zuzugreifen? Ggf. über einen eigenen Thread oder Timer?

himitsu 30. Jun 2020 11:45

AW: Tastatur Hardware Scan Code
 
GetAsyncKeyState
MSDN-Library durchsuchenGetKeyState liefert den Status zu Beginn des Verarbeitung der aktuellen Message.

johndoe049 30. Jun 2020 12:28

AW: Tastatur Hardware Scan Code
 
GetKeyState(VirtualKey) zeigt für Return und Enter wieder das gleiche an.

himitsu 30. Jun 2020 12:49

AW: Tastatur Hardware Scan Code
 
Ach mist, stimmt ja, dort sind ja wieder nur die VirtuaKeyCodes drin.
MSDN-Library durchsuchenGetKeyState und MSDN-Library durchsuchenGetKeyboardState sind aber die einzigen Funktionen, wo man auch nachträglich nochmal diesen Teile der Message kommt, wo in der VCL vorher der Parameter nicht weitergereicht wurde, jedenfalls so weit ich weiß.

Mouse&Keyboard-Messages kommen über PostMessage rein, dann könntest du auch noch Application.OnMessage TApplicationEvents.OnMessage versuchen. (SendMessage kommt dort nicht vorbei und WM_TIMER wird erst im GetMessage generiert)

johndoe049 1. Jul 2020 10:21

AW: Tastatur Hardware Scan Code
 
Hi,

da ich für das Projekt Lazarus benötige, sind noch einige Lazarus spezifische Besonderheiten zu berücksichtigen.

Suchbegriff für das Lazarus Forum: "Can not get the Key Scan Code - only the virtual key code". Funktionierendes Beispiel ist auf Seite 2

Um keine toten links zu erzeugen, bitte direkt im englischen Lazarus Forum nach dem Begriff suchen. Ist in der Rubrik LCL vorhanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf