blob: cd741aff06730ff251e96ee80751a99dcaa325de [file] [log] [blame] [edit]
/*
* 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_MM_BRLDEFS
#define BRLTTY_INCLUDED_MM_BRLDEFS
typedef enum {
MM_DEV_Pocket = 0X02,
MM_DEV_Smart16 = 0X11,
MM_DEV_Smart40 = 0X12,
} MM_DeviceIdentifier;
typedef struct {
unsigned char packetType;
unsigned char deviceIdentifier;
unsigned char majorVersion;
unsigned char minorVersion;
unsigned char lineCount;
unsigned char lineLength;
unsigned char reserved;
unsigned char portIdentifier;
char hardwareName[24];
} MM_IdentityPacket;
#define MM_MAXIMUM_LINE_LENGTH 80
#define MM_MAXIMUM_LINE_COUNT 1
#define MM_HEADER_ID1 0XFF
#define MM_HEADER_ID2 0XFF
#define MM_HEADER_NAK 0X00
#define MM_HEADER_ACK 0X01
typedef enum {
MM_CMD_QueryIdentity = 0X10,
MM_CMD_QueryLineSize = 0X11,
MM_CMD_StartDisplayMode = 0X20,
MM_CMD_EndDisplayMode = 0X28,
MM_CMD_SendBrailleData = 0X31,
MM_CMD_SendDisplayData = 0X32,
MM_CMD_KeyCombination = 0Xf0,
MM_CMD_ShiftPress = 0Xf2,
MM_CMD_ShiftRelease = 0Xf3
} MM_CommandCode;
typedef enum {
MM_BLINK_NO = 0,
MM_BLINK_SLOW = 1,
MM_BLINK_FAST = 2
} MM_BlinkMode;
typedef struct {
unsigned char id1;
unsigned char id2;
unsigned char code;
unsigned char subcode;
unsigned char lengthLow;
unsigned char lengthHigh;
} MM_CommandHeader;
typedef union {
unsigned char bytes[1];
struct {
MM_CommandHeader header;
union {
struct {
unsigned char blink;
unsigned char reserved;
} start;
struct {
unsigned char cells[MM_MAXIMUM_LINE_LENGTH * 2];
} send;
struct {
unsigned char group;
unsigned char value;
unsigned char shift;
} keys;
} data;
} fields;
} MM_CommandPacket;
typedef enum {
MM_SHIFT_F1 = 0,
MM_SHIFT_F4 = 1,
MM_SHIFT_CONTROL = 2,
MM_SHIFT_ALT = 3,
MM_SHIFT_SELECT = 4,
MM_SHIFT_READ = 5,
MM_SHIFT_F2 = 6,
MM_SHIFT_F3 = 7
} MM_ShiftKey;
typedef enum {
MM_DOT_8 = 0,
MM_DOT_6 = 1,
MM_DOT_5 = 2,
MM_DOT_4 = 3,
MM_DOT_7 = 4,
MM_DOT_3 = 5,
MM_DOT_2 = 6,
MM_DOT_1 = 7
} MM_DotKey;
typedef enum {
MM_EDIT_ESC = 0,
MM_EDIT_INF = 1,
MM_EDIT_BS = 2,
MM_EDIT_DEL = 3,
MM_EDIT_INS = 4,
MM_EDIT_CHANGE = 5,
MM_EDIT_OK = 6,
MM_EDIT_SET = 7
} MM_EditKey;
typedef enum {
MM_ARROW_UP = 0,
MM_ARROW_DOWN = 1,
MM_ARROW_LEFT = 2,
MM_ARROW_RIGHT = 3
} MM_ArrowKey;
typedef enum {
MM_DISPLAY_BACKWARD = 0,
MM_DISPLAY_FORWARD = 1,
MM_DISPLAY_LSCROLL = 2,
MM_DISPLAY_RSCROLL = 3
} MM_DisplayKey;
typedef enum {
MM_GRP_SHIFT = 0,
MM_GRP_DOT = 1,
MM_GRP_EDIT = 2,
MM_GRP_ARROW = 3,
MM_GRP_ROUTE = 4,
MM_GRP_ERROR = 5,
MM_GRP_DISPLAY = 6
} MM_KeyGroup;
#endif /* BRLTTY_INCLUDED_MM_BRLDEFS */