mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-03 11:52:26 +01:00
Add syntax support for Ada
Add submodule with sublime syntax. Add corresponding tests for both Ada (in adb/ads) and for the companion tool gpr. fixes #1300 Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
This commit is contained in:
339
tests/syntax-tests/source/Ada/click.ads
vendored
Normal file
339
tests/syntax-tests/source/Ada/click.ads
vendored
Normal file
@@ -0,0 +1,339 @@
|
||||
with HAL.GPIO;
|
||||
with USB.Device.HID.Keyboard;
|
||||
|
||||
generic
|
||||
Nb_Bounce : Natural;
|
||||
type ColR is (<>);
|
||||
type RowR is (<>);
|
||||
|
||||
type GPIOP is new HAL.GPIO.GPIO_Point with private;
|
||||
|
||||
type Cols_T is array (ColR) of GPIOP;
|
||||
type Rows_T is array (RowR) of GPIOP;
|
||||
|
||||
Cols : Cols_T;
|
||||
Rows : Rows_T;
|
||||
Num_Layers : Natural;
|
||||
|
||||
with procedure Log (S : String; L : Integer := 1; Deindent : Integer := 0);
|
||||
package Click is
|
||||
|
||||
type Keys_T is record
|
||||
Cols : Cols_T;
|
||||
Rows : Rows_T;
|
||||
end record;
|
||||
|
||||
Keys : Keys_T :=
|
||||
(Rows => Rows, Cols => Cols);
|
||||
|
||||
type Key_Matrix is array (ColR, RowR) of Boolean;
|
||||
|
||||
--------------------------
|
||||
-- Events & Debouncing --
|
||||
--------------------------
|
||||
|
||||
MaxEvents : constant Positive := 20;
|
||||
|
||||
type EventT is (Press, Release);
|
||||
type Event is record
|
||||
Evt : EventT;
|
||||
Col : ColR;
|
||||
Row : RowR;
|
||||
end record;
|
||||
|
||||
type Events is array (Natural range <>) of Event;
|
||||
|
||||
function Get_Events return Events;
|
||||
function Update (NewS : Key_Matrix) return Boolean;
|
||||
|
||||
-------------
|
||||
-- Layout --
|
||||
-------------
|
||||
---------------
|
||||
-- Keycodes --
|
||||
---------------
|
||||
|
||||
-- Keycodes copy/pasted from the excelent Keyberon Rust firmware:
|
||||
-- https://github.com/TeXitoi/keyberon/
|
||||
|
||||
type Key_Code_T is
|
||||
(
|
||||
-- The "no" key, a placeholder to express nothing.
|
||||
No, -- = 0x00,
|
||||
-- / Error if too much keys are pressed at
|
||||
-- the same time.
|
||||
ErrorRollOver,
|
||||
-- / The POST fail error.
|
||||
PostFail,
|
||||
-- / An undefined error occured.
|
||||
ErrorUndefined,
|
||||
-- / `a` and `A`.
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
D,
|
||||
E,
|
||||
F,
|
||||
G,
|
||||
H,
|
||||
I,
|
||||
J,
|
||||
K,
|
||||
L,
|
||||
M, -- 0x10
|
||||
N,
|
||||
O,
|
||||
P,
|
||||
Q,
|
||||
R,
|
||||
S,
|
||||
T,
|
||||
U,
|
||||
V,
|
||||
W,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
-- `1` and `!`.
|
||||
Kb1,
|
||||
-- `2` and `@`.
|
||||
Kb2,
|
||||
-- `3` and `#`.
|
||||
Kb3, -- 0x20
|
||||
-- / `4` and `$`.
|
||||
Kb4,
|
||||
-- `5` and `%`.
|
||||
Kb5,
|
||||
-- `6` and `^`.
|
||||
Kb6,
|
||||
-- `7` and `&`.
|
||||
Kb7,
|
||||
-- `8` and `*`.
|
||||
Kb8,
|
||||
-- `9` and `(`.
|
||||
Kb9,
|
||||
-- `0` and `)`.
|
||||
Kb0,
|
||||
Enter,
|
||||
Escape,
|
||||
BSpace,
|
||||
Tab,
|
||||
Space,
|
||||
-- `-` and `_`.
|
||||
Minus,
|
||||
-- `=` and `+`.
|
||||
Equal,
|
||||
-- `[` and `{`.
|
||||
LBracket,
|
||||
-- `]` and `}`.
|
||||
RBracket, -- 0x30
|
||||
-- / `\` and `|`.
|
||||
Bslash,
|
||||
-- Non-US `#` and `~` (Typically near the Enter key).
|
||||
NonUsHash,
|
||||
-- `;` and `:`.
|
||||
SColon,
|
||||
-- `'` and `"`.
|
||||
Quote,
|
||||
-- How to have ` as code?
|
||||
-- \` and `~`.
|
||||
Grave,
|
||||
-- `,` and `<`.
|
||||
Comma,
|
||||
-- `.` and `>`.
|
||||
Dot,
|
||||
-- `/` and `?`.
|
||||
Slash,
|
||||
CapsLock,
|
||||
F1,
|
||||
F2,
|
||||
F3,
|
||||
F4,
|
||||
F5,
|
||||
F6,
|
||||
F7, -- 0x40
|
||||
F8,
|
||||
F9,
|
||||
F10,
|
||||
F11,
|
||||
F12,
|
||||
PScreen,
|
||||
ScrollLock,
|
||||
Pause,
|
||||
Insert,
|
||||
Home,
|
||||
PgUp,
|
||||
Delete,
|
||||
Endd,
|
||||
PgDown,
|
||||
Right,
|
||||
Left, -- 0x50
|
||||
Down,
|
||||
Up,
|
||||
NumLock,
|
||||
-- Keypad `/`
|
||||
KpSlash,
|
||||
-- Keypad `*`
|
||||
KpAsterisk,
|
||||
-- Keypad `-`.
|
||||
KpMinus,
|
||||
-- Keypad `+`.
|
||||
KpPlus,
|
||||
-- Keypad enter.
|
||||
KpEnter,
|
||||
-- Keypad 1.
|
||||
Kp1,
|
||||
Kp2,
|
||||
Kp3,
|
||||
Kp4,
|
||||
Kp5,
|
||||
Kp6,
|
||||
Kp7,
|
||||
Kp8, -- 0x60
|
||||
Kp9,
|
||||
Kp0,
|
||||
KpDot,
|
||||
-- Non-US `\` and `|` (Typically near the Left-Shift key)
|
||||
NonUsBslash,
|
||||
Application, -- 0x65
|
||||
-- / not a key, used for errors
|
||||
Power,
|
||||
-- Keypad `=`.
|
||||
KpEqual,
|
||||
F13,
|
||||
F14,
|
||||
F15,
|
||||
F16,
|
||||
F17,
|
||||
F18,
|
||||
F19,
|
||||
F20,
|
||||
F21, -- 0x70
|
||||
F22,
|
||||
F23,
|
||||
F24,
|
||||
Execute,
|
||||
Help,
|
||||
Menu,
|
||||
Selectt,
|
||||
Stop,
|
||||
Again,
|
||||
Undo,
|
||||
Cut,
|
||||
Copy,
|
||||
Paste,
|
||||
Find,
|
||||
Mute,
|
||||
VolUp, -- 0x80
|
||||
VolDown,
|
||||
-- Deprecated.
|
||||
LockingCapsLock,
|
||||
-- Deprecated.
|
||||
LockingNumLock,
|
||||
-- Deprecated.
|
||||
LockingScrollLock,
|
||||
-- / Keypad `,`, also used for the
|
||||
-- brazilian keypad period (.) key.
|
||||
KpComma,
|
||||
-- Used on AS/400 keyboard
|
||||
KpEqualSign,
|
||||
Intl1,
|
||||
Intl2,
|
||||
Intl3,
|
||||
Intl4,
|
||||
Intl5,
|
||||
Intl6,
|
||||
Intl7,
|
||||
Intl8,
|
||||
Intl9,
|
||||
Lang1, -- 0x90
|
||||
Lang2,
|
||||
Lang3,
|
||||
Lang4,
|
||||
Lang5,
|
||||
Lang6,
|
||||
Lang7,
|
||||
Lang8,
|
||||
Lang9,
|
||||
AltErase,
|
||||
SysReq,
|
||||
Cancel,
|
||||
Clear,
|
||||
Prior,
|
||||
Returnn,
|
||||
Separator,
|
||||
Outt, -- 0xA0
|
||||
Oper,
|
||||
ClearAgain,
|
||||
CrSel,
|
||||
ExSel,
|
||||
|
||||
-- According to QMK, 0xA5-0xDF are not
|
||||
-- usable on modern keyboards
|
||||
|
||||
-- Modifiers
|
||||
-- Left Control.
|
||||
LCtrl, -- = 0xE0,
|
||||
-- / Left Shift.
|
||||
LShift,
|
||||
-- Left Alt.
|
||||
LAlt,
|
||||
-- Left GUI (the Windows key).
|
||||
LGui,
|
||||
-- Right Control.
|
||||
RCtrl,
|
||||
-- Right Shift.
|
||||
RShift,
|
||||
-- Right Alt (or Alt Gr).
|
||||
RAlt,
|
||||
-- Right GUI (the Windows key).
|
||||
RGui, -- 0xE7
|
||||
|
||||
-- Unofficial
|
||||
MediaPlayPause, -- 0xE8,
|
||||
MediaStopCD,
|
||||
MediaPreviousSong,
|
||||
MediaNextSong,
|
||||
MediaEjectCD,
|
||||
MediaVolUp,
|
||||
MediaVolDown,
|
||||
MediaMute,
|
||||
MediaWWW, -- 0xF0
|
||||
MediaBack,
|
||||
MediaForward,
|
||||
MediaStop,
|
||||
MediaFind,
|
||||
MediaScrollUp,
|
||||
MediaScrollDown,
|
||||
MediaEdit,
|
||||
MediaSleep,
|
||||
MediaCoffee,
|
||||
MediaRefresh,
|
||||
MediaCalc -- 0xFB
|
||||
);
|
||||
|
||||
type Action_Type is (Key, No_Op, Trans, Layer, Multiple_Actions);
|
||||
|
||||
-- Should be a discriminated type
|
||||
type Action is record
|
||||
T : Action_Type; -- hould be the discriminant
|
||||
C : Key_Code_T;
|
||||
L : Natural;
|
||||
end record;
|
||||
|
||||
function Kw (Code : Key_Code_T) return Action;
|
||||
function Lw (V : Natural) return Action;
|
||||
|
||||
type Key_Modifiers is array (Natural range <>) of USB.Device.HID.Keyboard.Modifiers;
|
||||
|
||||
type Key_Codes_T is array (Natural range <>) of Key_Code_T;
|
||||
|
||||
subtype Ac is Action;
|
||||
type Layout is array (0 .. Num_Layers - 1, RowR, ColR) of Action;
|
||||
procedure Register_Events (L : Layout; Es : Events);
|
||||
procedure Tick (L : Layout);
|
||||
|
||||
function Get_Key_Codes return Key_Codes_T;
|
||||
function Get_Modifiers return Key_Modifiers;
|
||||
procedure Init;
|
||||
end Click;
|
Reference in New Issue
Block a user