Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi keycodes für altgr? (https://www.delphipraxis.net/122640-keycodes-fuer-altgr.html)

ToXiC 19. Okt 2008 19:45


keycodes für altgr?
 
ich suche den ganzen tag schon nach einem keycode für altgr
ich habe wender einen normalen keycode noch ein virtuellen gefunden
gibt es sowas?

jfheins 19. Okt 2008 19:51

Re: keycodes für altgr?
 
AltGr ist Strg+Alt zusammen gedrückt.

Drücke doch mal Strg+Alt+e ==> € ;)

blender 19. Okt 2008 19:59

Re: keycodes für altgr?
 
Aber Strg + Alt ist nicht gleich AltGr, oder?
Es ergibt die selben Zeichen, ich aber eine eigene Taste. Also hat sie auch einen eigenen Keycode.

MSSSSM 19. Okt 2008 20:11

Re: keycodes für altgr?
 
Strg + Alt = AltGr: es ist so!

blender 19. Okt 2008 20:13

Re: keycodes für altgr?
 
Aber ist AltGr = Strg + Alt?

ToXiC 19. Okt 2008 20:16

Re: keycodes für altgr?
 
danke für die schnellen antworten, doch strg + alt hilft mir in meinem kontext nicht weiter,
da ich keine tasten ausgeben möchte, sondern abfragen möchte ob altgr gedrückt ist
& wenn man stattdessen abfragt, ob strg + alt gedrückt ist hat ja nciht dne gewünschten effekt
sorry dass ich meinen kontext erst so spät erwähne

aber hat jemand eine idee für meinen konkreten fall?

blender 19. Okt 2008 20:21

Re: keycodes für altgr?
 
Naja, aber wenn AltGr den gleichen Tastaturcode ausgibt, wie Strg und Alt zusammen (also auch demnach für den Computer Strg + Alt ist), kannst du ja gar nicht feststellen, ob AltGr gedrückt ist.

Fussball-Robby 19. Okt 2008 20:23

Re: keycodes für altgr?
 
Lass es dir doch einfach ausgeben:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ShowMessage(IntToStr(Key));
end;
Ergibt bei AltGr: 17.

Edit: Ein Blick in die Windows.pas:
Delphi-Quellcode:
VK_CONTROL = 17;
AltGr und Strg haben den selben Keycode?

3_of_8 19. Okt 2008 20:26

Re: keycodes für altgr?
 
So einfach ist es nicht. 17 ist der Code für Strg. Bei AltGr sind einfach sowohl VK_CONTROL als auch VK_MENU als gedrückt registriert

blender 19. Okt 2008 20:28

Re: keycodes für altgr?
 
AltGr ergibt bei mir:
"Zugriffsverletzung bei Adresse 00000000. Beim lesen von Adresse 00000000"
Und bei Alt aktiviert sich nur das Menü.

Medium 19. Okt 2008 20:33

Re: keycodes für altgr?
 
Ich vermute fast, dass sich das nicht ohne (LowLevel-) Hook unterscheiden lässt. Dass AltGr nicht vollständig identisch mit Strg+Alt ist, geht z.B. aus diesem Wikipedia Artikel hervor. Windows scheint sie jedoch auf höherem Abstraktionslevel gleich zu setzen, weswegen auch der Strg-Code heraus kommt (der Status von Alt wird ja über ein Stateflag übergeben). Daher wird man schätze ich versuchen müssen an den entsprechenden Scancode zu kommen, und der einzige Weg den ich bislang dafür kenne, ist eben ein Hook.

DGL-luke 19. Okt 2008 21:03

Re: keycodes für altgr?
 
Da Windows unterschiedlich auf Strg+Alt+Entf (mit taskmanager) und AltGr+Entf (garnicht) reagiert, sollte mit einem low-level tastaturhook das schon unterscheidbar sein.

ToXiC 19. Okt 2008 21:05

Re: keycodes für altgr?
 
ich hab grad ein kleines programm ausprobiert, dass tastertureingaben in eine memobox schreibt
dieses gibt einmal den keycode aus wenn eine taste gedrückt wird & einmal wenn eine taste losgelassen wird

wenn ich nun altgr drücke wird folgendes augegeben:

162
165
162
165

162 ist = strg
ich weiß allerdings nicht was 165 ist

alt ist bei mir 164

alles sehr seltsam

ich wunder mich sowieso, warum meine keycodes abweichen & strg bei mir nicht 17 ist


edit:

hab jetzt genauere details:

strg scanwert 29
alt scanwert 56

altgr scanwerte
541
56

alle werte sind dezimal



edit2:

ich glaub ich hab eine lösung gefunden

Delphi-Quellcode:
 if vkCode = 162 then
        frmMain.shift := true;
        if vkCode = 165 then
        begin
        frmMain.alt := true;
        if frmMain.shift = true then
           frmMain.Memo1.Lines.Add('AltGr gedrückt');
        end;
ich weiß zwar nicht was es mit taste 165 auf sich hat, aber es funktioniert


allerdings bleibt da immer noch die frage, warum strg bei mir den keycode 162 hat.
jemand eine idee?

jfheins 19. Okt 2008 21:31

Re: keycodes für altgr?
 
Dass se nicht vollkommen identisch sind, musste ich leider auch bereits feststellen.

So tippe ich die gschweiften und die eckigen Klammern mit Strg+Alt, aber in Visual Studio 2005 gibts da irgendeinen dooen Hotkey, sodass bei Strg+Alt+0 kein } erscheint :(

Also es geht schon irgendwie, das zu unterscheiden ...

Vielleicht geht es damit
Zitat:

VK_RMENU 0xA5 Right ALT
:?:

ToXiC 19. Okt 2008 21:41

Re: keycodes für altgr?
 
ja vielen dank

klappt duper mit der abfrage

Delphi-Quellcode:
if vkCode = VK_RMENU then
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 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