blob: 198bf289af22735a6fa22732e58c6d94d725d44f [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_MD_BRLDEFS
#define BRLTTY_INCLUDED_MD_BRLDEFS
typedef union {
unsigned char bytes[1];
struct {
unsigned char soh;
unsigned char stx;
unsigned char code;
unsigned char length;
unsigned char etx;
union {
unsigned char bytes[0XFF];
struct {
unsigned char key;
} navigationKey;
struct {
unsigned char key;
} routingPress;
struct {
unsigned char key;
} routingRelease;
struct {
unsigned char isChord;
unsigned char dots;
unsigned char ascii;
} brailleKey;
struct {
unsigned char textCellCount;
unsigned char statusCellCount;
unsigned char dotsPerCell;
unsigned char haveRoutingKeys;
unsigned char majorVersion;
unsigned char minorVersion;
} identity;
} data;
/* Declare the checksum bytes here to ensure that the size is correct
* even though the actual checksum is just after the last data byte.
*/
unsigned char checksum[2];
} PACKED fields;
} MD_Packet;
typedef enum {
MD_CODE_WRITE_ALL = 0,
MD_CODE_WRITE_STATUS = 1,
MD_CODE_WRITE_TEXT = 2,
MD_CODE_WRITE_LCD = 5,
MD_CODE_NAVIGATION_KEY = 16,
MD_CODE_ROUTING_PRESS = 17,
MD_CODE_ROUTING_RELEASE = 18,
MD_CODE_BRAILLE_KEY = 21,
MD_CODE_IDENTIFY = 36,
MD_CODE_IDENTITY = 37,
MD_CODE_ACKNOWLEDGE = 127,
} MD_PacketCode;
typedef enum {
MD_NAV_F1 = 0X01,
MD_NAV_F2 = 0X02,
MD_NAV_F3 = 0X03,
MD_NAV_F4 = 0X04,
MD_NAV_F5 = 0X05,
MD_NAV_F6 = 0X06,
MD_NAV_F7 = 0X07,
MD_NAV_F8 = 0X08,
MD_NAV_F9 = 0X09,
MD_NAV_F10 = 0X0A,
MD_NAV_LEFT = 0X0B,
MD_NAV_UP = 0X0C,
MD_NAV_RIGHT = 0X0D,
MD_NAV_DOWN = 0X0E,
MD_NAV_MASK_KEY = 0X0F,
MD_NAV_SHIFT = 0X10,
MD_NAV_LONG = 0X20,
MD_NAV_MASK_MOD = 0X30,
MD_NAV_SHIFT_PRESS = 0X3F,
MD_NAV_SHIFT_RELEASE = 0X40,
} MD_NavigationKey;
typedef enum {
MD_BRL_DOT1 = 0,
MD_BRL_DOT2 = 1,
MD_BRL_DOT3 = 2,
MD_BRL_DOT4 = 3,
MD_BRL_DOT5 = 4,
MD_BRL_DOT6 = 5,
MD_BRL_DOT7 = 6,
MD_BRL_DOT8 = 7,
MD_BRL_SPACE = 8,
} MD_BrailleKey;
typedef enum {
MD_ROUTING_FIRST = 0X01,
MD_ROUTING_MASK = 0X7F,
MD_ROUTING_SHIFT = 0X80,
} MD_RoutingKey;
typedef enum {
MD_GRP_NAV,
MD_GRP_BRL,
MD_GRP_RK,
MD_GRP_SK,
} MD_KeyGroup;
#endif /* BRLTTY_INCLUDED_MD_BRLDEFS */