VK_ Bezeichnungen bei Keydown-Ereignis.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
haderlump
Beiträge: 185
Registriert: Fr 18. Jan 2013, 09:29
OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
CPU-Target: Celeron

VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von haderlump »

Hallo zusammen
Ich studiere gerade ad Ereignis KeyDown und habe als Beispiel folgenden Code gefunden

Code: Alles auswählen

uses
  LCLType, Dialogs, ...;
  
  ...
  
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_DOWN) or
     (Key = VK_UP) then
    ShowMessage('Pfeiltaste gedrückt');
  Key := 0; // Notwendig, um in manchen Widgetsets wie Cocoa die Verarbeitung in weiteren UI-Elementen zu verhindern
end;
Das funktioniert auch wunderbar.
Es werden hier die Tasten mit VK_DOWN etc bezeichnet. Durch Probieren habe ich auch schon andere Codes ermittelt z.B. VK_2
Aber ich habe noch keine Bezeichnung z.B für die Plus-Taste gefunden.
Da gibt es doch sicherlich irgendwo eine Auflistung dieser Tastaturcodes, und wie bzw. wo finde ich diese dann?
Wie nennt man diese Abkürzungen eigentlich?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von theo »

haderlump hat geschrieben:
Fr 20. Jan 2023, 18:35
Da gibt es doch sicherlich irgendwo eine Auflistung dieser Tastaturcodes, und wie bzw. wo finde ich diese dann?

Code: Alles auswählen

uses
  LCLType, 
Rate mal? :wink:
Generell: Rechtsklick -> Suche Deklaration.
haderlump hat geschrieben:
Fr 20. Jan 2023, 18:35
Wie nennt man diese Abkürzungen eigentlich?
Virtual Key Codes.

Was du suchst ist VK_ADD.
Aber Achtung: Hier geht es nur um die Hauptfunktion physischer Tasten. VK_ADD ist höchstens auf dem Zahlenblock.
Das andere ist das Shift von 1.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von m.fuchs »

theo hat geschrieben:
Fr 20. Jan 2023, 18:42
Aber Achtung: Hier geht es nur um die Hauptfunktion physischer Tasten. VK_ADD ist höchstens auf dem Zahlenblock.
Das andere ist das Shift von 1.
Aber nur für Leute die südlich vom Bodensee wohnen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von theo »

m.fuchs hat geschrieben:
Fr 20. Jan 2023, 19:25
Aber nur für Leute die südlich vom Bodensee wohnen.
:lol:
Da hast du natürlich recht.
Das zeigt aber wunderbar das Problem, dass man damit ohne "Übersetzung" nicht weit kommt.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von Winni »

Hi!

Die VK_ Verwirrung geht doch weiter.

Kann mir einer sagen, wann Application.ExtendedKeysSupport gesetzt wird,
und warum es manchmal true und manchmal false ist???

Wenn das false ist, gilt z.B. Folgendes:

Code: Alles auswählen

VK_OEM_PLUS            = $BB; // For any country/region, the '+' key     
Und am Ende ist ihnen noch aufgefallen, das "VK_OEM_PLUS" doch so kein kluger Name ist.
Deshalb gibt's auch noch Aliase:

Code: Alles auswählen

VK_LCL_EQUAL       = VK_OEM_PLUS;  // The "=+" Key     
Nur gibt es auf der deutschen Tastatur keinen "=+" Key.

Jedesmal muss ich nachsehen, weil ich dort nicht allzuviel Logik finde.
Und im Zweifelsfall den Byte-Wert ausgeben lassen.

Winni

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von Mathias »

m.fuchs hat geschrieben:
Fr 20. Jan 2023, 19:25
theo hat geschrieben:
Fr 20. Jan 2023, 18:42
Aber Achtung: Hier geht es nur um die Hauptfunktion physischer Tasten. VK_ADD ist höchstens auf dem Zahlenblock.
Das andere ist das Shift von 1.
Aber nur für Leute die südlich vom Bodensee wohnen.
Haben die nördlich und östlich des Bodensee kein "+" ganze rechts auf der Tastatur ?
Oberhalb von [Enter].
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von u-boot »

