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

# This key subtable is for Papenmeier displays which have 13 front keys.
note There are 13 keys on the front.
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+!Shift KEY_TAB
bind Dot2+!Home KEY_CURSOR_LEFT
bind Dot2+!End KEY_CURSOR_RIGHT
bind Dot2+!Up KEY_CURSOR_UP
bind Dot2+!Down KEY_CURSOR_DOWN
bind Dot2+!RoutingKey1 KEY_FUNCTION

bind Dot5+!Shift KEY_INSERT
bind Dot5+!Home KEY_HOME
bind Dot5+!End KEY_END
bind Dot5+!Up KEY_PAGE_UP
bind Dot5+!Down KEY_PAGE_DOWN
bind Dot5+!RoutingKey1 SWITCHVT

bind Dot6+!Shift UNSTICK
bind Dot6+!Home META
bind Dot6+!End GUI
bind Dot6+!Up SHIFT
bind Dot6+!Down CONTROL

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 CLIP_NEW
bind Dot3+!RoutingKey1 CLIP_ADD
bind Dot6+!RoutingKey1 COPY_LINE
bind Dot8+!RoutingKey1 COPY_RECT

bind Dot1+Dot2+Dot3+Dot7 TIME

include routing.kti

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


bind Dot2+Dot3+!Shift CONTEXT+default
bind Dot2+Dot3+!Home CONTEXT+chords
bind Dot2+Dot3+!End CONTEXT+braille


####################
# Chord Input Mode #
####################

context chords Chorded Commands Mode

assign noUnchorded
assign chord
include ../chords.kti
include ../menu.kti


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

context braille 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 KEY_ESCAPE
bind Dot3+!Home KEY_BACKSPACE
bind Dot3+!End KEY_DELETE
bind Dot3+!Up KEY_ENTER
bind Dot3+!Down PASSDOTS


