Add initial prototype.
This commit is contained in:
163
4-high/gel/source/interface/gel-keyboard.ads
Normal file
163
4-high/gel/source/interface/gel-keyboard.ads
Normal file
@@ -0,0 +1,163 @@
|
||||
with
|
||||
lace.Event,
|
||||
lace.Subject;
|
||||
|
||||
package gel.Keyboard with remote_Types
|
||||
--
|
||||
-- Provides an interface for a keyboard.
|
||||
--
|
||||
is
|
||||
|
||||
type Item is limited interface
|
||||
and lace.Subject.item;
|
||||
|
||||
type View is access all Item'class;
|
||||
|
||||
|
||||
--------
|
||||
--- Keys
|
||||
--
|
||||
|
||||
type Key is (Nil, -- TODO: Better names.
|
||||
BACKSPACE,
|
||||
TAB,
|
||||
CLEAR,
|
||||
ENTER,
|
||||
PAUSE,
|
||||
ESCAPE,
|
||||
SPACE,
|
||||
EXCLAIM,
|
||||
QUOTEDBL,
|
||||
HASH,
|
||||
DOLLAR,
|
||||
Percent,
|
||||
AMPERSAND,
|
||||
QUOTE,
|
||||
LEFTPAREN,
|
||||
RIGHTPAREN,
|
||||
ASTERISK,
|
||||
PLUS,
|
||||
COMMA,
|
||||
MINUS,
|
||||
PERIOD,
|
||||
SLASH,
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||
COLON, SEMICOLON,
|
||||
LESS, EQUALS, GREATER,
|
||||
QUESTION,
|
||||
AT_key,
|
||||
LEFTBRACKET,
|
||||
BACKSLASH,
|
||||
RIGHTBRACKET,
|
||||
CARET,
|
||||
UNDERSCORE,
|
||||
BACKQUOTE,
|
||||
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z,
|
||||
DELETE,
|
||||
WORLD_0, WORLD_1, WORLD_2, WORLD_3, WORLD_4, WORLD_5, WORLD_6, WORLD_7, WORLD_8, WORLD_9,
|
||||
WORLD_10, WORLD_11, WORLD_12, WORLD_13, WORLD_14, WORLD_15, WORLD_16, WORLD_17, WORLD_18, WORLD_19,
|
||||
WORLD_20, WORLD_21, WORLD_22, WORLD_23, WORLD_24, WORLD_25, WORLD_26, WORLD_27, WORLD_28, WORLD_29,
|
||||
WORLD_30, WORLD_31, WORLD_32, WORLD_33, WORLD_34, WORLD_35, WORLD_36, WORLD_37, WORLD_38, WORLD_39,
|
||||
WORLD_40, WORLD_41, WORLD_42, WORLD_43, WORLD_44, WORLD_45, WORLD_46, WORLD_47, WORLD_48, WORLD_49,
|
||||
WORLD_50, WORLD_51, WORLD_52, WORLD_53, WORLD_54, WORLD_55, WORLD_56, WORLD_57, WORLD_58, WORLD_59,
|
||||
WORLD_60, WORLD_61, WORLD_62, WORLD_63, WORLD_64, WORLD_65, WORLD_66, WORLD_67, WORLD_68, WORLD_69,
|
||||
WORLD_70, WORLD_71, WORLD_72, WORLD_73, WORLD_74, WORLD_75, WORLD_76, WORLD_77, WORLD_78, WORLD_79,
|
||||
WORLD_80, WORLD_81, WORLD_82, WORLD_83, WORLD_84, WORLD_85, WORLD_86, WORLD_87, WORLD_88, WORLD_89,
|
||||
WORLD_90, WORLD_91, WORLD_92, WORLD_93, WORLD_94, WORLD_95,
|
||||
KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9,
|
||||
KP_PERIOD,
|
||||
KP_DIVIDE, KP_MULTIPLY, KP_MINUS, KP_PLUS,
|
||||
KP_ENTER, KP_EQUALS,
|
||||
UP, DOWN, RIGHT, LEFT,
|
||||
INSERT,
|
||||
HOME, END_key,
|
||||
PAGEUP, PAGEDOWN,
|
||||
F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15,
|
||||
NUMLOCK, CAPSLOCK, SCROLLLOCK,
|
||||
RSHIFT, LSHIFT,
|
||||
RCTRL, LCTRL,
|
||||
RALT, LALT,
|
||||
RMETA, LMETA,
|
||||
LSUPER, RSUPER,
|
||||
MODE,
|
||||
COMPOSE,
|
||||
HELP,
|
||||
PRINT,
|
||||
SYSREQ,
|
||||
BREAK,
|
||||
MENU,
|
||||
POWER,
|
||||
EURO,
|
||||
UNDO);
|
||||
|
||||
function is_Graphic (Self : in Key) return Boolean;
|
||||
|
||||
|
||||
-------------
|
||||
--- Modifiers
|
||||
--
|
||||
|
||||
type Modifier is (LSHIFT, -- TODO: Better names.
|
||||
RSHIFT,
|
||||
LCTRL,
|
||||
RCTRL,
|
||||
LALT,
|
||||
RALT,
|
||||
LMETA,
|
||||
RMETA,
|
||||
NUM,
|
||||
CAPS,
|
||||
MODE);
|
||||
|
||||
type modifier_Set is array (Modifier) of Boolean;
|
||||
|
||||
no_Modifiers : constant modifier_Set;
|
||||
|
||||
|
||||
type modified_Key is
|
||||
record
|
||||
Key : keyboard.Key;
|
||||
modifier_Set : keyboard.modifier_Set;
|
||||
end record;
|
||||
|
||||
function Image (Self : in modified_Key) return Character;
|
||||
|
||||
|
||||
----------
|
||||
--- Events
|
||||
--
|
||||
|
||||
type key_press_Event is new lace.Event.item with
|
||||
record
|
||||
modified_Key : keyboard.modified_Key;
|
||||
Code : Integer;
|
||||
end record;
|
||||
|
||||
type key_release_Event is new lace.Event.item with
|
||||
record
|
||||
modified_Key : keyboard.modified_Key;
|
||||
end record;
|
||||
|
||||
|
||||
--------------
|
||||
--- Attributes
|
||||
--
|
||||
|
||||
function Modifiers (Self : in Item) return Modifier_Set is abstract;
|
||||
|
||||
|
||||
--------------
|
||||
--- Operations
|
||||
--
|
||||
|
||||
procedure emit_key_press_Event (Self : in out Item; Key : in keyboard.Key;
|
||||
key_Code : in Integer) is abstract;
|
||||
procedure emit_key_release_Event (Self : in out Item; Key : in keyboard.Key) is abstract;
|
||||
|
||||
|
||||
|
||||
private
|
||||
|
||||
no_Modifiers : constant modifier_Set := [others => False];
|
||||
|
||||
end gel.Keyboard;
|
||||
Reference in New Issue
Block a user