###############################################################################
# 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>.
###############################################################################

title Braille Note

bind Previous FWINLT
bind Next FWINRT
bind Back LNUP
bind Advance LNDN
bind Previous+Back LNBEG
bind Next+Advance LNEND
bind Previous+Advance TOP_LEFT
bind Previous+Next BOT_LEFT
bind Back+Advance BACK
bind Back+Next CSRTRK

bind RoutingKey ROUTE

bind Dot1 CHRLT
bind Dot1+Dot2 HWINLT
bind Dot2 FWINLT
bind Dot2+Dot3 FWINLTSKIP
bind Dot3 LNBEG
bind Dot1+Dot3 LNUP
bind Dot1+Dot2+Dot3 TOP_LEFT
bind Dot4 CHRRT
bind Dot4+Dot5 HWINRT
bind Dot5 FWINRT
bind Dot5+Dot6 FWINRTSKIP
bind Dot6 LNEND
bind Dot4+Dot6 LNDN
bind Dot4+Dot5+Dot6 BOT_LEFT
bind Dot1+Dot4 TOP
bind Dot2+Dot5 HOME
bind Dot3+Dot6 BOT
bind Dot1+Dot4+Dot5 PRDIFLN
bind Dot2+Dot5+Dot6 NXDIFLN
bind Dot1+Dot2+Dot4 PRSEARCH
bind Dot2+Dot3+Dot5 NXSEARCH
bind Dot1+Dot2+Dot5 ATTRUP
bind Dot2+Dot3+Dot6 ATTRDN
bind Dot2+Dot4 CONTEXT+PRINDENT
bind Dot3+Dot5 CONTEXT+NXINDENT
bind Dot2+Dot4+Dot5 WINUP
bind Dot3+Dot5+Dot6 WINDN

bind Space HOME
bind Space+Dot1+Dot4+Dot6 NOOP # acknowledge alarm
bind Space+Dot2+Dot3+Dot5 NOOP # go to task menu
bind Space+Dot1+Dot2+Dot3+Dot4+Dot5+Dot6 NOOP # go to main menu
bind Space+Dot1+Dot4 PREFMENU
bind Space+Dot1+Dot4+Dot5 PREFLOAD
bind Space+Dot1+Dot5 NOOP # exit current operation
bind Space+Dot1+Dot2+Dot5 NOOP # help for current operation
bind Space+Dot1+Dot2+Dot3 CONTEXT+SETLEFT
bind Space+Dot1+Dot3+Dot4 MUTE
bind Space+Dot1+Dot3+Dot4+Dot5 CONTEXT+default # navigation mode
bind Space+Dot1+Dot3+Dot5 NOOP # go to options menu
bind Space+Dot1+Dot2+Dot3+Dot4 PASTE
bind Space+Dot1+Dot2+Dot3+Dot5 NOOP # repeat current prompt
bind Space+Dot2+Dot3+Dot4 SAY_LINE
bind Space+Dot1+Dot3+Dot6 NOOP # uppercase for computer braille
bind Space+Dot2+Dot4+Dot5+Dot6 PREFSAVE
bind Space+Dot1+Dot3+Dot5+Dot6 NOOP # exit current operation
bind Space+Dot1+Dot2+Dot3+Dot5+Dot6 CONTEXT+CLIP_NEW
bind Space+Dot2+Dot4+Dot6 CONTEXT+CLIP_ADD
bind Space+Dot2+Dot3+Dot4+Dot5+Dot6 CONTEXT+COPY_RECT
bind Space+Dot1+Dot2+Dot4+Dot5+Dot6 CONTEXT+COPY_LINE
bind Space+Dot1+Dot2+Dot5+Dot6 CSRJMP_VERT
bind Space+Dot1+Dot4+Dot5+Dot6 LEARN
bind Space+Dot2+Dot3+Dot5+Dot6 KEY_TAB
bind Space+Dot2+Dot3 KEY_CURSOR_LEFT
bind Space+Dot5+Dot6 KEY_CURSOR_RIGHT
bind Space+Dot2+Dot5 KEY_CURSOR_UP
bind Space+Dot3+Dot6 KEY_CURSOR_DOWN
bind Space+Dot2 KEY_HOME
bind Space+Dot3 KEY_END
bind Space+Dot5 KEY_PAGE_UP
bind Space+Dot6 KEY_PAGE_DOWN
bind Space+Dot3+Dot5 KEY_INSERT
bind Space+Dot2+Dot5+Dot6 KEY_DELETE
bind Space+Dot2+Dot6 KEY_ESCAPE

