Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VK_* in DE und US (https://www.delphipraxis.net/96750-vk_%2A-de-und-us.html)

FAlter 30. Jul 2007 12:30


VK_* in DE und US
 
Hi,

Wie ich feststellen musste, entsptrechen die VK-*-Codes, welche auf US- und DE-Tastaturen ausgelöst wurden, nicht unbedingt mit der Taste überein. Wenn man also Ü drückt, do wird der VK zu ; ausgelöst, obwohl auf der Taste, auf der beim US-Layout ein ; ist, auf einer DE-Tastatur ein Ö steht.

Delphi-Quellcode:
191: S.Hint := '#';
192: S.Hint := 'Ö';
219: S.Hint := 'ß';
220: S.Hint := '^';
221: S.Hint := '´';
222: S.Hint := 'Ä';
226: S.Hint := '<';
Für diese Tasten würde ich gerne den Namen der VK_*-Konstante u./o. den Namen der US-Taste wissen. (Bisher arbeite ich, wie man sieht, mit der numerischen Konstante. Das sieht nicht so toll aus.) Für die anderen habe ich es schon selbst herausgefunden ;)

Mfg
FAlter

[edit]Ups, das ist doch eher ein Win-API-Thema, oder? :oops: [/edit]

[edit]
Delphi-Quellcode:
{VK_SLASH} 191:       S.Hint := '# (US: /)';
{VK_BACKQUOTE} 192:   S.Hint := 'Ö (US: `)';
{VK_LEFTBRACKET} 219: S.Hint := 'ß (US: ()';
{VK_BACKSLASH} 220:   S.Hint := '^ (US: \)';
{VK_RIGHTBRACKET} 221: S.Hint := '´ (US: ))';
{VK_QUOTE} 222:       S.Hint := 'Ä (US: ´)';
226: S.Hint := '<'; //VK_?????
Stimmen die bei (US: ???) angegebenen Zeichen so? Und was hat < für einen VK?[/edit]

Jürgen Thomas 30. Jul 2007 12:52

Re: VK_* in DE und US
 
Hallo,

in der Windows.pas von BDS 2005 (nicht bei Delphi 5) habe ich folgende Codes gefunden:
Code:
  VK_OEM_1 = 186;
  VK_OEM_PLUS = 187;
  VK_OEM_COMMA = 188;
  VK_OEM_MINUS = 189;
  VK_OEM_PERIOD = 190;
  VK_OEM_2 = 191;
  VK_OEM_3 = 192;
  VK_OEM_4 = 219;
  VK_OEM_5 = 220;
  VK_OEM_6 = 221;
  VK_OEM_7 = 222;
  VK_OEM_8 = 223;
  VK_OEM_102 = 226;
  VK_PACKET = 231;
  VK_PROCESSKEY = 229;
Ich habe allerdings nicht geprüft, ob damit alle Codes erschlagen sind. Nach der NET-Dokumentation müsste es noch folgende geben:
Code:
OemOpenBrackets für ß?
Oemtilde für öÖ
OemQuestion für #'
OemBackslash für <>
D1...D9 und D0 für die Zifferntasten (nicht den Numeric-Block, sondern die normalen
Ich hoffe, das hilft Dir weiter. Jürgen

FAlter 30. Jul 2007 13:15

Re: VK_* in DE und US
 
Hi,

die VK_OEM_* scheint es zumindest unter D7 noch nicht zu geben.

Für ß ist es tatsächlich [, und ? liegt in US auf der gleichen Taste wie / (ich möchte die Erstbelegungen, also ohne SHIFT, verwenden), was als VK mit # übereinstimmt. Danke soweit.

Bei den anderen Werten komme ich irgendwie nicht zu diesen Ergebnissen, wenn ich das TZastaturlayout umstelle und die genannten Tasten drücke. Ich werde es jezt wohl per Versuchen herausfinden ;) indem ich mein Tastaturlayout umstelle und dann so lange Tasten drücke, bis ich den richtigen VK erwische. Dann kann ich immerhin ablesen, was die richtige Taste wäre. Umständlich, aber wohl der schnellste Weg...

Mfg
FAlter

alzaimar 30. Jul 2007 13:22

Re: VK_* in DE und US
 
Die VK_xxx - Konstanten haben nichts mit dem Tastaturlayout zu tun. es sind die virtual KEY-codes, also die Codes für die Taste.

FAlter 30. Jul 2007 13:29

Re: VK_* in DE und US
 
Hi,

aber es gibt Doppelbelegungen, und das ist hier das Problem. Natürlich kommt bei Y nicht bei deutschen Belegungen plötzlich VK_Z (oder Ord('Z')), aber, wie erwähnt, bei Ü und ; stimmen die VK überein. Wenn jemand eine deutsche Tastatur hat, gibt es jedoch keine ; Taste (das ist hier Zweirbelegung der , Taste), dafür jedoch eine O-Taste, welche den selben Tastencode beinhaltet. Ich möchte einfach beide Tasten anzeigen. (Und + (DE) ist mit = (US) identisch - in DE wäre = auf der 0).

Hier mein aktuelles Ergebnis der Recherchen und inzwischen auch per Test überprüft ;) :

Delphi-Quellcode:
{VK_SLASH}        {VK_OEM_2}    191: S.Hint := '# (US: /)';
{VK_BACKQUOTE}    {VK_OEM_3}    192: S.Hint := 'Ö (US: `)';
{VK_LEFTBRACKET}  {VK_OEM_4}    219: S.Hint := 'ß (US: [)';
{VK_BACKSLASH}    {VK_OEM_5}    220: S.Hint := '^ (US: \)';
{VK_RIGHTBRACKET} {VK_OEM_6}    221: S.Hint := '´ (US: ])';
{VK_QUOTE}        {VK_OEM_7}    222: S.Hint := 'Ä (US: '')';
                  {VK_OEM_102}  226: S.Hint := '<';
Mfg
FAlter


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.

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