Mathias hat geschrieben:
Sa 21. Jan 2023, 08:20
m.fuchs hat geschrieben:
Fr 20. Jan 2023, 19:25
theo hat geschrieben:
Fr 20. Jan 2023, 18:42
Aber Achtung: Hier geht es nur um die Hauptfunktion physischer Tasten. VK_ADD ist höchstens auf dem Zahlenblock.
Das andere ist das Shift von 1.
Aber nur für Leute die südlich vom Bodensee wohnen.
Haben die nördlich und östlich des Bodensee kein "+" ganze rechts auf der Tastatur ?
Oberhalb von [Enter].
Shift von 1 ist in D normal das !
Rechts auf der tastatur ist normal schon das + beim Nummernblock
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von m.fuchs »

u-boot hat geschrieben:
Sa 21. Jan 2023, 08:59
Mathias hat geschrieben:
Sa 21. Jan 2023, 08:20
Haben die nördlich und östlich des Bodensee kein "+" ganze rechts auf der Tastatur ?
Oberhalb von [Enter].
Shift von 1 ist in D normal das !
Rechts auf der tastatur ist normal schon das + beim Nummernblock
Und dazu kommt noch das "Haupt"-Plus, links von der großen Enter-Taste. Da wo bei den Schweizern das Trema sitzt.
Also praktisch zwei Tasten mit der Primär-Belegung Plus.

ABER: Die Plus-Taste auf dem Nummern-Block liefert VK_ADD zurück, die andere nicht. Die entspricht dem Wert VK_OEM_PLUS, bei mir übrigens unabhängig davon ob ExtendedKeysSupport auf True oder False ist.

Es ist verwirrend.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von theo »

m.fuchs hat geschrieben:
Sa 21. Jan 2023, 09:17
Es ist verwirrend.
Ja.
Deshalb sollte man für alles was ein Zeichen generiert OnUTF8KeyPress verwenden.
Damit bekommt man in diesem Fall einfach das Zeichen "+", egal wie es produziert wurde.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von TBug »

Hallo in die Runde,
theo hat geschrieben:
Sa 21. Jan 2023, 10:49
Deshalb sollte man für alles was ein Zeichen generiert OnUTF8KeyPress verwenden.
Damit bekommt man in diesem Fall einfach das Zeichen "+", egal wie es produziert wurde.
Nützt nur nichts, wenn man schon beim Drücken der Taste darauf reagieren möchte/muss und nicht erst beim Loslassen derselben.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von Niesi »

Dann muss es eben anders gemacht werden - eventuell ist das Testprojekt dazu eine Anregung. Ich habe es auf einer englischen und einer deutschen Tastatur ausprobiert, scheint zu funtionieren ...
Dateianhänge
KeyDownTest.7z
(169.27 KiB) 51-mal heruntergeladen
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von Mathias »

Ich habe es noch ein bisschen verbessert, jetzt wird auch angezeigt, wen mehrere Shifttasten auf einmal gedrückt sind.

Code: Alles auswählen

  bufShift:='';
  if ssShift in Shift then bufShift := 'ShiftPressed ';
  if ssCaps in Shift  then bufShift += 'CapsPressed ';
  if ssAlt in Shift   then bufShift += 'AltPressed ';
  if ssCtrl in Shift  then bufShift += 'CtrlPressed ';  
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von theo »

TBug hat geschrieben:
Sa 21. Jan 2023, 22:13
Nützt nur nichts, wenn man schon beim Drücken der Taste darauf reagieren möchte/muss und nicht erst beim Loslassen derselben.
Ja, aber warum sollte man das bei Zeichentasten wollen?

Eigentlich wissen wir ja auch nicht, was der User haderlump eigentlich erreichen möchte.
Ich finde das immer schwierig, etwas zu beantworten ohne den Hintergrund zu kennen.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von Niesi »

Zum Schießen mit diversen Waffen ...

P = Panzerkanone
H = Handgranate
R = Raketenwerfer

... oder?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: VK_ Bezeichnungen bei Keydown-Ereignis.

Beitrag von theo »

Niesi hat geschrieben:
So 22. Jan 2023, 09:55
Zum Schießen mit diversen Waffen ...

P = Panzerkanone
H = Handgranate
R = Raketenwerfer

... oder?
Geschossen wird mit der Leertaste! :lol:

Antworten