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/)
-   -   Delphi Tastaturbelegung herausfinden (z.b. [Shift] + [5] = "%") (https://www.delphipraxis.net/124662-tastaturbelegung-herausfinden-z-b-%5Bshift%5D-%5B5%5D-%3D.html)

Florian H 22. Nov 2008 17:40


Tastaturbelegung herausfinden (z.b. [Shift] + [5] = "%&
 
Aloha,

ich suche eine Möglichkeit, für eine bestimmte/alle Taste(n), z.B. $53 (=[5]), herauszufinden, auf welches Zeichen diese gemappt ist, wenn zusätzlich Shift gedrückt wäre.

Um das Beispiel aus dem Titel nochmal zu erklären: ich will wissen, welches Zeichen erscheinen würde, wenn der Benutzer SHIFT und "5" drückt, was z.B. auf deutschen Tastaturen ja dem Prozentzeichen "%" entspricht.

Wie kann ich das herausfinden?


Liebe grüße
flo

Hawkeye219 22. Nov 2008 19:18

Re: Tastaturbelegung herausfinden (z.b. [Shift] + [5] = &
 
Hallo Florian,

so könntest du prinzipiell vorgehen:

Delphi-Quellcode:
// uses Windows

// Einsatz z.B. in FormKeyDown()
function ShiftedKey (aKey: Word): Char;
var
  KeyState : TKeyboardState;
  Buffer  : array [0..1] of char;
  Count   : Integer;
begin
  ZeroMemory (@KeyState, SizeOf(KeyState));
  KeyState[VK_SHIFT] := 128; // Shift-Taste gedrückt

  ZeroMemory (@Buffer, SizeOf(Buffer));
  Count := ToAscii(aKey, MapVirtualKey(aKey, 0), KeyState, @Buffer, 0);

  if (Count = 1) then
    Result := Buffer[0]
  else
    Result := #0;
end;

// Einsatz z.B. in FormKeyPress()
function ShiftedChar (aChar: Char): Char;
begin
  Result := ShiftedKey(VKKeyScan(aChar));
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Caption := ShiftedKey(Key);
end;
Beachte, dass in den Routinen mögliche Fehlercodes nicht ausgewertet werden.

Gruß Hawkeye

Florian H 22. Nov 2008 19:35

Re: Tastaturbelegung herausfinden (z.b. [Shift] + [5] = &
 
Das ist prima, danke dir :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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 by Thomas Breitkreuz