Entwickler-Ecke

Sonstiges (FPC / Lazarus) / Linux API - Status von Mum-Lock & Co auslesen


Renegade - Sa 27.09.03 20:44
Titel: Status von Mum-Lock & Co auslesen
Moin erstmal!

Ich hab da ein Prob an dem ich im Moment verzweifle.

Ich will den Status der Num-Lock-Taste unter Kylix 3 / Slackware 9 auslesen. Bisher habe ich das immer so gemacht (unter Delphi / WinXP)


Quelltext
1:
if (GetKeyState(VK_NUMLOCK) and $1) <> 0 then Showmessage('!!');                    


Ich bekomme nun die Fehlermldung
Zitat:
undefinierter Bezeichner: 'GetKeyState'

GetKeyState ist in der unit QControls - angeblich. Diese steht bei mir auch in der uses.
Trotzdem Funzt das nicht!

Hat jemand ne Idee?

Gruß Renegade


AndyB - So 28.09.03 15:33
Titel: Re: Status von Mum-Lock & Co auslesen
Renegade hat folgendes geschrieben:
GetKeyState ist in der unit QControls - angeblich.

Dann hast du falsche Informationen. GetKeyState ist in der Unit Windows, da es eine WinAPI Funktion ist.


Zitat:
Hat jemand ne Idee?




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function IsModKey(ModKey: Cardinal): Boolean;
var
  Root: Window;
  Child: Window;
  RootX, RootY, WinX, WinY: Longint;
  Mask: Cardinal;
begin
  XQueryPointer(Application.Display,
    XRootWindow(Application.Display, XDefaultScreen(Application.Display)),
    @Root, @Child, @RootX, @RootY, @WinX, @WinY, @Mask);

  Result := Mask and ModKey <> 0;
end;



Delphi-Quelltext
1:
if IsModKey(Mod1Mask) then // Mod1 ist meistens die ALT-Taste                    


Du musst jetzt nur noch herausfinden, welche ModxMask dem Num-Lock-Status entspricht.

ShiftMask = Shift (beide)
ControlMask = Ctrl (beide)
Button1Mask = Maus links


Renegade - Mo 29.09.03 11:30
Titel: Re: Status von Mum-Lock & Co auslesen
AndyB hat folgendes geschrieben:
Renegade hat folgendes geschrieben:
GetKeyState ist in der unit QControls - angeblich.

Dann hast du falsche Informationen. GetKeyState ist in der Unit Windows, da es eine WinAPI Funktion ist.


Da hast Du nicht richtig gelesen - Ich brauche die Funktion unter Kylix / Linux und da gibt es keine unit Windows !

Gruß Renegade


barfuesser - Mo 29.09.03 11:57

Du hast nicht richtig gelesen! GetKeyState ist eine Funktion der Windows API und nicht unter Linux verfügbar. Was Du statt dessen machen sollst / kannst, hat Dir AndyB ebenfalls schon geschrieben.

barfuesser