blob: c20a6450e8f3311a0e3f09a74704ba93b291e465 [file] [log] [blame]
/*
* BRLTTY - A background process providing access to the console screen (when in
* text mode) for a blind person using a refreshable braille display.
*
* Copyright (C) 1995-2023 by The BRLTTY Developers.
*
* BRLTTY comes with ABSOLUTELY NO WARRANTY.
*
* This is free software, placed under the terms of the
* GNU Lesser General Public License, as published by the Free Software
* Foundation; either version 2.1 of the License, or (at your option) any
* later version. Please see the file LICENSE-LGPL for details.
*
* Web Page: http://brltty.app/
*
* This software is maintained by Dave Mielke <dave@mielke.cc>.
*/
#ifndef BRLTTY_INCLUDED_KTB_KEYBOARD
#define BRLTTY_INCLUDED_KTB_KEYBOARD
#include "ktb_types.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define KBD_GROUP(grp) KBD_GRP_##grp
#define KBD_KEY(grp,key) KBD_KEY_##grp##_##key
#define KBD_KEY_VALUE(grp,num) {.group=KBD_GROUP(grp), .number=num}
#define KBD_KEY_ENTRY(grp,key) KBD_KEY_VALUE(grp, KBD_KEY(grp, key))
#define KBD_GROUP_NAME(grp,nam) {.value=KBD_KEY_VALUE(grp, KTB_KEY_ANY), .name=nam}
#define KBD_KEY_NAME(grp,key,nam) {.value=KBD_KEY_ENTRY(grp, key), .name=nam}
#define KBD_KEY_SPECIAL(name) KBD_KEY_ENTRY(SPECIAL, name)
#define KBD_KEY_UNMAPPED KBD_KEY_SPECIAL(Unmapped)
#define KBD_KEY_IGNORE KBD_KEY_SPECIAL(Ignore)
#define KBD_KEY_LETTER(name) KBD_KEY_ENTRY(LETTER, name)
#define KBD_KEY_NUMBER(name) KBD_KEY_ENTRY(NUMBER, name)
#define KBD_KEY_SYMBOL(name) KBD_KEY_ENTRY(SYMBOL, name)
#define KBD_KEY_ACTION(name) KBD_KEY_ENTRY(ACTION, name)
#define KBD_KEY_MEDIA(name) KBD_KEY_ENTRY(MEDIA, name)
#define KBD_KEY_FUNCTION(name) KBD_KEY_ENTRY(FUNCTION, name)
#define KBD_KEY_MODIFIER(name) KBD_KEY_ENTRY(MODIFIER, name)
#define KBD_KEY_LOCK(name) KBD_KEY_ENTRY(LOCK, name)
#define KBD_KEY_KPNUMBER(name) KBD_KEY_ENTRY(KPNUMBER, name)
#define KBD_KEY_KPSYMBOL(name) KBD_KEY_ENTRY(KPSYMBOL, name)
#define KBD_KEY_KPACTION(name) KBD_KEY_ENTRY(KPACTION, name)
#define KBD_KEY_BRAILLE(name) KBD_KEY_ENTRY(BRAILLE, name)
#define KBD_KEY_ROUTING(number) KBD_KEY_VALUE(ROUTING, (number))
typedef enum {
KBD_GROUP(SPECIAL) = 0 /* KBD_KEY_UNMAPPED must be all zeros */,
KBD_GROUP(LETTER),
KBD_GROUP(NUMBER),
KBD_GROUP(SYMBOL),
KBD_GROUP(ACTION),
KBD_GROUP(MEDIA),
KBD_GROUP(FUNCTION),
KBD_GROUP(MODIFIER),
KBD_GROUP(LOCK),
KBD_GROUP(KPNUMBER),
KBD_GROUP(KPSYMBOL),
KBD_GROUP(KPACTION),
KBD_GROUP(BRAILLE),
KBD_GROUP(ROUTING),
} KBD_KeyGroup;
typedef enum {
KBD_KEY(SPECIAL, Unmapped) = 0 /* KBD_KEY_UNMAPPED must be all zeros */,
KBD_KEY(SPECIAL, Ignore),
} KBD_SpecialKey;
typedef enum {
KBD_KEY(LETTER, A),
KBD_KEY(LETTER, B),
KBD_KEY(LETTER, C),
KBD_KEY(LETTER, D),
KBD_KEY(LETTER, E),
KBD_KEY(LETTER, F),
KBD_KEY(LETTER, G),
KBD_KEY(LETTER, H),
KBD_KEY(LETTER, I),
KBD_KEY(LETTER, J),
KBD_KEY(LETTER, K),
KBD_KEY(LETTER, L),
KBD_KEY(LETTER, M),
KBD_KEY(LETTER, N),
KBD_KEY(LETTER, O),
KBD_KEY(LETTER, P),
KBD_KEY(LETTER, Q),
KBD_KEY(LETTER, R),
KBD_KEY(LETTER, S),
KBD_KEY(LETTER, T),
KBD_KEY(LETTER, U),
KBD_KEY(LETTER, V),
KBD_KEY(LETTER, W),
KBD_KEY(LETTER, X),
KBD_KEY(LETTER, Y),
KBD_KEY(LETTER, Z),
} KBD_LetterKey;
typedef enum {
KBD_KEY(NUMBER, Zero),
KBD_KEY(NUMBER, One),
KBD_KEY(NUMBER, Two),
KBD_KEY(NUMBER, Three),
KBD_KEY(NUMBER, Four),
KBD_KEY(NUMBER, Five),
KBD_KEY(NUMBER, Six),
KBD_KEY(NUMBER, Seven),
KBD_KEY(NUMBER, Eight),
KBD_KEY(NUMBER, Nine),
} KBD_NumberKey;
typedef enum {
KBD_KEY(SYMBOL, Grave),
KBD_KEY(SYMBOL, Minus),
KBD_KEY(SYMBOL, Equals),
KBD_KEY(SYMBOL, Backslash),
KBD_KEY(SYMBOL, LeftBracket),
KBD_KEY(SYMBOL, RightBracket),
KBD_KEY(SYMBOL, Semicolon),
KBD_KEY(SYMBOL, Apostrophe),
KBD_KEY(SYMBOL, Europe2),
KBD_KEY(SYMBOL, Comma),
KBD_KEY(SYMBOL, Period),
KBD_KEY(SYMBOL, Slash),
KBD_KEY(SYMBOL, Space),
} KBD_SymbolKey;
typedef enum {
KBD_KEY(ACTION, Enter),
KBD_KEY(ACTION, Tab),
KBD_KEY(ACTION, Escape),
KBD_KEY(ACTION, Insert),
KBD_KEY(ACTION, DeleteBackward),
KBD_KEY(ACTION, DeleteForward),
KBD_KEY(ACTION, Home),
KBD_KEY(ACTION, End),
KBD_KEY(ACTION, PageUp),
KBD_KEY(ACTION, PageDown),
KBD_KEY(ACTION, ArrowUp),
KBD_KEY(ACTION, ArrowDown),
KBD_KEY(ACTION, ArrowLeft),
KBD_KEY(ACTION, ArrowRight),
KBD_KEY(ACTION, PrintScreen),
KBD_KEY(ACTION, SystemRequest),
KBD_KEY(ACTION, Pause),
KBD_KEY(ACTION, GuiLeft),
KBD_KEY(ACTION, GuiRight),
KBD_KEY(ACTION, Context),
KBD_KEY(ACTION, Help),
KBD_KEY(ACTION, Stop),
KBD_KEY(ACTION, Props),
KBD_KEY(ACTION, Front),
KBD_KEY(ACTION, Open),
KBD_KEY(ACTION, Find),
KBD_KEY(ACTION, Again),
KBD_KEY(ACTION, Undo),
KBD_KEY(ACTION, Copy),
KBD_KEY(ACTION, Paste),
KBD_KEY(ACTION, Cut),
KBD_KEY(ACTION, Power),
KBD_KEY(ACTION, Sleep),
KBD_KEY(ACTION, Wakeup),
KBD_KEY(ACTION, Menu),
KBD_KEY(ACTION, Select),
KBD_KEY(ACTION, Cancel),
KBD_KEY(ACTION, Clear),
KBD_KEY(ACTION, Prior),
KBD_KEY(ACTION, Return),
KBD_KEY(ACTION, Separator),
KBD_KEY(ACTION, Out),
KBD_KEY(ACTION, Oper),
KBD_KEY(ACTION, Clear_Again),
KBD_KEY(ACTION, CrSel_Props),
KBD_KEY(ACTION, ExSel),
} KBD_ActionKey;
typedef enum {
KBD_KEY(MEDIA, Mute),
KBD_KEY(MEDIA, VolumeDown),
KBD_KEY(MEDIA, VolumeUp),
KBD_KEY(MEDIA, Stop),
KBD_KEY(MEDIA, Play),
KBD_KEY(MEDIA, Record),
KBD_KEY(MEDIA, Pause),
KBD_KEY(MEDIA, PlayPause),
KBD_KEY(MEDIA, Previous),
KBD_KEY(MEDIA, Next),
KBD_KEY(MEDIA, Backward),
KBD_KEY(MEDIA, Forward),
KBD_KEY(MEDIA, Eject),
KBD_KEY(MEDIA, Close),
KBD_KEY(MEDIA, EjectClose),
} KBD_MediaKey;
typedef enum {
KBD_KEY(FUNCTION, F1),
KBD_KEY(FUNCTION, F2),
KBD_KEY(FUNCTION, F3),
KBD_KEY(FUNCTION, F4),
KBD_KEY(FUNCTION, F5),
KBD_KEY(FUNCTION, F6),
KBD_KEY(FUNCTION, F7),
KBD_KEY(FUNCTION, F8),
KBD_KEY(FUNCTION, F9),
KBD_KEY(FUNCTION, F10),
KBD_KEY(FUNCTION, F11),
KBD_KEY(FUNCTION, F12),
KBD_KEY(FUNCTION, F13),
KBD_KEY(FUNCTION, F14),
KBD_KEY(FUNCTION, F15),
KBD_KEY(FUNCTION, F16),
KBD_KEY(FUNCTION, F17),
KBD_KEY(FUNCTION, F18),
KBD_KEY(FUNCTION, F19),
KBD_KEY(FUNCTION, F20),
KBD_KEY(FUNCTION, F21),
KBD_KEY(FUNCTION, F22),
KBD_KEY(FUNCTION, F23),
KBD_KEY(FUNCTION, F24),
} KBD_FunctionKey;
typedef enum {
KBD_KEY(MODIFIER, ShiftLeft),
KBD_KEY(MODIFIER, ShiftRight),
KBD_KEY(MODIFIER, ControlLeft),
KBD_KEY(MODIFIER, ControlRight),
KBD_KEY(MODIFIER, AltLeft),
KBD_KEY(MODIFIER, AltRight),
} KBD_ModifierKey;
typedef enum {
KBD_KEY(LOCK, Capitals),
KBD_KEY(LOCK, Scroll),
KBD_KEY(LOCK, Numbers),
} KBD_LockKey;
typedef enum {
KBD_KEY(KPNUMBER, Zero),
KBD_KEY(KPNUMBER, One),
KBD_KEY(KPNUMBER, Two),
KBD_KEY(KPNUMBER, Three),
KBD_KEY(KPNUMBER, Four),
KBD_KEY(KPNUMBER, Five),
KBD_KEY(KPNUMBER, Six),
KBD_KEY(KPNUMBER, Seven),
KBD_KEY(KPNUMBER, Eight),
KBD_KEY(KPNUMBER, Nine),
KBD_KEY(KPNUMBER, A),
KBD_KEY(KPNUMBER, B),
KBD_KEY(KPNUMBER, C),
KBD_KEY(KPNUMBER, D),
KBD_KEY(KPNUMBER, E),
KBD_KEY(KPNUMBER, F),
} KBD_KPNumberKey;
typedef enum {
KBD_KEY(KPSYMBOL, DecimalSeparator),
KBD_KEY(KPSYMBOL, ThousandsSeparator),
KBD_KEY(KPSYMBOL, 00),
KBD_KEY(KPSYMBOL, 000),
KBD_KEY(KPSYMBOL, Plus),
KBD_KEY(KPSYMBOL, Minus),
KBD_KEY(KPSYMBOL, Multiply),
KBD_KEY(KPSYMBOL, Divide),
KBD_KEY(KPSYMBOL, Modulo),
KBD_KEY(KPSYMBOL, Equals),
KBD_KEY(KPSYMBOL, Less),
KBD_KEY(KPSYMBOL, Greater),
KBD_KEY(KPSYMBOL, PlusMinus),
KBD_KEY(KPSYMBOL, LeftParenthesis),
KBD_KEY(KPSYMBOL, RightParenthesis),
KBD_KEY(KPSYMBOL, LeftBrace),
KBD_KEY(KPSYMBOL, RightBrace),
KBD_KEY(KPSYMBOL, BitwiseAnd),
KBD_KEY(KPSYMBOL, BitwiseOr),
KBD_KEY(KPSYMBOL, BitwiseXor),
KBD_KEY(KPSYMBOL, BooleanNot),
KBD_KEY(KPSYMBOL, BooleanAnd),
KBD_KEY(KPSYMBOL, BooleanOr),
KBD_KEY(KPSYMBOL, BooleanXor),
KBD_KEY(KPSYMBOL, Space),
KBD_KEY(KPSYMBOL, Period),
KBD_KEY(KPSYMBOL, Comma),
KBD_KEY(KPSYMBOL, Colon),
KBD_KEY(KPSYMBOL, At),
KBD_KEY(KPSYMBOL, Number),
KBD_KEY(KPSYMBOL, CurrencyUnit),
KBD_KEY(KPSYMBOL, CurrencySubunit),
} KBD_KPSymbolKey;
typedef enum {
KBD_KEY(KPACTION, Enter),
KBD_KEY(KPACTION, Backspace),
KBD_KEY(KPACTION, Tab),
KBD_KEY(KPACTION, Clear),
KBD_KEY(KPACTION, ClearEntry),
KBD_KEY(KPACTION, MemoryClear),
KBD_KEY(KPACTION, MemoryStore),
KBD_KEY(KPACTION, MemoryRecall),
KBD_KEY(KPACTION, MemoryAdd),
KBD_KEY(KPACTION, MemorySubtract),
KBD_KEY(KPACTION, MemoryMultiply),
KBD_KEY(KPACTION, MemoryDivide),
KBD_KEY(KPACTION, Binary),
KBD_KEY(KPACTION, Octal),
KBD_KEY(KPACTION, Decimal),
KBD_KEY(KPACTION, Hexadecimal),
} KBD_KPActionKey;
typedef enum {
KBD_KEY(BRAILLE, Space),
KBD_KEY(BRAILLE, Dot1),
KBD_KEY(BRAILLE, Dot2),
KBD_KEY(BRAILLE, Dot3),
KBD_KEY(BRAILLE, Dot4),
KBD_KEY(BRAILLE, Dot5),
KBD_KEY(BRAILLE, Dot6),
KBD_KEY(BRAILLE, Dot7),
KBD_KEY(BRAILLE, Dot8),
KBD_KEY(BRAILLE, Backward),
KBD_KEY(BRAILLE, Forward),
} KBD_BrailleKey;
extern KEY_NAME_TABLES_DECLARATION(keyboard);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* BRLTTY_INCLUDED_KTB_KEYBOARD */