bind Backspace KEY_BACKSPACE
bind Backspace+Dot1 DISPMD+on
bind Backspace+Dot1+Dot2 SKPBLNKWINS+off
bind Backspace+Dot1+Dot4+Dot5 CONTEXT+DESCCHAR
bind Backspace+Dot1+Dot2+Dot5 HELP
bind Backspace+Dot2+Dot4 SKPIDLNS+off
bind Backspace+Dot1+Dot3+Dot4 CONTEXT+SETMARK
bind Backspace+Dot2+Dot3+Dot4 INFO
bind Backspace+Dot2+Dot3+Dot4+Dot5 DISPMD+off
bind Backspace+Dot1+Dot2+Dot3+Dot6 SWITCHVT_PREV
bind Backspace+Dot2+Dot4+Dot5+Dot6 SLIDEWIN+off
bind Backspace+Dot2+Dot3+Dot5 SIXDOTS+on
bind Backspace+Dot2+Dot3+Dot6 SIXDOTS+off
bind Backspace+Dot1+Dot2+Dot3+Dot4+Dot5+Dot6 RESTARTSPEECH

bind Enter KEY_ENTER
bind Enter+Dot1 NOOP # decrease speech volume
bind Enter+Dot4 NOOP # increase speech volume
bind Enter+Dot2 NOOP # decrease speech pitch
bind Enter+Dot5 NOOP # increase speech pitch
bind Enter+Dot3 NOOP # decrease speech speed
bind Enter+Dot6 NOOP # increase speech speed
bind Enter+Dot1+Dot2 SKPBLNKWINS+on
bind Enter+Dot1+Dot4+Dot5 NOOP # display the date
bind Enter+Dot1+Dot2+Dot4 FREEZE
bind Enter+Dot1+Dot2+Dot5 NOOP # hear punctuation in current prompt
bind Enter+Dot2+Dot4 SKPIDLNS+on
bind Enter+Dot1+Dot3+Dot4 CONTEXT+GOTOMARK
bind Enter+Dot2+Dot3+Dot4 NOOP # spell name in current prompt
bind Enter+Dot2+Dot3+Dot4+Dot5 NOOP # display the time
bind Enter+Dot1+Dot2+Dot3+Dot6 SWITCHVT_NEXT
bind Enter+Dot2+Dot4+Dot5+Dot6 SLIDEWIN+on
bind Enter+Dot1+Dot2+Dot3+Dot4+Dot5+Dot6 RESTARTBRL

note To temporarily (for the next character) switch to an input mode,
note use [4] together with combinations of [3] and ]6].
note To permanently switch to an input mode,
note use [45] together with combinations of [3] and ]6].
note To turn on dot 7, add [3].  To turn on dot 8, add [6].
note To switch back to (n)avigation mode, use space+[1345].

hide on
bind Space+Dot4 CONTEXT+temporaryInput
bind Space+Dot4+Dot5 CONTEXT+persistentInput
bind Space+Dot4+Dot3 CONTEXT+temporaryInput7
bind Space+Dot4+Dot5+Dot3 CONTEXT+persistentInput7
bind Space+Dot4+Dot6 CONTEXT+temporaryInput8
bind Space+Dot4+Dot5+Dot6 CONTEXT+persistentInput8
bind Space+Dot4+Dot3+Dot6 CONTEXT+temporaryInput78
bind Space+Dot4+Dot5+Dot3+Dot6 CONTEXT+persistentInput78

context temporaryInput
include input.kti

context persistentInput Input Mode
include input.kti

context temporaryInput7
include input.kti
superimpose DOT7

context persistentInput7 Input Mode (dot 7)
include input.kti
superimpose DOT7

context temporaryInput8
include input.kti
superimpose DOT8

context persistentInput8 Input Mode (dot 8)
include input.kti
superimpose DOT8

context temporaryInput78
include input.kti
superimpose DOT7
superimpose DOT8

context persistentInput78 Input Mode (dots 7 and 8)
include input.kti
superimpose DOT7
superimpose DOT8
hide off

context DESCCHAR
bind RoutingKey DESCCHAR

context SETLEFT
bind RoutingKey SETLEFT

context CLIP_NEW
bind RoutingKey CLIP_NEW

context CLIP_ADD
bind RoutingKey CLIP_ADD

context COPY_RECT
bind RoutingKey COPY_RECT

context COPY_LINE
bind RoutingKey COPY_LINE

context SETMARK
bind RoutingKey SETMARK

context GOTOMARK
bind RoutingKey GOTOMARK

context PRINDENT
bind RoutingKey PRINDENT

context NXINDENT
bind RoutingKey NXINDENT

