Browse Source

+ Implemented first three examples

michael 24 years ago
parent
commit
47e58b9b66
7 changed files with 103 additions and 11 deletions
  1. 3 2
      docs/kbdex/Makefile
  2. 7 0
      docs/kbdex/README
  3. 27 0
      docs/kbdex/ex1.pp
  4. 22 0
      docs/kbdex/ex2.pp
  5. 28 0
      docs/kbdex/ex3.pp
  6. 13 8
      docs/kbdex/keybutil.pp
  7. 3 1
      docs/kbdex/template.pp

+ 3 - 2
docs/kbdex/Makefile

@@ -32,8 +32,9 @@ endif
 
 
 .PHONY: all tex clean
 .PHONY: all tex clean
 
 
-OBJECTS=rttiobj trtti1 trtti2 trtti3 ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 \
-        ex10 ex11 ex12 ex13  ex14 ex15 ex16 ex17 ex18
+OBJECTS=ex1 ex2 ex3
+# ex4 ex5 ex6 ex7 ex8 ex9 \
+#        ex10 ex11 ex12 ex13  ex14 ex15 ex16 ex17 ex18
 
 
 TEXOBJECTS=$(addsuffix .tex, $(OBJECTS))
 TEXOBJECTS=$(addsuffix .tex, $(OBJECTS))
 
 

+ 7 - 0
docs/kbdex/README

@@ -0,0 +1,7 @@
+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.
+ex2.pp contains an example of the GetKeyEventCode function.
+ex3.pp contains an example of the GetKeyEventShiftState function.

+ 27 - 0
docs/kbdex/ex1.pp

@@ -0,0 +1,27 @@
+program example1;
+
+{ This program demonstrates the GetKeyEvent function }
+
+uses keyboard, keybutil;
+
+Var
+  K : TKeyEvent;
+
+begin
+  InitKeyBoard;
+  Writeln('Press keys, press "q" to end.');
+  Repeat
+    K:=GetKeyEvent;
+    Write('Got key event with ');
+    Case GetKeyEventFlags(K) of
+      kbASCII    : Writeln('ASCII key');
+      kbUniCode  : Writeln('Unicode key');
+      kbFnKey    : Writeln('Function key');
+      kbPhys     : Writeln('Physical key');
+      kbReleased : Writeln('Released key event');
+    end;
+    K:=TranslateKeyEvent(K);
+    Writeln('Got key : ',KeyEventToString(K));
+  Until (GetKeyEventChar(K)='q');
+  DoneKeyBoard;
+end.

+ 22 - 0
docs/kbdex/ex2.pp

@@ -0,0 +1,22 @@
+Program Example2;
+
+{ Program to demonstrate the GetKeyEventCode function. }
+
+Uses keyboard,KeybUtil;
+
+Var
+  K : TKeyEvent;
+
+begin
+  InitKeyBoard;
+  Writeln('Press function keys, or press "q" to end.');
+  Repeat
+    K:=GetKeyEvent;
+    K:=TranslateKeyEvent(K);
+    If (GetKeyEventFlags(K)<>KbfnKey) then
+      Writeln('Not a function key')
+    else  
+      Writeln('Got key : ',KeyEventToString(K));
+  Until (GetKeyEventChar(K)='q');
+  DoneKeyboard;
+end.

+ 28 - 0
docs/kbdex/ex3.pp

@@ -0,0 +1,28 @@
+Program Example3;
+
+{ Program to demonstrate the GetKeyEventShiftState function. }
+
+Uses keyboard,KeybUtil;
+
+Var
+  K : TKeyEvent;
+  S : Byte;
+  
+begin
+  InitKeyBoard;
+  Write('Press keys combined with CTRL/SHIFT/ALT');
+  Writeln(', or press "q" to end.');
+  Repeat
+    K:=GetKeyEvent;
+    K:=TranslateKeyEvent(K);
+    S:=GetKeyEventShiftState(K);
+    If (S=0) then
+      Writeln('No special keys pressed')
+    else  
+      begin
+      Writeln('Detected special keys : ',ShiftStateToString(K,False));
+      Writeln('Got key : ',KeyEventToString(K));
+      end;
+  Until (GetKeyEventChar(K)='q');
+  DoneKeyboard;
+end.

+ 13 - 8
docs/kbdex/keybutil.pp

