Input.device
Revision as of 23:06, 21 March 2015 by Molly (talk | contribs) (→Example: Show keyboard + mouse qualifiers: Added)
Short explanatory description not available.
Description
There's no description available.
Usage
There is no usage information available.
Examples
Example: Show keyboard + mouse qualifiers
Simple example showing how to use PeekQualifiers() function. It displays the active qualifiers for keyboard and mouse.
program ShowKeyQualifiers;
{$MODE OBJFPC}{$H+}
Uses
sysutils,
exec, amigados,
aros_device_input;
Type
{$packset 1}
{$packenum 1}
TQualifierBits =
(
FIEQUALIFIERB_LSHIFT , // = 0;
FIEQUALIFIERB_RSHIFT , // = 1;
FIEQUALIFIERB_CAPSLOCK , // = 2;
FIEQUALIFIERB_CONTROL , // = 3;
FIEQUALIFIERB_LALT , // = 4;
FIEQUALIFIERB_RALT , // = 5;
FIEQUALIFIERB_LCOMMAND , // = 6;
FIEQUALIFIERB_RCOMMAND , // = 7;
FIEQUALIFIERB_NUMERICPAD , // = 8;
FIEQUALIFIERB_REPEAT , // = 9;
FIEQUALIFIERB_INTERRUPT , // = 10;
FIEQUALIFIERB_MULTIBROADCAST , // = 11;
FIEQUALIFIERB_MIDBUTTON , // = 12;
FIEQUALIFIERB_RBUTTON , // = 13;
FIEQUALIFIERB_LEFTBUTTON , // = 14;
FIEQUALIFIERB_RELATIVEMOUSE // = 15;
);
TQualifiers = Set of TQualifierBits;
Function QualsToStr(quals: TQualifiers): String;
Const
QualifierNames : Array[TQualifierBits] of pchar =
(
'LSHIFT', 'RSHIFT',
'CAPSLOCK',
'CTRL',
'LALT', 'RALT',
'LCOMMAND', 'RCOMMAND',
'NUMLOCK',
'REPEAT',
'INTERRUPT',
'BROADCAST',
'MMOUSEBTN',
'RMOUSEBTN',
'LMOUSEBTN',
'MOUSEWHEELBTN'
);
Var
s: String; B: TQualifierBits;
begin
S := '';
For B := Low(B) to High(B) do
begin
if B in quals then
begin
if S <> '' then S := S + '+';
S := S + QualifierNames[B];
end;
end;
Result := '[' + S + ']';
end;
procedure doTest;
Var
InputBase : pLibrary absolute aros_device_input.InputBase; // Make sure to initialize original library base.
InputIO : pIORequest;
quals : UWORD;
Var
mp : pMsgPort;
begin
mp := CreateMsgPort;
if (mp <> nil) then
begin
InputIO := CreateIORequest(mp, sizeof (TIOStdReq));
if (InputIO <> nil) then
begin
If (0 = OpenDevice('input.device', 0, InputIO, 0)) then
begin
writeln('checking qualifiers');
InputBase := pLibrary(InputIO^.io_Device);
If (Inputbase <> nil) then
begin
Quals := PeekQualifier;
WriteLn('Qualifiers (UWORD) = ', QualsToStr(TQualifiers(Quals)));
end;
CloseDevice(InputIO);
end;
DeleteIORequest(InputIO);
end;
DeleteMsgPort(mp);
end;
end;
begin
writeln('enter');
DoTest;
writeln('leave');
end.
Example: ( insert example title )
There's no example available.
Example: ( insert example title )
There's no example available.
The unit
unit aros_device_input;
{$MODE OBJFPC}{$H+}
interface
Uses
Exec;
Const
IND_ADDHANDLER = (CMD_NONSTD + 0);
IND_REMHANDLER = (CMD_NONSTD + 1);
IND_WRITEEVENT = (CMD_NONSTD + 2);
IND_SETTHRESH = (CMD_NONSTD + 3);
IND_SETPERIOD = (CMD_NONSTD + 4);
IND_SETMPORT = (CMD_NONSTD + 5);
IND_SETMTYPE = (CMD_NONSTD + 6);
IND_SETMTRIG = (CMD_NONSTD + 7);
IND_ADDEVENT = (CMD_NONSTD + 15); //* V50! */
Type
//* The following is AROS-specific, experimental and subject to change */
TInputDevice = record
id_Device : TDevice;
id_Flags : ULONG;
end;
Const
IDF_SWAP_BUTTONS = $0001;
// qualifiers are located in unit inputevent (e.g. IEQUALIFIERB_LSHIFT)
Var
InputBase : pLibrary = nil;
Function PeekQualifier(): UWORD; syscall InputBase 7;
Implementation
end.
Unit documentation
Currently there's no Free Pascal specific documentation available for this unit. Please consult the original SDK.