Difference between revisions of "Input.device"
Jump to navigation
Jump to search
(Added page + cradle) |
|||
| (One intermediate revision by the same user not shown) | |||
| Line 15: | Line 15: | ||
| − | === Example: | + | === Example: Show keyboard + mouse qualifiers === |
| − | + | Simple example showing how to use PeekQualifiers() function. It displays the active qualifiers for keyboard and mouse. | |
| Line 23: | Line 23: | ||
<source lang="pascal"> | <source lang="pascal"> | ||
| + | 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. | ||
</source> | </source> | ||
| − | |||
=== Example: ( insert example title ) === | === Example: ( insert example title ) === | ||
| Line 49: | Line 164: | ||
== The unit == | == The unit == | ||
| − | The | + | <source lang="pascal"> |
| + | 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. | |
</source> | </source> | ||
Latest revision as of 22:06, 21 March 2015
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.