blob: 8bce24ce9039512e4fe98e49673022f6b17e1a23 [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>.
*/
#include "prologue.h"
#include "ktb_cmds.h"
#include "brl_cmds.h"
static const CommandListEntry commandList_modes[] = {
{ .code = BRL_CMD_HELP },
{ .code = BRL_CMD_LEARN },
{ .code = BRL_CMD_PREFMENU },
{ .code = BRL_CMD_INFO },
{ .code = BRL_CMD_DISPMD },
{ .code = BRL_CMD_FREEZE },
{ .code = BRL_CMD_BLK(DESCCHAR) },
{ .code = BRL_CMD_TIME },
{ .code = BRL_CMD_INDICATORS },
{ .code = BRL_CMD_BLK(CONTEXT) },
};
static const CommandListEntry commandList_cursor[] = {
{ .code = BRL_CMD_HOME },
{ .code = BRL_CMD_BACK },
{ .code = BRL_CMD_RETURN },
{ .code = BRL_CMD_BLK(ROUTE) },
{ .code = BRL_CMD_BLK(ROUTE_LINE) },
{ .code = BRL_CMD_CSRJMP_VERT },
{ .code = BRL_CMD_ROUTE_CURR_LOCN },
};
static const CommandListEntry commandList_vertical[] = {
{ .code = BRL_CMD_LNUP },
{ .code = BRL_CMD_LNDN },
{ .code = BRL_CMD_TOP },
{ .code = BRL_CMD_BOT },
{ .code = BRL_CMD_TOP_LEFT },
{ .code = BRL_CMD_BOT_LEFT },
{ .code = BRL_CMD_PRDIFLN },
{ .code = BRL_CMD_NXDIFLN },
{ .code = BRL_CMD_ATTRUP },
{ .code = BRL_CMD_ATTRDN },
{ .code = BRL_CMD_PRPGRPH },
{ .code = BRL_CMD_NXPGRPH },
{ .code = BRL_CMD_PRPROMPT },
{ .code = BRL_CMD_NXPROMPT },
{ .code = BRL_CMD_WINUP },
{ .code = BRL_CMD_WINDN },
{ .code = BRL_CMD_BLK(PRINDENT) },
{ .code = BRL_CMD_BLK(NXINDENT) },
{ .code = BRL_CMD_BLK(PRDIFCHAR) },
{ .code = BRL_CMD_BLK(NXDIFCHAR) },
{ .code = BRL_CMD_BLK(GOTOLINE) },
};
static const CommandListEntry commandList_horizontal[] = {
{ .code = BRL_CMD_FWINLT },
{ .code = BRL_CMD_FWINRT },
{ .code = BRL_CMD_FWINLTSKIP },
{ .code = BRL_CMD_FWINRTSKIP },
{ .code = BRL_CMD_PRNBWIN},
{ .code = BRL_CMD_NXNBWIN},
{ .code = BRL_CMD_LNBEG },
{ .code = BRL_CMD_LNEND },
{ .code = BRL_CMD_CHRLT },
{ .code = BRL_CMD_CHRRT },
{ .code = BRL_CMD_HWINLT },
{ .code = BRL_CMD_HWINRT },
{ .code = BRL_CMD_BLK(SETLEFT) },
};
static const CommandListEntry commandList_window[] = {
{ .code = BRL_CMD_GUI_TITLE },
{ .code = BRL_CMD_GUI_BRL_ACTIONS },
{ .code = BRL_CMD_GUI_HOME },
{ .code = BRL_CMD_GUI_BACK },
{ .code = BRL_CMD_GUI_DEV_SETTINGS },
{ .code = BRL_CMD_GUI_DEV_OPTIONS },
{ .code = BRL_CMD_GUI_APP_LIST },
{ .code = BRL_CMD_GUI_APP_MENU },
{ .code = BRL_CMD_GUI_APP_ALERTS },
{ .code = BRL_CMD_GUI_AREA_ACTV },
{ .code = BRL_CMD_GUI_AREA_PREV },
{ .code = BRL_CMD_GUI_AREA_NEXT },
{ .code = BRL_CMD_GUI_ITEM_FRST },
{ .code = BRL_CMD_GUI_ITEM_PREV },
{ .code = BRL_CMD_GUI_ITEM_NEXT },
{ .code = BRL_CMD_GUI_ITEM_LAST },
};
static const CommandListEntry commandList_clipboard[] = {
{ .code = BRL_CMD_BLK(CLIP_NEW) },
{ .code = BRL_CMD_BLK(CLIP_ADD) },
{ .code = BRL_CMD_BLK(COPY_LINE) },
{ .code = BRL_CMD_BLK(COPY_RECT) },
{ .code = BRL_CMD_BLK(CLIP_COPY) },
{ .code = BRL_CMD_BLK(CLIP_APPEND) },
{ .code = BRL_CMD_PASTE },
{ .code = BRL_CMD_BLK(PASTE_HISTORY) },
{ .code = BRL_CMD_PRSEARCH },
{ .code = BRL_CMD_NXSEARCH },
{ .code = BRL_CMD_CLIP_SAVE },
{ .code = BRL_CMD_CLIP_RESTORE },
};
static const CommandListEntry commandList_text[] = {
{ .code = BRL_CMD_TXTSEL_CLEAR },
{ .code = BRL_CMD_BLK(TXTSEL_SET) },
{ .code = BRL_CMD_BLK(TXTSEL_START) },
{ .code = BRL_CMD_TXTSEL_ALL },
{ .code = BRL_CMD_HOST_COPY },
{ .code = BRL_CMD_HOST_CUT },
{ .code = BRL_CMD_HOST_PASTE },
};
static const CommandListEntry commandList_feature[] = {
{ .code = BRL_CMD_TOUCH_NAV },
{ .code = BRL_CMD_AUTOREPEAT },
{ .code = BRL_CMD_SIXDOTS },
{ .code = BRL_CMD_CONTRACTED },
{ .code = BRL_CMD_COMPBRL6 },
{ .code = BRL_CMD_SKPIDLNS },
{ .code = BRL_CMD_SKPBLNKWINS },
{ .code = BRL_CMD_SLIDEWIN },
{ .code = BRL_CMD_CSRTRK },
{ .code = BRL_CMD_CSRSIZE },
{ .code = BRL_CMD_CSRVIS },
{ .code = BRL_CMD_CSRHIDE },
{ .code = BRL_CMD_CSRBLINK },
{ .code = BRL_CMD_ATTRVIS },
{ .code = BRL_CMD_ATTRBLINK },
{ .code = BRL_CMD_CAPBLINK },
{ .code = BRL_CMD_TUNES },
{ .code = BRL_CMD_BLK(SET_TEXT_TABLE) },
{ .code = BRL_CMD_BLK(SET_ATTRIBUTES_TABLE) },
{ .code = BRL_CMD_BLK(SET_CONTRACTION_TABLE) },
{ .code = BRL_CMD_BLK(SET_KEYBOARD_TABLE) },
{ .code = BRL_CMD_BLK(SET_LANGUAGE_PROFILE) },
};
static const CommandListEntry commandList_menu[] = {
{ .code = BRL_CMD_MENU_PREV_ITEM },
{ .code = BRL_CMD_MENU_NEXT_ITEM },
{ .code = BRL_CMD_MENU_FIRST_ITEM },
{ .code = BRL_CMD_MENU_LAST_ITEM },
{ .code = BRL_CMD_MENU_PREV_SETTING },
{ .code = BRL_CMD_MENU_NEXT_SETTING },
{ .code = BRL_CMD_MENU_PREV_LEVEL },
{ .code = BRL_CMD_PREFSAVE },
{ .code = BRL_CMD_PREFLOAD },
{ .code = BRL_CMD_PREFRESET },
};
static const CommandListEntry commandList_say[] = {
{ .code = BRL_CMD_MUTE },
{ .code = BRL_CMD_SAY_LINE },
{ .code = BRL_CMD_SAY_ALL },
{ .code = BRL_CMD_SAY_ABOVE },
{ .code = BRL_CMD_SAY_BELOW },
{ .code = BRL_CMD_SPKHOME },
{ .code = BRL_CMD_SAY_SOFTER },
{ .code = BRL_CMD_SAY_LOUDER },
{ .code = BRL_CMD_SAY_SLOWER },
{ .code = BRL_CMD_SAY_FASTER },
{ .code = BRL_CMD_SAY_LOWER },
{ .code = BRL_CMD_SAY_HIGHER },
{ .code = BRL_CMD_AUTOSPEAK },
{ .code = BRL_CMD_ASPK_SEL_LINE },
{ .code = BRL_CMD_ASPK_SEL_CHAR },
{ .code = BRL_CMD_ASPK_INS_CHARS },
{ .code = BRL_CMD_ASPK_DEL_CHARS },
{ .code = BRL_CMD_ASPK_REP_CHARS },
{ .code = BRL_CMD_ASPK_CMP_WORDS },
{ .code = BRL_CMD_ASPK_INDENT },
};
static const CommandListEntry commandList_speak[] = {
{ .code = BRL_CMD_BLK(ROUTE_SPEECH) },
{ .code = BRL_CMD_SPEAK_CURR_CHAR },
{ .code = BRL_CMD_DESC_CURR_CHAR },
{ .code = BRL_CMD_SPEAK_PREV_CHAR },
{ .code = BRL_CMD_SPEAK_NEXT_CHAR },
{ .code = BRL_CMD_SPEAK_FRST_CHAR },
{ .code = BRL_CMD_SPEAK_LAST_CHAR },
{ .code = BRL_CMD_SPEAK_CURR_WORD },
{ .code = BRL_CMD_SPELL_CURR_WORD },
{ .code = BRL_CMD_SPEAK_PREV_WORD },
{ .code = BRL_CMD_SPEAK_NEXT_WORD },
{ .code = BRL_CMD_SPEAK_CURR_LINE },
{ .code = BRL_CMD_SPEAK_PREV_LINE },
{ .code = BRL_CMD_SPEAK_NEXT_LINE },
{ .code = BRL_CMD_SPEAK_FRST_LINE },
{ .code = BRL_CMD_SPEAK_LAST_LINE },
{ .code = BRL_CMD_SPEAK_INDENT },
{ .code = BRL_CMD_SPEAK_CURR_LOCN },
{ .code = BRL_CMD_SHOW_CURR_LOCN },
};
static const CommandListEntry commandList_input[] = {
{ .code = BRL_CMD_BLK(PASSDOTS) },
{ .code = BRL_CMD_BLK(PASSCHAR) },
{ .code = BRL_CMD_KEY(BACKSPACE) },
{ .code = BRL_CMD_KEY(ENTER) },
{ .code = BRL_CMD_KEY(TAB) },
{ .code = BRL_CMD_KEY(CURSOR_LEFT) },
{ .code = BRL_CMD_KEY(CURSOR_RIGHT) },
{ .code = BRL_CMD_KEY(CURSOR_UP) },
{ .code = BRL_CMD_KEY(CURSOR_DOWN) },
{ .code = BRL_CMD_KEY(PAGE_UP) },
{ .code = BRL_CMD_KEY(PAGE_DOWN) },
{ .code = BRL_CMD_KEY(HOME) },
{ .code = BRL_CMD_KEY(END) },
{ .code = BRL_CMD_KEY(INSERT) },
{ .code = BRL_CMD_KEY(DELETE) },
{ .code = BRL_CMD_UNSTICK },
{ .code = BRL_CMD_UPPER },
{ .code = BRL_CMD_SHIFT },
{ .code = BRL_CMD_CONTROL },
{ .code = BRL_CMD_META },
{ .code = BRL_CMD_ALTGR },
{ .code = BRL_CMD_GUI },
{ .code = BRL_CMD_KEY(ESCAPE) },
{ .code = BRL_CMD_KEY(FUNCTION) },
{ .code = BRL_CMD_BLK(SWITCHVT) },
{ .code = BRL_CMD_SWITCHVT_PREV },
{ .code = BRL_CMD_SWITCHVT_NEXT },
{ .code = BRL_CMD_BLK(SELECTVT) },
{ .code = BRL_CMD_SELECTVT_PREV },
{ .code = BRL_CMD_SELECTVT_NEXT },
{ .code = BRL_CMD_BRLKBD },
{ .code = BRL_CMD_BRLUCDOTS },
};
static const CommandListEntry commandList_special[] = {
{ .code = BRL_CMD_BLK(SETMARK) },
{ .code = BRL_CMD_BLK(GOTOMARK) },
{ .code = BRL_CMD_REFRESH },
{ .code = BRL_CMD_BLK(REFRESH_LINE) },
{ .code = BRL_CMD_RESTARTBRL },
{ .code = BRL_CMD_BRL_STOP },
{ .code = BRL_CMD_BRL_START },
{ .code = BRL_CMD_RESTARTSPEECH },
{ .code = BRL_CMD_SPK_STOP },
{ .code = BRL_CMD_SPK_START },
{ .code = BRL_CMD_SCR_STOP },
{ .code = BRL_CMD_SCR_START },
};
static const CommandListEntry commandList_internal[] = {
{ .code = BRL_CMD_NOOP },
{ .code = BRL_CMD_OFFLINE },
{ .code = BRL_CMD_BLK(ALERT) },
{ .code = BRL_CMD_BLK(PASSXT) },
{ .code = BRL_CMD_BLK(PASSAT) },
{ .code = BRL_CMD_BLK(PASSPS2) },
{ .code = BRL_CMD_BLK(TOUCH_AT) },
{ .code = BRL_CMD_BLK(MACRO) },
{ .code = BRL_CMD_BLK(HOSTCMD) },
};
#define COMMAND_LIST(name) .commands = { \
.table = commandList_##name, \
.count = ARRAY_COUNT(commandList_##name), \
}
const CommandGroupEntry commandGroupTable[] = {
{ COMMAND_LIST(modes),
.after = commandGroupHook_hotkeys,
.name = "Special Modes"
},
{ COMMAND_LIST(cursor),
.name = "Cursor Functions"
},
{ COMMAND_LIST(vertical),
.name = "Vertical Navigation"
},
{ COMMAND_LIST(horizontal),
.name = "Horizontal Navigation"
},
{ COMMAND_LIST(window),
.name = "Window Navigation"
},
{ COMMAND_LIST(clipboard),
.name = "Clipboard Functions"
},
{ COMMAND_LIST(text),
.name = "Text Selection and the Host Clipboard"
},
{ COMMAND_LIST(feature),
.name = "Configuration Functions"
},
{ COMMAND_LIST(menu),
.name = "Menu Operations"
},
{ COMMAND_LIST(say),
.name = "Speech Functions"
},
{ COMMAND_LIST(speak),
.name = "Speech Navigation"
},
{ COMMAND_LIST(input),
.before = commandGroupHook_keyboardFunctions,
.name = "Keyboard Input"
},
{ COMMAND_LIST(special),
.name = "Special Functions"
},
{ COMMAND_LIST(internal),
.name = "Internal Functions"
},
};
const unsigned char commandGroupCount = ARRAY_COUNT(commandGroupTable);