/*
 * 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 */