@@ -12,18 +12,22 @@ Type
  
  
 Const 
 Const 
   // Only use these strings. Should be used to localize key names.
   // Only use these strings. Should be used to localize key names.
-  SShift       : Array [1..3] of string = ('SHIFT','CTRL','ALT');
-  SLeftRight   : Array [1..2] of string = ('LEFT','RIGHT');
+  SShift       : Array [1..3] of string[5] = ('SHIFT','CTRL','ALT');
+  SLeftRight   : Array [1..2] of string[5] = ('LEFT','RIGHT');
   SUnicodeChar : String = 'Unicode character ';
   SUnicodeChar : String = 'Unicode character ';
   SScanCode    : String = 'Key with scancode ';
   SScanCode    : String = 'Key with scancode ';
   SUnknownFunctionKey : String = 'Unknown function key : ';
   SUnknownFunctionKey : String = 'Unknown function key : ';
   SAnd         : String = 'AND';
   SAnd         : String = 'AND';
-  SKeyPad      : Array [0..($FF2F-kbdHome)] of string = 
+  SKeyPad      : Array [0..($FF2F-kbdHome)] of string[6] = 
                  ('Home','Up','PgUp','Left',
                  ('Home','Up','PgUp','Left',
                   'Middle','Right','End','Down',
                   'Middle','Right','End','Down',
                   'PgDn','Insert','Delete','',
                   'PgDn','Insert','Delete','',
                   '','','','');
                   '','','','');
 
 
+Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
+Function FunctionKeyName (KeyCode : Word) : String;
+Function KeyEventToString(KeyEvent : TKeyEvent) : String;
+
 
 
 Implementation
 Implementation
 
 
@@ -42,7 +46,7 @@ begin
   Str(Int,IntToStr);  
   Str(Int,IntToStr);  
 end;
 end;
   
   
-Function ShiftStateString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
+Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
 
 
 Var
 Var
   S : Integer;
   S : Integer;
@@ -64,8 +68,8 @@ begin
   If (S and kbCtrl)<>0 Then
   If (S and kbCtrl)<>0 Then
     AddToString(T,SShift[2]);
     AddToString(T,SShift[2]);
   If (S and kbAlt)<>0 Then  
   If (S and kbAlt)<>0 Then  
-    AddToString(T,SShift[2]);
-  ShiftStateString:=T;  
+    AddToString(T,SShift[3]);
+  ShiftStateToString:=T;  
 end;
 end;
 
 
 Function FunctionKeyName (KeyCode : Word) : String;
 Function FunctionKeyName (KeyCode : Word) : String;
@@ -88,14 +92,15 @@ Var
   T : String;
   T : String;
 
 
 begin
 begin
-  T:=ShiftStateString(KeyEvent,False);
+  T:=ShiftStateToString(KeyEvent,False);
   Case GetKeyEventFlags(KeyEvent) of
   Case GetKeyEventFlags(KeyEvent) of
     kbASCII   : AddToString(T,GetKeyEventChar(KeyEvent));
     kbASCII   : AddToString(T,GetKeyEventChar(KeyEvent));
     kbUniCode : AddToString(T,SUniCodeChar+IntToStr(GetKeyEventUniCode(Keyevent)));
     kbUniCode : AddToString(T,SUniCodeChar+IntToStr(GetKeyEventUniCode(Keyevent)));
     kbFnKey   : AddToString(T,FunctionKeyName(GetKeyEventCode(KeyEvent)));
     kbFnKey   : AddToString(T,FunctionKeyName(GetKeyEventCode(KeyEvent)));
                 // Not good, we need a GetKeyEventScanCode function !!
                 // Not good, we need a GetKeyEventScanCode function !!
     kbPhys    : AddToString(T,SScanCode+IntToStr(KeyEvent and $ffff));
     kbPhys    : AddToString(T,SScanCode+IntToStr(KeyEvent and $ffff));
-  end;   
+  end;
+  KeyEventToString:=T;
 end;
 end;
   
   
 end. 
 end. 

+ 3 - 1
docs/kbdex/template.pp

@@ -2,7 +2,9 @@ Program Example;
 
 
 { Program to demonstrate the *** function. }
 { Program to demonstrate the *** function. }
 
 
-Uses keyboard;
+Uses keyboard,KeybUtil;
 
 
 begin
 begin
+  InitKeyboard;
+  DoneKeyboard;
 end.
 end.