+ All functions now have example. Added scancode list

This commit is contained in:
michael 2001-09-12 22:41:09 +00:00
parent b41cfaef2b
commit 23dc2da25d

View File

@ -2,7 +2,7 @@
% The Keyboard unit
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{The KEYBOARD unit}
\FPCexampledir{keybex}
\FPCexampledir{kbdex}
The \file{KeyBoard} unit implements a keyboard access layer which is system
independent. It can be used to poll the keyboard state and wait for certaine
@ -83,7 +83,7 @@ The \var{TKeyEvent} type is the base type for all keyboard events:
TKeyEvent = Longint;
\end{verbatim}
The structure of a \var{TKeyEvent} is explained in \seet{keyevent}.
\begin{FPCltable}{lp}{Structure of \var{TKeyEvent}}{keyevent}
\begin{FPCltable}{ll}{Structure of TKeyEvent}{keyevent}
Bytes & Meaning \\ \hline
2 bytes & Depending on \var{flags} either the physical representation of a key
(under DOS scancode, ascii code pair), or the translated
@ -103,9 +103,10 @@ possibily having the same name (but different value).
\subsection{Variables}
The following variable contains any pending (i.e. not yet consumed) keyboard
event:
\begin
\begin{verbatim}
var
PendingKeyEvent : TKeyEvent;
\end{verbatim}
\section{Functions and Procedures}
@ -143,7 +144,7 @@ description of how the key is described.
\Errors
If no key became available, 0 is returned.
\SeeAlso
\seep{PutKeyEvent}, \seef{PollKeyEvent}, \ßeef{TranslateKeyEvent},
\seep{PutKeyEvent}, \seef{PollKeyEvent}, \seef{TranslateKeyEvent},
\seef{TranslateKeyEventUniCode}
\end{function}
@ -250,7 +251,7 @@ None.
\seef{GetKeyEvent}
\end{function}
No example yet.
No example available yet.
\begin{procedure}{InitKeyBoard}
\Declaration
@ -265,7 +266,7 @@ keyboard functions.
\Errors
None.
\SeeAlso
\seep{DoneKeyBoard}
\seep{DoneKeyboard}
\end{procedure}
For an example, see most other functions.
@ -282,19 +283,27 @@ None.
\seef{GetKeyEvent}
\end{function}
\FPCexample{ex7}
\begin{function}{PollKeyEvent}
\Declaration
function PollKeyEvent: TKeyEvent;
\Description
\var{PollKeyEvent} checks whether a key event is available,
and returns it if one is found. If no event is pending,
it returns 0.
it returns 0.
Note that this does not remove the key from the pending keys.
The key should still be retrieved from the pending key events
list with the \seef{GetKeyEvent} function.
\Errors
None.
\SeeAlso
\seep{PutKeyEvent}, \seef{GetKeyEvent}
\end{function}
\FPCexample{ex4}
\begin{function}{PollShiftStateEvent}
\Declaration
function PollShiftStateEvent: TKeyEvent;
@ -304,9 +313,11 @@ keyevent. This will return 0 if there is no key event pending.
\Errors
None.
\SeeAlso
\seep{PollKeyEvent}, \seef{GetKeyEvent}
\seef{PollKeyEvent}, \seef{GetKeyEvent}
\end{function}
\FPCexample{ex6}
\begin{procedure}{PutKeyEvent}
\Declaration
procedure PutKeyEvent(KeyEvent: TKeyEvent);
@ -316,27 +327,190 @@ queue. Please note that depending on the implementation this
can hold only one value, i.e. when calling \var{PutKeyEvent}
multiple times, only the last pushed key will be remembered.
\Errors
None
\SeeAlso
\end{function}
\seef{PollKeyEvent}, \seef{GetKeyEvent}
\end{procedure}
\FPCexample{ex5}
\begin{function}{TranslateKeyEvent}
\Declaration
function TranslateKeyEvent(KeyEvent: TKeyEvent): TKeyEvent;
\Description
\var{TranslateKeyEvent} performs ASCII translation of the
\var{KeyEvent}.
\var{TranslateKeyEvent} performs ASCII translation of the \var{KeyEvent}.
It translates a physical key to a function key if the key is a function key,
and translates the physical key to the ordinal of the ascii character if
there is an equivalent character key.
\Errors
None.
\SeeAlso
\seef{TranslateKeyEventUniCode}
\end{function}
For an example, see \seef{GetKeyEvent}
\begin{function}{TranslateKeyEventUniCode}
\Declaration
function TranslateKeyEventUniCode(KeyEvent: TKeyEvent): TKeyEvent;
\Description
\var{TranslateKeyEventUniCode} performs Unicode translation of the
\var{KeyEvent}
\var{KeyEvent}. It is not yet implemented for all platforms.
\Errors
If the function is not yet implemented, then the \var{ErrorCode} of the
\file{system} unit will be set to \var{errKbdNotImplemented}
\SeeAlso
\end{function}
No example available yet.
\section{Keyboard scan codes}
Special physical keys are encoded with the DOS scan codes for these keys
in the second byte of the \var{TKeyEvent} type.
What follows is a list of the scan codes.
\begin{FPCtable}{ll}{Physical keys scan codes}
Scan code (hex) & Key \\ \hline
00 & NoKey \\
01 & ALT-Esc \\
02 & ALT-Space \\
04 & CTRL-Ins \\
05 & SHIFT-Ins \\
06 & CTRL-Del \\
07 & SHIFT-Del \\
08 & ALT-Back \\
09 & ALT-SHIFT-Back \\
0F & SHIFT-Tab \\
10 & ALT-Q \\
11 & ALT-W \\
12 & ALT-E \\
13 & ALT-R \\
14 & ALT-T \\
15 & ALT-Y \\
16 & ALT-U \\
17 & ALT-I \\
18 & ALT-O \\
19 & ALT-P \\
1A & ALT-LftBrack \\
1B & ALT-RgtBrack \\
1E & ALT-A \\
1F & ALT-S \\
20 & ALT-D \\
21 & ALT-F \\
22 & ALT-G \\
23 & ALT-H \\
24 & ALT-J \\
25 & ALT-K \\
26 & ALT-L \\
27 & ALT-SemiCol \\
28 & ALT-Quote \\
29 & ALT-OpQuote \\
2B & ALT-BkSlash \\
2C & ALT-Z \\
2D & ALT-X \\
2E & ALT-C \\
2F & ALT-V \\
30 & ALT-B \\
31 & ALT-N \\
32 & ALT-M \\
33 & ALT-Comma \\
34 & ALT-Period \\
35 & ALT-Slash \\
37 & ALT-GreyAst \\
3B & F1 \\
3C & F2 \\
3D & F3 \\
3E & F4 \\
3F & F5 \\
40 & F6 \\
41 & F7 \\
42 & F8 \\
43 & F9 \\
44 & F10 \\
47 & Home \\
48 & Up \\
49 & PgUp \\
4B & Left \\
4C & Center \\
4D & Right \\
4E & ALT-GrayPlus \\
4F & end \\
50 & Down \\
51 & PgDn \\
52 & Ins \\
53 & Del \\
54 & SHIFT-F1 \\
55 & SHIFT-F2 \\
56 & SHIFT-F3 \\
57 & SHIFT-F4 \\
58 & SHIFT-F5 \\
59 & SHIFT-F6 \\
5A & SHIFT-F7 \\
5B & SHIFT-F8 \\
5C & SHIFT-F9 \\
5D & SHIFT-F10 \\
5E & CTRL-F1 \\
5F & CTRL-F2 \\
60 & CTRL-F3 \\
61 & CTRL-F4 \\
62 & CTRL-F5 \\
63 & CTRL-F6 \\
64 & CTRL-F7 \\
65 & CTRL-F8 \\
66 & CTRL-F9 \\
67 & CTRL-F10 \\
68 & ALT-F1 \\
69 & ALT-F2 \\
6A & ALT-F3 \\
6B & ALT-F4 \\
6C & ALT-F5 \\
6D & ALT-F6 \\
6E & ALT-F7 \\
6F & ALT-F8 \\
70 & ALT-F9 \\
71 & ALT-F10 \\
72 & CTRL-PrtSc \\
73 & CTRL-Left \\
74 & CTRL-Right \\
75 & CTRL-end \\
76 & CTRL-PgDn \\
77 & CTRL-Home \\
78 & ALT-1 \\
79 & ALT-2 \\
7A & ALT-3 \\
7B & ALT-4 \\
7C & ALT-5 \\
7D & ALT-6 \\
7E & ALT-7 \\
7F & ALT-8 \\
80 & ALT-9 \\
81 & ALT-0 \\
82 & ALT-Minus \\
83 & ALT-Equal \\
84 & CTRL-PgUp \\
85 & F11 \\
86 & F12 \\
87 & SHIFT-F11 \\
88 & SHIFT-F12 \\
89 & CTRL-F11 \\
8A & CTRL-F12 \\
8B & ALT-F11 \\
8C & ALT-F12 \\
8D & CTRL-Up \\
8E & CTRL-Minus \\
8F & CTRL-Center \\
90 & CTRL-GreyPlus \\
91 & CTRL-Down \\
94 & CTRL-Tab \\
97 & ALT-Home \\
98 & ALT-Up \\
99 & ALT-PgUp \\
9B & ALT-Left \\
9D & ALT-Right \\
9F & ALT-end \\
A0 & ALT-Down \\
A1 & ALT-PgDn \\
A2 & ALT-Ins \\
A3 & ALT-Del \\
A5 & ALT-Tab \\ \hline
\end{FPCtable}