###############################################################################
# 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-2010 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://mielke.cc/brltty/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

# This key subtable is for Papenmeier displays which have 13 front keys.
note The front surface layout is as follows:
note * The rectangular key at the center is named Shift.
note * The square keys immediately to its left and right are named Home and End.
note * The left and right bars are named Up and Down.
note * The four square keys at the very left are named: Dot7, Dot3, Dot2, Dot1.
note * The four square keys at the very right are named: Dot4, Dot5, Dot6, Dot8.

bind !Shift HOME
bind !Home TOP
bind !End BOT
bind !Up LNUP
bind !Down LNDN
bind Dot1 PRDIFLN
bind Dot4 NXDIFLN
bind Dot2 ATTRUP
bind Dot5 ATTRDN
bind Dot3 PRPGRPH
bind Dot6 NXPGRPH
bind Dot7 PRPROMPT
bind Dot8 NXPROMPT

bind Dot1+Dot2 WINUP
bind Dot4+Dot5 WINDN
bind Dot3+Dot7 PRSEARCH
bind Dot6+Dot8 NXSEARCH

bind Dot1+Dot2+!RoutingKey1 PRDIFCHAR
bind Dot4+Dot5+!RoutingKey1 NXDIFCHAR
bind Dot3+Dot7+!RoutingKey1 PRINDENT
bind Dot6+Dot8+!RoutingKey1 NXINDENT

bind Dot1+!Up FWINLT
bind Dot1+!Down FWINRT
bind Dot1+!Home TOP_LEFT
bind Dot1+!End BOT_LEFT

bind Dot4+!Up HWINLT
bind Dot4+!Down HWINRT
bind Dot4+!Home CHRLT
bind Dot4+!End CHRRT

bind Dot1+!Shift LNBEG
bind Dot4+!Shift LNEND

bind Dot1+!RoutingKey1 SETLEFT
bind Dot4+!RoutingKey1 DESCCHAR

bind Dot2+!Up KEY_CURSOR_UP
bind Dot2+!Down KEY_CURSOR_DOWN
bind Dot2+!Home KEY_CURSOR_LEFT
bind Dot2+!End KEY_CURSOR_RIGHT

bind Dot5+!Up KEY_PAGE_UP
bind Dot5+!Down KEY_PAGE_DOWN
bind Dot5+!Home KEY_HOME
bind Dot5+!End KEY_END

bind Dot2+!Shift KEY_INSERT
bind Dot5+!Shift KEY_DELETE

bind Dot2+!RoutingKey1 KEY_FUNCTION
bind Dot5+!RoutingKey1 SWITCHVT

bind Dot7+!Shift SPKHOME
bind Dot7+!Home SAY_ABOVE
bind Dot7+!End SAY_BELOW
bind Dot7+!Up MUTE
bind Dot7+!Down SAY_LINE

bind Dot8+!Shift RESTARTSPEECH
bind Dot8+!Home SAY_SLOWER
bind Dot8+!End SAY_FASTER
bind Dot8+!Up SAY_SOFTER
bind Dot8+!Down SAY_LOUDER

bind Dot7+!RoutingKey1 CUTBEGIN
bind Dot3+!RoutingKey1 CUTAPPEND
bind Dot6+!RoutingKey1 CUTLINE
bind Dot8+!RoutingKey1 CUTRECT

bind Dot1+Dot4 CSRVIS
bind Dot1+Dot4+Dot7 CSRVIS+off
bind Dot1+Dot4+Dot8 CSRVIS+on
bind Dot1+Dot2+Dot4 FREEZE
bind Dot1+Dot2+Dot5 HELP
bind Dot2+Dot4 SKPIDLNS
bind Dot2+Dot4+Dot7 SKPIDLNS+off
bind Dot2+Dot4+Dot8 SKPIDLNS+on
bind Dot1+Dot2+Dot3 LEARN
bind Dot1+Dot2+Dot3+Dot4 PREFMENU
bind Dot1+Dot2+Dot3+Dot4+Dot7 PREFLOAD
bind Dot1+Dot2+Dot3+Dot4+Dot8 PREFSAVE
bind Dot1+Dot2+Dot3+Dot5 AUTOREPEAT
bind Dot1+Dot2+Dot3+Dot5+Dot7 AUTOREPEAT+off
bind Dot1+Dot2+Dot3+Dot5+Dot8 AUTOREPEAT+on
bind Dot2+Dot3+Dot4 INFO
bind Dot2+Dot3+Dot4+Dot5 CSRTRK
bind Dot2+Dot3+Dot4+Dot5+Dot7 CSRTRK+off
bind Dot2+Dot3+Dot4+Dot5+Dot8 CSRTRK+on
bind Dot1+Dot3+Dot6 ATTRVIS
bind Dot1+Dot3+Dot6+Dot7 ATTRVIS+off
bind Dot1+Dot3+Dot6+Dot8 ATTRVIS+on
bind Dot2+Dot3+Dot5 SIXDOTS+on
bind Dot2+Dot3+Dot6 SIXDOTS+off

assign switches
include brl-pm-routing.kti

assign toggleOff Dot7
assign toggleOn Dot8
include brl-pm-status\{statusKeys}.kti


######################
# Braille Input Mode #
######################

assign brailleContext 1
context \{brailleContext} Braille Input Mode

map Dot1 DOT1
map Dot2 DOT2
map Dot3 DOT3
map Dot4 DOT4
map Dot5 DOT5
map Dot6 DOT6
map Dot7 DOT7
map Dot8 DOT8

bind Dot3+!Shift PASSDOTS
bind Dot3+!Home KEY_ESCAPE
bind Dot3+!End KEY_TAB
bind Dot3+!Up KEY_BACKSPACE
bind Dot3+!Down KEY_ENTER

context default
bind Dot2+Dot3+!Shift context+0
bind Dot5+Dot6+!Shift context+\{brailleContext}


#################
# Menu Bindings #
#################

context menu
bind !Shift PREFMENU
bind !Home MENU_PREV_SETTING
bind !End MENU_NEXT_SETTING
bind !Up MENU_PREV_ITEM
bind !Down MENU_NEXT_ITEM
bind !Dot1 MENU_FIRST_ITEM
bind !Dot4 MENU_LAST_ITEM
bind !Dot2 PREFLOAD
bind !Dot5 PREFSAVE
bind !Dot7 FWINLT
bind !Dot8 FWINRT
