###############################################################################
# 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 Frank Audiodata

note RoutingKey means any of the small keys just behind each of the text cells.
note From left to right:
note + The three convex keys to the left of the routing keys are: F1, F2, F3.
note + The three convex keys to the right of the routing keys are: F4, F5, F6.
note + The three concave keys at the left along the front are: K1, K2, K3.
note + The three concave keys in the middle along the front are: K4, K5, K6.
note + The three concave keys at the right along the front are: K7, K8, K9.

bind F1 HELP
bind F2 PREFMENU
bind F3 LEARN

bind F2+F1 PREFLOAD
bind F2+F3 PREFSAVE

bind F1+F3 INFO
bind F1+F2+F3 TIME

bind F4 CSRVIS
bind F5 CSRTRK
bind F6 SIXDOTS

bind F5+F4 ATTRVIS
bind F5+F6 DISPMD

bind F4+F6 AUTOREPEAT
bind F4+F5+F6 FREEZE

bind K4 FWINLT
bind K6 FWINRT
bind K4+K6 SKPBLNKWINS

bind K5+K4 LNBEG
bind K5+K6 LNEND

bind K5 HOME:BACK
bind K4+K5+K6 CSRJMP_VERT

bind K1+K4 HWINLT
bind K1+K6 HWINRT

bind K2+K4 FWINLTSKIP
bind K2+K6 FWINRTSKIP

bind K3+K4 PRNBWIN
bind K3+K6 NXNBWIN

bind K1+K5+K4 CHRLT
bind K1+K5+K6 CHRRT

bind K2+K5+K4 CLIP_RESTORE
bind K2+K5+K6 CLIP_SAVE

bind K3+K5+K4 PRSEARCH
bind K3+K5+K6 NXSEARCH

bind K7 LNUP
bind K9 LNDN
bind K7+K9 SKPIDLNS

bind K8+K7 TOP
bind K8+K9 BOT

bind K8 SAY_LINE:MUTE
bind K7+K8+K9 PASTE

bind K1+K7 PRPROMPT
bind K1+K9 NXPROMPT

bind K2+K7 PRDIFLN
bind K2+K9 NXDIFLN

bind K3+K7 PRPGRPH
bind K3+K9 NXPGRPH

bind K1+K8+K7 TOP_LEFT
bind K1+K8+K9 BOT_LEFT

bind K2+K8+K7 ATTRUP
bind K2+K8+K9 ATTRDN

bind K3+K8+K7 NOOP
bind K3+K8+K9 NOOP

bind K8+K2 AUTOSPEAK
bind K8+K1 SAY_SOFTER
bind K8+K3 SAY_LOUDER
bind K8+K2+K1 SAY_SLOWER
bind K8+K2+K3 SAY_FASTER

bind K8+K5 SPKHOME
bind K8+K4 SAY_ABOVE
bind K8+K6 SAY_BELOW

bind RoutingKey ROUTE
bind RoutingKey+RoutingKey CLIP_COPY

bind F1+RoutingKey CLIP_NEW
bind F6+RoutingKey COPY_LINE

bind F2+RoutingKey CLIP_APPEND
bind F5+RoutingKey COPY_RECT

bind F3+RoutingKey SETLEFT
bind F4+RoutingKey DESCCHAR

bind F4+F6+RoutingKey SWITCHVT
bind F4+F6+F1 SWITCHVT_PREV
bind F4+F6+F3 SWITCHVT_NEXT

bind F4+F5+RoutingKey SETMARK
bind F5+F6+RoutingKey GOTOMARK
bind F4+F5+F6+RoutingKey KEY_FUNCTION

bind K7+RoutingKey PRINDENT
bind K9+RoutingKey NXINDENT
bind K8+K7+RoutingKey PRDIFCHAR
bind K8+K9+RoutingKey NXDIFCHAR

bind SLIDER GOTOLINE+scaled


context menu
bind F4 MENU_PREV_ITEM
bind F6 MENU_NEXT_ITEM
bind F5+F4 MENU_FIRST_ITEM
bind F5+F6 MENU_LAST_ITEM
bind F5 MENU_NEXT_SETTING
bind F4+F6 MENU_PREV_SETTING
bind F4+F5+F6 MENU_PREV_LEVEL

