Difference between revisions of "Unit Keyboard"
From Ultibo.org
Line 44: | Line 44: | ||
! '''Note''' | ! '''Note''' | ||
| Called only during system startup | | Called only during system startup | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | |||
+ | '''Keyboard functions''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardGet(var KeyCode:Word):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the first key code from the global keyboard buffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''KeyCode''' | ||
+ | | The returned key code read from the buffer (eg KEY_CODE_A) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | ! '''Note''' | ||
+ | | Key code is the value translated from the scan code using the current keymap it may not be a character code and it may include non printable characters. To translate a key code to a character call KeymapGetCharCode() | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardPeek:LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Peek at the global keyboard buffer to see if any data packets are ready</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if packets are ready, ERROR_NO_MORE_ITEMS if not or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read keyboard data packets from the global keyboard buffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Buffer''' | ||
+ | | Pointer to a buffer to copy the keyboard data packets to | ||
+ | |- | ||
+ | ! '''Size''' | ||
+ | | The size of the buffer in bytes (Must be at least TKeyboardData or greater) | ||
+ | |- | ||
+ | ! '''Count''' | ||
+ | | The number of keyboard data packets copied to the buffer | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardReadEx(Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read keyboard data packets from the global keyboard buffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Buffer''' | ||
+ | | Pointer to a buffer to copy the keyboard data packets to | ||
+ | |- | ||
+ | ! '''Size''' | ||
+ | | TThe size of the buffer in bytes (Must be at least TKeyboardData or greater) | ||
+ | |- | ||
+ | ! '''Flags''' | ||
+ | | The flags to use for the read (eg KEYBOARD_FLAG_NON_BLOCK) | ||
+ | |- | ||
+ | ! '''Count''' | ||
+ | | The number of keyboard data packets copied to the buffer | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardPut(ScanCode,KeyCode:Word; Modifiers:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Put a scan code and key code in the global keyboard buffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''ScanCode''' | ||
+ | | The scan code to write to the buffer (eg SCAN_CODE_A) | ||
+ | |- | ||
+ | ! '''KeyCode''' | ||
+ | | The key code to write to the buffer (eg KEY_CODE_A) | ||
+ | |- | ||
+ | ! '''Modifiers''' | ||
+ | | The modifier keys to write to the buffer (eg KEYBOARD_LEFT_CTRL) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardWrite(Buffer:Pointer; Size,Count:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Write keyboard data packets to the global keyboard buffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Buffer''' | ||
+ | | Pointer to a buffer to copy the keyboard data packets from | ||
+ | |- | ||
+ | ! '''Size''' | ||
+ | | The size of the buffer in bytes (Must be at least TKeyboardData or greater) | ||
+ | |- | ||
+ | ! '''Count''' | ||
+ | | The number of keyboard data packets to copy from the buffer | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardFlush:LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Flush the contents of the global keyboard buffer</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceGet(Keyboard:PKeyboardDevice; var KeyCode:Word):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the first key code from the buffer of the specified keyboard</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to get from | ||
+ | |- | ||
+ | ! '''Keycode''' | ||
+ | | The returned key code read from the buffer (eg KEY_CODE_A) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | ! '''Note''' | ||
+ | | Key code is the value translated from the scan code using the current keymap it may not be a character code and it may include non printable characters. To translate a key code to a character call KeymapGetCharCode() | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceRead(Keyboard:PKeyboardDevice; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Read keyboard data packets from the buffer of the specified keyboard</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to read from | ||
+ | |- | ||
+ | ! '''Buffer''' | ||
+ | | Pointer to a buffer to copy the keyboard data packets to | ||
+ | |- | ||
+ | ! '''Size''' | ||
+ | | The size of the buffer in bytes (Must be at least TKeyboardData or greater) | ||
+ | |- | ||
+ | ! '''Count''' | ||
+ | | The number of keyboard data packets copied to the buffer | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceControl(Keyboard:PKeyboardDevice; Request:Integer; Argument1:LongWord; var Argument2:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Perform a control request on the specified keyboard device</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to control | ||
+ | |- | ||
+ | ! '''Request''' | ||
+ | | The request code for the operation (eg KEYBOARD_CONTROL_GET_FLAG) | ||
+ | |- | ||
+ | ! '''Argument1''' | ||
+ | | The first argument for the operation (Dependant on request code) | ||
+ | |- | ||
+ | ! '''Argument2''' | ||
+ | | The second argument for the operation (Dependant on request code) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceSetState(Keyboard:PKeyboardDevice; State:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Set the state of the specified keyboard and send a notification</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard to set the state for | ||
+ | |- | ||
+ | ! '''State''' | ||
+ | | The new state to set and notify | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceCreate:PKeyboardDevice;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create a new Keyboard device entry</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | Pointer to new Keyboard device entry or nil if keyboard could not be created | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceCreateEx(Size:LongWord):PKeyboardDevice;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Create a new Keyboard device entry</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Size''' | ||
+ | | Size in bytes to allocate for new keyboard (Including the keyboard device entry) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | Pointer to new Keyboard device entry or nil if keyboard could not be created | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceDestroy(Keyboard:PKeyboardDevice):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Destroy an existing Keyboard device entry</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to destroy | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceRegister(Keyboard:PKeyboardDevice):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Register a new Keyboard device in the Keyboard table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to register | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceDeregister(Keyboard:PKeyboardDevice):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Deregister a Keyboard device from the Keyboard table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to deregister | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceFind(KeyboardId:LongWord):PKeyboardDevice;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Find a keyboard device by ID in the keyboard table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''KeyboardId''' | ||
+ | | The ID number of the keyboard to find | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | Pointer to keyboard device entry or nil if not found | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceFindByName(const Name:String):PKeyboardDevice; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Find a keyboard device by name in the keyboard table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Name''' | ||
+ | | The name of the keyboard to find (eg Keyboard0) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | Pointer to keyboard device entry or nil if not found | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceFindByDescription(const Description:String):PKeyboardDevice; inline;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Find a keyboard device by description in the keyboard table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Description''' | ||
+ | | The description of the keyboard to find (eg USB HID Keyboard) | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | Pointer to keyboard device entry or nil if not found | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceEnumerate(Callback:TKeyboardEnumerate; Data:Pointer):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Enumerate all keyboard devices in the keyboard table</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Callback''' | ||
+ | | The callback function to call for each keyboard in the table | ||
+ | |- | ||
+ | ! '''Data''' | ||
+ | | A private data pointer to pass to callback for each keyboard in the table | ||
+ | |- | ||
+ | ! '''Return''' | ||
+ | | ERROR_SUCCESS if completed or another error code on failure | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function KeyboardDeviceNotification(Keyboard:PKeyboardDevice; Callback:TKeyboardNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Register a notification for keyboard device changes</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! '''Keyboard''' | ||
+ | | The keyboard device to notify changes for (Optional, pass nil for all keyboards) | ||
+ | |- | ||
+ | ! '''Callback''' | ||
+ | | The function to call when a notification event occurs | ||
+ | |- | ||
+ | ! '''Data''' | ||
+ | | A private data pointer to pass to callback when a notification event occurs | ||
+ | |- | ||
+ | ! '''Notification''' | ||
+ | | The events to register for notification of (eg DEVICE_NOTIFICATION_REGISTER) | ||
+ | |- | ||
+ | ! '''Flags''' | ||
+ | | The flags to control the notification (eg NOTIFIER_FLAG_WORKER) | ||
|- | |- | ||
|} | |} |
Revision as of 00:24, 19 August 2016
Return to Unit Reference
Description
Keyboard Devices
This unit provides both the Keyboard device interface and the generic USB HID keyboard driver. The keyboard unit also provides the STDIN interface for the Run Time Library (RTL).
USB Keyboard Devices
This driver currently uses HID Boot Protocol only and could be redesigned in future to use the HID Report Protocol instead to allow for greater language support etc.
Constants
To be documented
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
procedure KeyboardInit;
Description: Initialize the keyboard unit, device table and USB keyboard driver
Note | Called only during system startup |
---|
Keyboard functions
function KeyboardGet(var KeyCode:Word):LongWord;
Description: Get the first key code from the global keyboard buffer
KeyCode | The returned key code read from the buffer (eg KEY_CODE_A) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Key code is the value translated from the scan code using the current keymap it may not be a character code and it may include non printable characters. To translate a key code to a character call KeymapGetCharCode() |
function KeyboardPeek:LongWord;
Description: Peek at the global keyboard buffer to see if any data packets are ready
Return | ERROR_SUCCESS if packets are ready, ERROR_NO_MORE_ITEMS if not or another error code on failure |
---|
function KeyboardRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Read keyboard data packets from the global keyboard buffer
Buffer | Pointer to a buffer to copy the keyboard data packets to |
---|---|
Size | The size of the buffer in bytes (Must be at least TKeyboardData or greater) |
Count | The number of keyboard data packets copied to the buffer |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardReadEx(Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: Read keyboard data packets from the global keyboard buffer
Buffer | Pointer to a buffer to copy the keyboard data packets to |
---|---|
Size | TThe size of the buffer in bytes (Must be at least TKeyboardData or greater) |
Flags | The flags to use for the read (eg KEYBOARD_FLAG_NON_BLOCK) |
Count | The number of keyboard data packets copied to the buffer |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardPut(ScanCode,KeyCode:Word; Modifiers:LongWord):LongWord;
Description: Put a scan code and key code in the global keyboard buffer
ScanCode | The scan code to write to the buffer (eg SCAN_CODE_A) |
---|---|
KeyCode | The key code to write to the buffer (eg KEY_CODE_A) |
Modifiers | The modifier keys to write to the buffer (eg KEYBOARD_LEFT_CTRL) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardWrite(Buffer:Pointer; Size,Count:LongWord):LongWord;
Description: Write keyboard data packets to the global keyboard buffer
Buffer | Pointer to a buffer to copy the keyboard data packets from |
---|---|
Size | The size of the buffer in bytes (Must be at least TKeyboardData or greater) |
Count | The number of keyboard data packets to copy from the buffer |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardFlush:LongWord;
Description: Flush the contents of the global keyboard buffer
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function KeyboardDeviceGet(Keyboard:PKeyboardDevice; var KeyCode:Word):LongWord;
Description: Get the first key code from the buffer of the specified keyboard
Keyboard | The keyboard device to get from |
---|---|
Keycode | The returned key code read from the buffer (eg KEY_CODE_A) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Key code is the value translated from the scan code using the current keymap it may not be a character code and it may include non printable characters. To translate a key code to a character call KeymapGetCharCode() |
function KeyboardDeviceRead(Keyboard:PKeyboardDevice; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: Read keyboard data packets from the buffer of the specified keyboard
Keyboard | The keyboard device to read from |
---|---|
Buffer | Pointer to a buffer to copy the keyboard data packets to |
Size | The size of the buffer in bytes (Must be at least TKeyboardData or greater) |
Count | The number of keyboard data packets copied to the buffer |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceControl(Keyboard:PKeyboardDevice; Request:Integer; Argument1:LongWord; var Argument2:LongWord):LongWord;
Description: Perform a control request on the specified keyboard device
Keyboard | The keyboard device to control |
---|---|
Request | The request code for the operation (eg KEYBOARD_CONTROL_GET_FLAG) |
Argument1 | The first argument for the operation (Dependant on request code) |
Argument2 | The second argument for the operation (Dependant on request code) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceSetState(Keyboard:PKeyboardDevice; State:LongWord):LongWord;
Description: Set the state of the specified keyboard and send a notification
Keyboard | The keyboard to set the state for |
---|---|
State | The new state to set and notify |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceCreate:PKeyboardDevice;
Description: Create a new Keyboard device entry
Return | Pointer to new Keyboard device entry or nil if keyboard could not be created |
---|
function KeyboardDeviceCreateEx(Size:LongWord):PKeyboardDevice;
Description: Create a new Keyboard device entry
Size | Size in bytes to allocate for new keyboard (Including the keyboard device entry) |
---|---|
Return | Pointer to new Keyboard device entry or nil if keyboard could not be created |
function KeyboardDeviceDestroy(Keyboard:PKeyboardDevice):LongWord;
Description: Destroy an existing Keyboard device entry
Keyboard | The keyboard device to destroy |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceRegister(Keyboard:PKeyboardDevice):LongWord;
Description: Register a new Keyboard device in the Keyboard table
Keyboard | The keyboard device to register |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceDeregister(Keyboard:PKeyboardDevice):LongWord;
Description: Deregister a Keyboard device from the Keyboard table
Keyboard | The keyboard device to deregister |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceFind(KeyboardId:LongWord):PKeyboardDevice;
Description: Find a keyboard device by ID in the keyboard table
KeyboardId | The ID number of the keyboard to find |
---|---|
Return | Pointer to keyboard device entry or nil if not found |
function KeyboardDeviceFindByName(const Name:String):PKeyboardDevice; inline;
Description: Find a keyboard device by name in the keyboard table
Name | The name of the keyboard to find (eg Keyboard0) |
---|---|
Return | Pointer to keyboard device entry or nil if not found |
function KeyboardDeviceFindByDescription(const Description:String):PKeyboardDevice; inline;
Description: Find a keyboard device by description in the keyboard table
Description | The description of the keyboard to find (eg USB HID Keyboard) |
---|---|
Return | Pointer to keyboard device entry or nil if not found |
function KeyboardDeviceEnumerate(Callback:TKeyboardEnumerate; Data:Pointer):LongWord;
Description: Enumerate all keyboard devices in the keyboard table
Callback | The callback function to call for each keyboard in the table |
---|---|
Data | A private data pointer to pass to callback for each keyboard in the table |
Return | ERROR_SUCCESS if completed or another error code on failure |
function KeyboardDeviceNotification(Keyboard:PKeyboardDevice; Callback:TKeyboardNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: Register a notification for keyboard device changes
Keyboard | The keyboard device to notify changes for (Optional, pass nil for all keyboards) |
---|---|
Callback | The function to call when a notification event occurs |
Data | A private data pointer to pass to callback when a notification event occurs |
Notification | The events to register for notification of (eg DEVICE_NOTIFICATION_REGISTER) |
Flags | The flags to control the notification (eg NOTIFIER_FLAG_WORKER) |
Return to Unit Reference