mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-27 08:28:23 +02:00
+ Removed need for keybutil unit by incorporating it in the keyboard unit
This commit is contained in:
parent
148dbc6022
commit
96d51ec257
@ -46,7 +46,7 @@ onetex : tex
|
|||||||
$(MAKETEX) $(TEXOBJECTS)
|
$(MAKETEX) $(TEXOBJECTS)
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
rm -f *.o *.s $(OBJECTS) $(TEXOBJECTS) keybutil.ppu
|
rm -f *.o *.s $(OBJECTS) $(TEXOBJECTS)
|
||||||
|
|
||||||
$(OBJECTS): %: %.pp
|
$(OBJECTS): %: %.pp
|
||||||
$(PP) $(PPOPTS) $*
|
$(PP) $(PPOPTS) $*
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
This directory contains the examples for the Keyboard unit
|
This directory contains the examples for the Keyboard unit
|
||||||
|
|
||||||
keybutil.pp contains some routines to convert keyevents to readable strings.
|
|
||||||
|
|
||||||
ex1.pp contains an example of the GetKeyEvent function.
|
ex1.pp contains an example of the GetKeyEvent function.
|
||||||
ex2.pp contains an example of the GetKeyEventCode function.
|
ex2.pp contains an example of the GetKeyEventCode function.
|
||||||
ex3.pp contains an example of the GetKeyEventShiftState function.
|
ex3.pp contains an example of the GetKeyEventShiftState function.
|
||||||
|
@ -2,7 +2,7 @@ program example1;
|
|||||||
|
|
||||||
{ This program demonstrates the GetKeyEvent function }
|
{ This program demonstrates the GetKeyEvent function }
|
||||||
|
|
||||||
uses keyboard, keybutil;
|
uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K : TKeyEvent;
|
K : TKeyEvent;
|
||||||
|
@ -2,7 +2,7 @@ Program Example2;
|
|||||||
|
|
||||||
{ Program to demonstrate the GetKeyEventCode function. }
|
{ Program to demonstrate the GetKeyEventCode function. }
|
||||||
|
|
||||||
Uses keyboard,KeybUtil;
|
Uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K : TKeyEvent;
|
K : TKeyEvent;
|
||||||
|
@ -2,7 +2,7 @@ Program Example3;
|
|||||||
|
|
||||||
{ Program to demonstrate the GetKeyEventShiftState function. }
|
{ Program to demonstrate the GetKeyEventShiftState function. }
|
||||||
|
|
||||||
Uses keyboard,KeybUtil;
|
Uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K : TKeyEvent;
|
K : TKeyEvent;
|
||||||
|
@ -2,7 +2,7 @@ program example4;
|
|||||||
|
|
||||||
{ This program demonstrates the PollKeyEvent function }
|
{ This program demonstrates the PollKeyEvent function }
|
||||||
|
|
||||||
uses keyboard, keybutil;
|
uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K : TKeyEvent;
|
K : TKeyEvent;
|
||||||
|
@ -2,7 +2,7 @@ program example5;
|
|||||||
|
|
||||||
{ This program demonstrates the PutKeyEvent function }
|
{ This program demonstrates the PutKeyEvent function }
|
||||||
|
|
||||||
uses keyboard, keybutil;
|
uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K,k2 : TKeyEvent;
|
K,k2 : TKeyEvent;
|
||||||
|
@ -2,7 +2,7 @@ program example6;
|
|||||||
|
|
||||||
{ This program demonstrates the PollShiftStateEvent function }
|
{ This program demonstrates the PollShiftStateEvent function }
|
||||||
|
|
||||||
uses keyboard, keybutil;
|
uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K : TKeyEvent;
|
K : TKeyEvent;
|
||||||
|
@ -2,7 +2,7 @@ program example1;
|
|||||||
|
|
||||||
{ This program demonstrates the GetKeyEvent function }
|
{ This program demonstrates the GetKeyEvent function }
|
||||||
|
|
||||||
uses keyboard, keybutil;
|
uses keyboard;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
K : TKeyEvent;
|
K : TKeyEvent;
|
||||||
|
@ -1,106 +0,0 @@
|
|||||||
unit keybutil;
|
|
||||||
|
|
||||||
Interface
|
|
||||||
|
|
||||||
Uses keyboard;
|
|
||||||
|
|
||||||
Type
|
|
||||||
TKeyRecord = packed record
|
|
||||||
KeyCode : Word;
|
|
||||||
ShiftState, Flags : Byte;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Const
|
|
||||||
// Only use these strings. Should be used to localize key names.
|
|
||||||
SShift : Array [1..3] of string[5] = ('SHIFT','CTRL','ALT');
|
|
||||||
SLeftRight : Array [1..2] of string[5] = ('LEFT','RIGHT');
|
|
||||||
SUnicodeChar : String = 'Unicode character ';
|
|
||||||
SScanCode : String = 'Key with scancode ';
|
|
||||||
SUnknownFunctionKey : String = 'Unknown function key : ';
|
|
||||||
SAnd : String = 'AND';
|
|
||||||
SKeyPad : Array [0..($FF2F-kbdHome)] of string[6] =
|
|
||||||
('Home','Up','PgUp','Left',
|
|
||||||
'Middle','Right','End','Down',
|
|
||||||
'PgDn','Insert','Delete','',
|
|
||||||
'','','','');
|
|
||||||
|
|
||||||
Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
|
|
||||||
Function FunctionKeyName (KeyCode : Word) : String;
|
|
||||||
Function KeyEventToString(KeyEvent : TKeyEvent) : String;
|
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
|
|
||||||
Procedure AddToString (Var S : String; Const A : String);
|
|
||||||
|
|
||||||
begin
|
|
||||||
If Length(S)=0 then
|
|
||||||
S:=A
|
|
||||||
else
|
|
||||||
S:=S+' '+A;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function IntToStr(Int : Longint) : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Str(Int,IntToStr);
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
|
|
||||||
|
|
||||||
Var
|
|
||||||
S : Integer;
|
|
||||||
T : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
S:=GetKeyEventShiftState(KeyEvent);
|
|
||||||
T:='';
|
|
||||||
If (S and kbShift)<>0 then
|
|
||||||
begin
|
|
||||||
if UseLeftRight then
|
|
||||||
case (S and kbShift) of
|
|
||||||
kbShift : AddToString(T,SLeftRight[1]+' '+SAnd+' '+SLeftRight[2]);
|
|
||||||
kbLeftShift : AddToString(T,SLeftRight[1]);
|
|
||||||
kbRightShift : AddToString(T,SLeftRight[2]);
|
|
||||||
end;
|
|
||||||
AddToString(T,SShift[1]);
|
|
||||||
end;
|
|
||||||
If (S and kbCtrl)<>0 Then
|
|
||||||
AddToString(T,SShift[2]);
|
|
||||||
If (S and kbAlt)<>0 Then
|
|
||||||
AddToString(T,SShift[3]);
|
|
||||||
ShiftStateToString:=T;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function FunctionKeyName (KeyCode : Word) : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
If ((KeyCode-KbdF1)<$1F) Then
|
|
||||||
FunctionKeyName:='F'+IntToStr((KeyCode-KbdF1+1))
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
If (KeyCode-kbdHome)<($2F-$1F) then
|
|
||||||
FunctionKeyName:=SKeyPad[(KeyCode-kbdHome)]
|
|
||||||
else
|
|
||||||
FunctionKeyName:=SUnknownFunctionKey + IntToStr(KeyCode);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function KeyEventToString(KeyEvent : TKeyEvent) : String;
|
|
||||||
|
|
||||||
Var
|
|
||||||
T : String;
|
|
||||||
|
|
||||||
begin
|
|
||||||
T:=ShiftStateToString(KeyEvent,False);
|
|
||||||
Case GetKeyEventFlags(KeyEvent) of
|
|
||||||
kbASCII : AddToString(T,GetKeyEventChar(KeyEvent));
|
|
||||||
kbUniCode : AddToString(T,SUniCodeChar+IntToStr(GetKeyEventUniCode(Keyevent)));
|
|
||||||
kbFnKey : AddToString(T,FunctionKeyName(GetKeyEventCode(KeyEvent)));
|
|
||||||
// Not good, we need a GetKeyEventScanCode function !!
|
|
||||||
kbPhys : AddToString(T,SScanCode+IntToStr(KeyEvent and $ffff));
|
|
||||||
end;
|
|
||||||
KeyEventToString:=T;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
Loading…
Reference in New Issue
Block a user