/* * 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-2021 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 . */ #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 */