diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/third_party/libbrlapi/brlapi_keycodes.h | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/libbrlapi/brlapi_keycodes.h')
-rw-r--r-- | chromium/third_party/libbrlapi/brlapi_keycodes.h | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/chromium/third_party/libbrlapi/brlapi_keycodes.h b/chromium/third_party/libbrlapi/brlapi_keycodes.h new file mode 100644 index 00000000000..c49c9585f58 --- /dev/null +++ b/chromium/third_party/libbrlapi/brlapi_keycodes.h @@ -0,0 +1,191 @@ +/* + * libbrlapi - A library providing access to braille terminals for applications. + * + * Copyright (C) 2002-2020 by + * Samuel Thibault <Samuel.Thibault@ens-lyon.org> + * Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org> + * + * libbrlapi 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>. + */ + +/** \file + */ + +#ifndef BRLAPI_INCLUDED_KEYCODES +#define BRLAPI_INCLUDED_KEYCODES + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** \defgroup brlapi_keycodes Types and Defines for \e BrlAPI Key Codes + * + * Key codes are unsigned 64 bit integers. This 64-bit space is split into 3 + * parts: + * + * - bits 63-32 (BRLAPI_KEY_FLAGS_MASK), flags: bits 39-32 are standard X + * modifiers (shift, control, meta, ...). Other flags are used for some commands, + * see documentation of BRLAPI_KEY_FLG_* for their respective uses. + * - bits 31-29 (BRLAPI_KEY_TYPE_MASK), key type: either BRLAPI_KEY_TYPE_CMD for + * braille commands, or BRLAPI_KEY_TYPE_SYM for standard X keysyms. + * - bits 28-0 (BRLAPI_KEY_CODE_MASK), key code: for braille commands, see + * BRLAPI_KEY_CMD_* ; for standard X keysyms, this is the keysym value, see + * X11 documentation, a complete list is probably available on your system in + * /usr/include/X11/keysymdef.h + * + * The third part is itself split into two parts: a command number and a command + * value. The relative sizes of these parts vary according to the key type. + * + * For a braille command, bits 28-16 (BRLAPI_KEY_CMD_BLK_MASK) hold the braille + * command number, while bits 15-0 (BRLAPI_KEY_CMD_ARG_MASK) hold the command + * value. + * + * For a X keysym, if it is a unicode keysym (0x1uvwxyz), then the command + * number part is 0x1000000 and the value part is 0xuvwxyz. Else, the command + * part is held by bits 28-8 and the value part is held by bits 7-0. This + * permits to easily handle usual cases like 0x00xy (latin1), 0x01xy (latin2), + * XK_Backspace (0xff08, backspace), XK_Tab (0xff09, tab), ... + * + * For instance, if key == 0x0000000020010008, + * - (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_CMD, so it's a braille + * command + * - (key & BRLAPI_KEY_CMD_BLK_MASK) == BRLAPI_KEY_CMD_ROUTE, so it's the + * braille route command. + * - (key & BRLAPI_KEY_CMD_ARG_MASK) == 8, so the highlighted cell is the 9th + * one (cells are numbered from 0) + * - (key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during + * the command, and no particular flag applies to the command. + * + * if key == 0x000000010000FF09, + * - (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym + * - (key & BRLAPI_KEY_CODE_MASK) == XK_Tab, so it's the tab key. + * BRLAPI_KEY_SYM_TAB can also be used here, as well as a few other + * BRLAPI_KEY_SYM_* constants which are provided to avoid having to include + * X11/keysymdef.h + * - (key & BRLAPI_KEY_FLAGS_MASK) == BRLAPI_KEY_FLG_SHIFT, so the shift + * modifier was pressed during the command. + * + * in the X11 standard some keysyms are directly unicode, for instance if + * key == 0x0000000001001EA0, + * - (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym + * - (key & BRLAPI_KEY_SYM_UNICODE) != 0 so it's a unicode keysym, whose value + * is key & (BRLAPI_KEY_SYM_UNICODE-1). Of course, one can also consider + * (key & BRLAPI_KEY_CODE_MASK) == XK_Abelowdot + * - (key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during + * the command, and no particular flag applies to the command. + * + * The brlapi_expandKeyCode() function may be used for splitting key codes into + * these parts. + * @{ + */ +typedef uint64_t brlapi_keyCode_t; + +/** Define a brlapi_keyCode_t constant */ +#define BRLAPI_KEYCODE_C(value) UINT64_C(value) + +/** Hexadecimal print format for brlapi_keyCode_t */ +#define BRLAPI_PRIxKEYCODE PRIx64 + +/** Unsigned decimal print format for brlapi_keyCode_t */ +#define BRLAPI_PRIuKEYCODE PRIu64 + +/** Brlapi_keyCode_t's biggest value + * + * As defined in \c <stdint.h> */ +#define BRLAPI_KEY_MAX UINT64_C(0XFFFFFFFFFFFFFFFF) + +/** + * Mask for flags of brlapi_keyCode_t + */ +#define BRLAPI_KEY_FLAGS_MASK UINT64_C(0XFFFFFFFF00000000) +/** Shift for flags of brlapi_keyCode_t */ +#define BRLAPI_KEY_FLAGS_SHIFT 32 + +#define BRLAPI_KEY_FLG(v) ((brlapi_keyCode_t)(v) << BRLAPI_KEY_FLAGS_SHIFT) +/** Standard X modifiers */ +/** Mod1 modifier (AKA meta) */ +#define BRLAPI_KEY_FLG_MOD1 BRLAPI_KEY_FLG(0x00000008) +/** Mod2 modifier (usually numlock) */ +#define BRLAPI_KEY_FLG_MOD2 BRLAPI_KEY_FLG(0x00000010) +/** Mod3 modifier */ +#define BRLAPI_KEY_FLG_MOD3 BRLAPI_KEY_FLG(0x00000020) +/** Mod4 modifier */ +#define BRLAPI_KEY_FLG_MOD4 BRLAPI_KEY_FLG(0x00000040) +/** Mod5 modifier (usually Alt-Gr) */ +#define BRLAPI_KEY_FLG_MOD5 BRLAPI_KEY_FLG(0x00000080) + + +/** + * Mask for type of brlapi_keyCode_t + */ +#define BRLAPI_KEY_TYPE_MASK UINT64_C(0X00000000E0000000) +/** Shift for type of brlapi_keyCode_t */ +#define BRLAPI_KEY_TYPE_SHIFT 29 +/** Braille command brlapi_keyCode_t */ +#define BRLAPI_KEY_TYPE_CMD UINT64_C(0X0000000020000000) +/** X Keysym brlapi_keyCode_t */ +#define BRLAPI_KEY_TYPE_SYM UINT64_C(0X0000000000000000) + +/** + * Mask for code of brlapi_keyCode_t + */ +#define BRLAPI_KEY_CODE_MASK UINT64_C(0X000000001FFFFFFF) +/** Shift for code of brlapi_keyCode_t */ +#define BRLAPI_KEY_CODE_SHIFT 0 + +/** Mask for braille command type */ +#define BRLAPI_KEY_CMD_BLK_MASK UINT64_C(0X1FFF0000) +/** Shift for braille command type */ +#define BRLAPI_KEY_CMD_BLK_SHIFT 16 +/** Mask for braille command value */ +#define BRLAPI_KEY_CMD_ARG_MASK UINT64_C(0X0000FFFF) +/** Shift for braille command value */ +#define BRLAPI_KEY_CMD_ARG_SHIFT 0 +#define BRLAPI_KEY_CMD(v) ((v) << BRLAPI_KEY_CMD_BLK_SHIFT) + +/** Standard X keysyms */ +#define BRLAPI_KEY_SYM_BACKSPACE UINT64_C(0X0000FF08) +#define BRLAPI_KEY_SYM_TAB UINT64_C(0X0000FF09) +#define BRLAPI_KEY_SYM_LINEFEED UINT64_C(0X0000FF0D) +#define BRLAPI_KEY_SYM_ESCAPE UINT64_C(0X0000FF1B) +#define BRLAPI_KEY_SYM_HOME UINT64_C(0X0000FF50) +#define BRLAPI_KEY_SYM_LEFT UINT64_C(0X0000FF51) +#define BRLAPI_KEY_SYM_UP UINT64_C(0X0000FF52) +#define BRLAPI_KEY_SYM_RIGHT UINT64_C(0X0000FF53) +#define BRLAPI_KEY_SYM_DOWN UINT64_C(0X0000FF54) +#define BRLAPI_KEY_SYM_PAGE_UP UINT64_C(0X0000FF55) +#define BRLAPI_KEY_SYM_PAGE_DOWN UINT64_C(0X0000FF56) +#define BRLAPI_KEY_SYM_END UINT64_C(0X0000FF57) +#define BRLAPI_KEY_SYM_INSERT UINT64_C(0X0000FF63) +#define BRLAPI_KEY_SYM_FUNCTION UINT64_C(0X0000FFBE) +#define BRLAPI_KEY_SYM_DELETE UINT64_C(0X0000FFFF) +#define BRLAPI_KEY_SYM_UNICODE UINT64_C(0X01000000) + +/** + * Flag for a raw keycode press vs release + * + * When brlapi_enterTtyMode() has been called with a driver name, + * brlapi_readKey() and brlapi_readKeyWithTimeout() will return + * driver-specific key codes except for the common BRLAPI_DRV_KEY_PRESS flag + * which indicates that it's a key press (as opposed to a release) event. + */ +#define BRLAPI_DRV_KEY_PRESS BRLAPI_KEYCODE_C(0X8000000000000000) + +/** @} */ + +#include "brlapi_constants.h" + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLAPI_INCLUDED_KEYCODES */ |