200 lines
4.6 KiB
Ada
200 lines
4.6 KiB
Ada
with
|
|
ada.Characters.latin_1;
|
|
|
|
package body gel.Keyboard
|
|
is
|
|
|
|
function Image (Self : in modified_Key) return Character
|
|
is
|
|
use ada.Characters.latin_1;
|
|
|
|
key_Map_of_character : constant array (Key) of Character
|
|
:= [SPACE => ' ',
|
|
QUOTE => ''',
|
|
COMMA => ',',
|
|
MINUS => '-',
|
|
PERIOD => '.',
|
|
SLASH => '/',
|
|
|
|
'0' => '0',
|
|
'1' => '1',
|
|
'2' => '2',
|
|
'3' => '3',
|
|
'4' => '4',
|
|
'5' => '5',
|
|
'6' => '6',
|
|
'7' => '7',
|
|
'8' => '8',
|
|
'9' => '9',
|
|
|
|
SEMICOLON => ';',
|
|
EQUALS => '=',
|
|
LEFTBRACKET => '[',
|
|
BACKSLASH => '\',
|
|
RIGHTBRACKET => ']',
|
|
BACKQUOTE => '`',
|
|
|
|
a => 'a',
|
|
b => 'b',
|
|
c => 'c',
|
|
d => 'd',
|
|
e => 'e',
|
|
f => 'f',
|
|
g => 'g',
|
|
h => 'h',
|
|
i => 'i',
|
|
j => 'j',
|
|
k => 'k',
|
|
l => 'l',
|
|
m => 'm',
|
|
n => 'n',
|
|
o => 'o',
|
|
p => 'p',
|
|
q => 'q',
|
|
r => 'r',
|
|
s => 's',
|
|
t => 't',
|
|
u => 'u',
|
|
v => 'v',
|
|
w => 'w',
|
|
x => 'x',
|
|
y => 'y',
|
|
z => 'z',
|
|
|
|
KP0 => '0',
|
|
KP1 => '1',
|
|
KP2 => '2',
|
|
KP3 => '3',
|
|
KP4 => '4',
|
|
KP5 => '5',
|
|
KP6 => '6',
|
|
KP7 => '7',
|
|
KP8 => '8',
|
|
KP9 => '9',
|
|
|
|
KP_PERIOD => '.',
|
|
KP_DIVIDE => '/',
|
|
KP_MULTIPLY => '*',
|
|
KP_MINUS => '-',
|
|
KP_PLUS => '+',
|
|
KP_ENTER => NUL,
|
|
KP_EQUALS => '=',
|
|
|
|
others => NUL];
|
|
|
|
|
|
shifted_key_Map_of_character : constant array (Key) of Character
|
|
:= [SPACE => ' ',
|
|
QUOTE => '"',
|
|
COMMA => '<',
|
|
MINUS => '_',
|
|
PERIOD => '>',
|
|
SLASH => '?',
|
|
|
|
'0' => ')',
|
|
'1' => '!',
|
|
'2' => '@',
|
|
'3' => '#',
|
|
'4' => '$',
|
|
'5' => '%',
|
|
'6' => '^',
|
|
'7' => '&',
|
|
'8' => '*',
|
|
'9' => '(',
|
|
|
|
SEMICOLON => ':',
|
|
EQUALS => '+',
|
|
LEFTBRACKET => '{',
|
|
BACKSLASH => '|',
|
|
RIGHTBRACKET => '}',
|
|
BACKQUOTE => '~',
|
|
|
|
a => 'A',
|
|
b => 'B',
|
|
c => 'C',
|
|
d => 'D',
|
|
e => 'E',
|
|
f => 'F',
|
|
g => 'G',
|
|
h => 'H',
|
|
i => 'I',
|
|
j => 'J',
|
|
k => 'K',
|
|
l => 'L',
|
|
m => 'M',
|
|
n => 'N',
|
|
o => 'O',
|
|
p => 'P',
|
|
q => 'Q',
|
|
r => 'R',
|
|
s => 'S',
|
|
t => 'T',
|
|
u => 'U',
|
|
v => 'V',
|
|
w => 'W',
|
|
x => 'X',
|
|
y => 'Y',
|
|
z => 'Z',
|
|
|
|
KP0 => '0',
|
|
KP1 => '1',
|
|
KP2 => '2',
|
|
KP3 => '3',
|
|
KP4 => '4',
|
|
KP5 => '5',
|
|
KP6 => '6',
|
|
KP7 => '7',
|
|
KP8 => '8',
|
|
KP9 => '9',
|
|
|
|
KP_PERIOD => '.',
|
|
KP_DIVIDE => '/',
|
|
KP_MULTIPLY => '*',
|
|
KP_MINUS => '-',
|
|
KP_PLUS => '+',
|
|
KP_ENTER => NUL,
|
|
KP_EQUALS => '=',
|
|
|
|
others => NUL];
|
|
|
|
begin
|
|
if Self.modifier_Set (LShift)
|
|
or else Self.modifier_Set (RShift)
|
|
then
|
|
return shifted_key_Map_of_Character (Self.Key);
|
|
else
|
|
return key_Map_of_Character (Self.Key);
|
|
end if;
|
|
end Image;
|
|
|
|
|
|
|
|
function is_Graphic (Self : in Key) return Boolean
|
|
is
|
|
begin
|
|
return Self = SPACE
|
|
or else Self = QUOTE
|
|
or else Self = COMMA
|
|
or else Self = MINUS
|
|
or else Self = PERIOD
|
|
or else Self = SLASH
|
|
or else Self in '0' .. '9'
|
|
or else Self = SEMICOLON
|
|
or else Self = EQUALS
|
|
or else Self = LEFTBRACKET
|
|
or else Self = BACKSLASH
|
|
or else Self = RIGHTBRACKET
|
|
or else Self = BACKQUOTE
|
|
or else Self in a .. z
|
|
or else Self in KP0 .. KP9
|
|
or else Self = KP_PERIOD
|
|
or else Self = KP_DIVIDE
|
|
or else Self = KP_MULTIPLY
|
|
or else Self = KP_MINUS
|
|
or else Self = KP_PLUS
|
|
or else Self = KP_EQUALS;
|
|
end is_Graphic;
|
|
|
|
|
|
end gel.Keyboard;
|