blob: 534aa156021f76cf9f25a67bf91b3b063d6cec95 [file]
#ifndef BRLTTY_INCLUDED_HID_BRLDEFS
#define BRLTTY_INCLUDED_HID_BRLDEFS
#include "third_party/brltty/Headers/hid_defs.h"
#include "third_party/brltty/Headers/ktb_types.h"
#define MAX_INPUT_SIZE 0XFF
#define MAX_OUTPUT_SIZE 0XFF
#define MAX_USAGE_COUNT 0xFF
#define MAXIMUM_KEY_VALUE 0XFF
#define KEYS_BITMASK(name) BITMASK(name, (MAXIMUM_KEY_VALUE + 1), int)
// Enum of Key values that are used by the KEYS_BITMASK in order to track
// which keys are currently pressed. The specific values are meaningless and
// only serve as a temporary identifier in the input parsing logic.
typedef enum {
HID_KEY_Dot1 = 1,
HID_KEY_Dot2,
HID_KEY_Dot3,
HID_KEY_Dot4,
HID_KEY_Dot5,
HID_KEY_Dot6,
HID_KEY_Dot7,
HID_KEY_Dot8,
HID_KEY_Space,
HID_KEY_SpaceLeft,
HID_KEY_SpaceRight,
HID_KEY_PanLeft,
HID_KEY_PanRight,
HID_KEY_DPadUp,
HID_KEY_DPadDown,
HID_KEY_DPadLeft,
HID_KEY_DPadRight,
HID_KEY_DPadCenter,
HID_KEY_RockerUp,
HID_KEY_RockerDown,
HID_KEY_RockerPress,
HID_KEY_JoystickCenter,
HID_KEY_JoystickUp,
HID_KEY_JoystickDown,
HID_KEY_JoystickLeft,
HID_KEY_JoystickRight,
HID_KEY_ROUTING,
} HID_Keys;
// Maps from official Braille Display HID usages to the custom Key enum.
int KEY_MAP[][2] = {
{HID_USG_BRL_KeyboardDot1, HID_KEY_Dot1},
{HID_USG_BRL_KeyboardDot2, HID_KEY_Dot2},
{HID_USG_BRL_KeyboardDot3, HID_KEY_Dot3},
{HID_USG_BRL_KeyboardDot4, HID_KEY_Dot4},
{HID_USG_BRL_KeyboardDot5, HID_KEY_Dot5},
{HID_USG_BRL_KeyboardDot6, HID_KEY_Dot6},
{HID_USG_BRL_KeyboardDot7, HID_KEY_Dot7},
{HID_USG_BRL_KeyboardDot8, HID_KEY_Dot8},
{HID_USG_BRL_KeyboardSpace, HID_KEY_Space},
{HID_USG_BRL_KeyboardLeftSpace, HID_KEY_SpaceLeft},
{HID_USG_BRL_KeyboardRightSpace, HID_KEY_SpaceRight},
{HID_USG_BRL_PanLeft, HID_KEY_PanLeft},
{HID_USG_BRL_PanRight, HID_KEY_PanRight},
{HID_USG_BRL_DPadUp, HID_KEY_DPadUp},
{HID_USG_BRL_DPadDown, HID_KEY_DPadDown},
{HID_USG_BRL_DPadLeft, HID_KEY_DPadLeft},
{HID_USG_BRL_DPadRight, HID_KEY_DPadRight},
{HID_USG_BRL_DPadCenter, HID_KEY_DPadCenter},
{HID_USG_BRL_RockerUp, HID_KEY_RockerUp},
{HID_USG_BRL_RockerDown, HID_KEY_RockerDown},
{HID_USG_BRL_RockerPress, HID_KEY_RockerPress},
{HID_USG_BRL_JoystickCenter, HID_KEY_JoystickCenter},
{HID_USG_BRL_JoystickUp, HID_KEY_JoystickUp},
{HID_USG_BRL_JoystickDown, HID_KEY_JoystickDown},
{HID_USG_BRL_JoystickLeft, HID_KEY_JoystickLeft},
{HID_USG_BRL_JoystickRight, HID_KEY_JoystickRight},
// Router keys are handled separately.
};
int KEY_MAP_COUNT = sizeof(KEY_MAP) / sizeof(KEY_MAP[0]);
typedef enum { HID_GRP_NavigationKeys = 0, HID_GRP_RoutingKeys } HID_KEYGroup;
// Maps from the Key enum to a textual Key name used by the HID.ktb keytable.
static const KeyNameEntry keyNameTable[] = {
{.value.number = HID_KEY_Dot1, .name = "Dot1"},
{.value.number = HID_KEY_Dot2, .name = "Dot2"},
{.value.number = HID_KEY_Dot3, .name = "Dot3"},
{.value.number = HID_KEY_Dot4, .name = "Dot4"},
{.value.number = HID_KEY_Dot5, .name = "Dot5"},
{.value.number = HID_KEY_Dot6, .name = "Dot6"},
{.value.number = HID_KEY_Dot7, .name = "Dot7"},
{.value.number = HID_KEY_Dot8, .name = "Dot8"},
{.value.number = HID_KEY_Space, .name = "Space"},
{.value.number = HID_KEY_SpaceLeft, .name = "SpaceLeft"},
{.value.number = HID_KEY_SpaceRight, .name = "SpaceRight"},
{.value.number = HID_KEY_PanLeft, .name = "PanLeft"},
{.value.number = HID_KEY_PanRight, .name = "PanRight"},
{.value.number = HID_KEY_DPadUp, .name = "DPadUp"},
{.value.number = HID_KEY_DPadDown, .name = "DPadDown"},
{.value.number = HID_KEY_DPadLeft, .name = "DPadLeft"},
{.value.number = HID_KEY_DPadRight, .name = "DPadRight"},
{.value.number = HID_KEY_DPadCenter, .name = "DPadCenter"},
{.value.number = HID_KEY_RockerUp, .name = "RockerUp"},
{.value.number = HID_KEY_RockerDown, .name = "RockerDown"},
{.value.number = HID_KEY_RockerPress, .name = "RockerPress"},
{.value.number = HID_KEY_JoystickCenter, .name = "JoystickCenter"},
{.value.number = HID_KEY_JoystickUp, .name = "JoystickUp"},
{.value.number = HID_KEY_JoystickDown, .name = "JoystickDown"},
{.value.number = HID_KEY_JoystickLeft, .name = "JoystickLeft"},
{.value.number = HID_KEY_JoystickRight, .name = "JoystickRight"},
{.value = {.group = HID_GRP_RoutingKeys, .number = KTB_KEY_ANY},
.name = "RoutingKey"},
{.name = NULL}};
static const KeyNameEntry *const keyNameTables_HID[] = {keyNameTable, NULL};
static const KeyTableDefinition keyTableDefinition_HID = {
.bindings = "HID", .names = keyNameTables_HID};
#endif /* BRLTTY_INCLUDED_HID_BRLDEFS */