summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/libogcfpc/src/wiikeyboard/keyboard.inc
blob: 314fd0821f04e06f362e09cf262f79130b94771a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

{$IFDEF OGC_INTERFACE}
//#include "wsksymdef.h"

const
  MOD_SHIFT_L = ( 1 shl 0 );
  MOD_SHIFT_R = ( 1 shl 1 );
  MOD_SHIFTLOCK = ( 1 shl 2 );
  MOD_CAPSLOCK = ( 1 shl 3 );
  MOD_CONTROL_L = ( 1 shl 4 );
  MOD_CONTROL_R = ( 1 shl 5 );
  MOD_META_L = ( 1 shl 6 );
  MOD_META_R = ( 1 shl 7 );
  MOD_MODESHIFT = ( 1 shl 8 );
  MOD_NUMLOCK = ( 1 shl 9 );
  MOD_COMPOSE = ( 1 shl 10 );
  MOD_HOLDSCREEN = ( 1 shl 11 );
  MOD_COMMAND = ( 1 shl 12 );
  MOD_COMMAND1 = ( 1 shl 13 );
  MOD_COMMAND2 = ( 1 shl 14 );
  MOD_MODELOCK = ( 1 shl 15 );
  MOD_ANYSHIFT = ( MOD_SHIFT_L or MOD_SHIFT_R or MOD_SHIFTLOCK );
  MOD_ANYCONTROL = ( MOD_CONTROL_L or MOD_CONTROL_R );
  MOD_ANYMETA = ( MOD_META_L or MOD_META_R );

function MOD_ONESET(val, mask: cint): boolean; inline;

function MOD_ALLSET(val, mask: cint): boolean; inline;


type
  keyboard_event_type = (
  	KEYBOARD_CONNECTED,
  	KEYBOARD_DISCONNECTED,
  	KEYBOARD_PRESSED,
  	KEYBOARD_RELEASED);

type
  keyboard_event = record
    type_ : keyboard_event_type;
    modifiers : cuint16;
    keycode : cuint8;
    symbol : cuint16;
  end;
  pkeyboard_event = ^keyboard_event;


type
  keyPressCallback = procedure(symbol: cchar); cdecl;


function KEYBOARD_Init(keypress_cb: keyPressCallback): cint32; cdecl; external;

function KEYBOARD_Deinit: cint32; cdecl; external;


function KEYBOARD_GetEvent(event: Pkeyboard_event): cint32; cdecl; external;

function KEYBOARD_FlushEvents: cint32; cdecl; external;
{$ENDIF}


{$IFDEF OGC_IMPLEMENTATION}
function MOD_ONESET(val, mask: cint): boolean; inline;
begin
  MOD_ONESET := (val and mask) <> 0;
end;

function MOD_ALLSET(val, mask: cint): boolean; inline;
begin
  MOD_ALLSET := (val and mask) = mask;
end;

{$ENDIF}