Difference between revisions of "Unit Mouse"

From Ultibo.org
Jump to: navigation, search
Line 545: Line 545:
 
|-
 
|-
 
|}
 
|}
</div></div>
+
</div></div>  
 +
 
 +
'''USB HID descriptor'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PUSBHIDDescriptor = ^TUSBHIDDescriptor;</code>
 +
 
 +
<code>TUSBHIDDescriptor = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>bLength:Byte;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>bDescriptorType:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bcdHID:Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bCountryCode:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bNumDescriptors:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bHIDDescriptorType:Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>wHIDDescriptorLength:Word;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|''Note: Up to two optional bHIDDescriptorType/wHIDDescriptorLength pairs after the Report descriptor details''
 +
|-
 +
|}
 +
</div></div>
  
 
'''USB mouse device types'''
 
'''USB mouse device types'''
Line 571: Line 606:
 
| <code>ReportEndpoint:PUSBEndpointDescriptor;</code>
 
| <code>ReportEndpoint:PUSBEndpointDescriptor;</code>
 
| USB Mouse Interrupt IN Endpoint
 
| USB Mouse Interrupt IN Endpoint
 +
|-
 +
| <code>HIDDescriptor:PUSBHIDDescriptor;</code>
 +
| USB HID Descriptor for mouse
 +
|-
 +
| <code>ReportDescriptor:Pointer;</code>
 +
| USB HID Report Descriptor for mouse
 
|-
 
|-
 
| <code>PendingCount:LongWord;</code>
 
| <code>PendingCount:LongWord;</code>

Revision as of 05:24, 9 May 2019

Return to Unit Reference


Description


Ultibo Mouse interface unit

This unit provides both the Mouse device interface and the generic USB HID mouse driver.

Constants



[Expand]
Mouse specific constants MOUSE_*


[Expand]
Mouse device type MOUSE_TYPE_*


[Expand]
Mouse device state MOUSE_STATE_*


[Expand]
Mouse device flag MOUSE_FLAG_*


[Expand]
Mouse device control code MOUSE_CONTROL_*


[Expand]
Mouse buffer size MOUSE_BUFFER_*


[Expand]
Mouse sampling rate MOUSE_SAMPLE_*


[Expand]
Mouse data definition MOUSE_LEFT_*, MOUSE_RIGHT_*


[Expand]
Mouse rotation MOUSE_ROTATION_*


[Expand]
Mouse logging MOUSE_LOG_*


[Expand]
USB mouse specific constants USBMOUSE_*


Type definitions



Mouse data

[Expand]

PMouseData = ^TMouseData;

TMouseData = record

Mouse buffer

[Expand]

PMouseBuffer = ^TMouseBuffer;

TMouseBuffer = record

Mouse enumeration callback

TMouseEnumerate = function(Mouse:PMouseDevice; Data:Pointer):LongWord;

Mouse notification callback

TMouseNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;

Mouse device read

TMouseDeviceRead = function(Mouse:PMouseDevice; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;

Mouse device control

TMouseDeviceControl = function(Mouse:PMouseDevice; Request:Integer; Argument1:LongWord; var Argument2:LongWord):LongWord;

Mouse device types

[Expand]

PMouseDevice = ^TMouseDevice;

TMouseDevice = record

USB HID descriptor

[Expand]

PUSBHIDDescriptor = ^TUSBHIDDescriptor;

TUSBHIDDescriptor = packed record

USB mouse device types

[Expand]

PUSBMouseDevice = ^TUSBMouseDevice;

TUSBMouseDevice = record


Public variables



Mouse logging

MOUSE_DEFAULT_LOG_LEVEL:LongWord = MOUSE_LOG_LEVEL_DEBUG; Minimum level for Mouse messages. Only messages with level greater than or equal to this will be printed.
MOUSE_LOG_ENABLED:Boolean;


Function declarations



Initialization functions

[Expand]
procedure MouseInit;
Description: Initialize the mouse unit, device table and USB mouse driver


Mouse functions

[Expand]
function MousePeek:LongWord;
Description: Peek at the global mouse buffer to see if any data packets are ready


[Expand]
function MouseRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Read mouse data packets from the global mouse buffer


[Expand]
function MouseReadEx(Buffer:Pointer; Size,Flags:LongWord; var Count:LongWord):LongWord;
Description: Read mouse data packets from the global mouse buffer


[Expand]
function MouseWrite(Buffer:Pointer; Size,Count:LongWord):LongWord;
Description: Write mouse data packets to the global mouse buffer


[Expand]
function MouseFlush:LongWord;
Description: Flush the contents of the global mouse buffer


[Expand]
function MouseDeviceRead(Mouse:PMouseDevice; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: Read mouse data packets from the buffer of the specified mouse


[Expand]
function MouseDeviceControl(Mouse:PMouseDevice; Request:Integer; Argument1:LongWord; var Argument2:LongWord):LongWord;
Description: Perform a control request on the specified mouse device


[Expand]
function MouseDeviceSetState(Mouse:PMouseDevice; State:LongWord):LongWord;
Description: Set the state of the specified mouse and send a notification


[Expand]
function MouseDeviceCreate:PMouseDevice;
Description: Create a new Mouse device entry


[Expand]
function MouseDeviceCreateEx(Size:LongWord):PMouseDevice;
Description: Create a new Mouse device entry


[Expand]
function MouseDeviceDestroy(Mouse:PMouseDevice):LongWord;
Description: Destroy an existing Mouse device entry


[Expand]
function MouseDeviceRegister(Mouse:PMouseDevice):LongWord;
Description: Register a new Mouse device in the Mouse table


[Expand]
function MouseDeviceDeregister(Mouse:PMouseDevice):LongWord;
Description: Deregister a Mouse device from the Mouse table


[Expand]
function MouseDeviceFind(MouseId:LongWord):PMouseDevice;
Description: Find a mouse device by ID in the mouse table


[Expand]
function MouseDeviceFindByName(const Name:String):PMouseDevice; inline;
Description: Find a mouse device by name in the mouse table


[Expand]
function MouseDeviceFindByDescription(const Description:String):PMouseDevice; inline;
Description: Find a mouse device by description in the mouse table


[Expand]
function MouseDeviceEnumerate(Callback:TMouseEnumerate; Data:Pointer):LongWord;
Description: Enumerate all mouse devices in the mouse table


[Expand]
function MouseDeviceNotification(Mouse:PMouseDevice; Callback:TMouseNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: Register a notification for mouse device changes


RTL console functions

[Expand]
function SysConsoleHideMouse(AUserData:Pointer):Boolean;
Description: Handler for Platform ConsoleHideMouse function


[Expand]
function SysConsoleShowMouse(X,Y:LongWord; AUserData:Pointer):Boolean;
Description: Handler for Platform ConsoleShowMouse function


[Expand]
function SysConsoleReadMouse(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean;
Description: Handler for Platform ConsoleReadMouse function


USB mouse functions

[Expand]
function USBMouseDeviceRead(Mouse:PMouseDevice; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord;
Description: Implementation of MouseDeviceRead API for USB Mouse


[Expand]
function USBMouseDeviceControl(Mouse:PMouseDevice; Request:Integer; Argument1:LongWord; var Argument2:LongWord):LongWord;
Description: Implementation of MouseDeviceControl API for USB Mouse


[Expand]
function USBMouseDriverBind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Bind the Mouse driver to a USB device if it is suitable


[Expand]
function USBMouseDriverUnbind(Device:PUSBDevice; Interrface:PUSBInterface):LongWord;
Description: Unbind the Mouse driver from a USB device


[Expand]
procedure USBMouseReportWorker(Request:PUSBRequest);
Description: Called (by a Worker thread) to process a completed USB request from a USB mouse IN interrupt endpoint


[Expand]
procedure USBMouseReportComplete(Request:PUSBRequest);
Description: Called when a USB request from a USB mouse IN interrupt endpoint completes


Mouse helper functions

[Expand]
function MouseGetCount:LongWord; inline;
Description: Get the current mouse count


[Expand]
function MouseDeviceCheck(Mouse:PMouseDevice):PMouseDevice;
Description: Check if the supplied Mouse is in the mouse table


[Expand]
function MouseDeviceTypeToString(MouseType:LongWord):String;
Description: To be documented


[Expand]
function MouseDeviceStateToString(MouseState:LongWord):String;
Description: To be documented


[Expand]
function MouseDeviceStateToNotification(State:LongWord):LongWord;
Description: Convert a Mouse state value into the notification code for device notifications


[Expand]
function MouseInsertData(Mouse:PMouseDevice; Data:PMouseData; Signal:Boolean):LongWord;
Description: Insert a TMouseData entry into the mouse buffer (Direct or Global)


[Expand]
procedure MouseLog(Level:LongWord; Mouse:PMouseDevice; const AText:String);
Description: To be documented


[Expand]
procedure MouseLogInfo(Mouse:PMouseDevice; const AText:String); inline;
Description: To be documented


[Expand]
procedure MouseLogWarn(Mouse:PMouseDevice; const AText:String); inline;
Description: To be documented


[Expand]
procedure MouseLogError(Mouse:PMouseDevice; const AText:String); inline;
Description: To be documented


[Expand]
procedure MouseLogDebug(Mouse:PMouseDevice;const AText:String); inline;
Description: To be documented


USB mouse helper functions

[Expand]
function USBMouseCheckDevice(Device:PUSBDevice):Boolean;
Description: Check if the supplied USB device is suitable for detection as a HID Mouse Device


[Expand]
function USBMouseDeviceSetProtocol(Mouse:PUSBMouseDevice; Protocol:Byte):LongWord;
Description: Set the report protocol for a USB mouse device


Return to Unit Reference