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

bind RoutingKey ROUTE
bind RoutingKey+RoutingKey CLIP_COPY

bind RoutingKey.1+RoutingKey.\{routingRight1} HELP
bind RoutingKey.1+RoutingKey.2+RoutingKey.\{routingRight2}+RoutingKey.\{routingRight1} LEARN

bind RoutingKey.1+RoutingKey.2 CHRLT
bind RoutingKey.\{routingRight2}+RoutingKey.\{routingRight1} CHRRT

bind RoutingKey.1+RoutingKey.3 HWINLT
bind RoutingKey.\{routingRight3}+RoutingKey.\{routingRight1} HWINRT

bind RoutingKey.2+RoutingKey.3 PASTE

bind RoutingKey+\{keyRoutingUp} PRINDENT
bind RoutingKey+\{keyRoutingDown} NXINDENT

bind RoutingKey.1+RoutingKey.2+\{keyRoutingUp} PRPGRPH
bind RoutingKey.1+RoutingKey.2+\{keyRoutingDown} NXPGRPH

bind RoutingKey.1+RoutingKey.3+\{keyRoutingUp} PRSEARCH
bind RoutingKey.1+RoutingKey.3+\{keyRoutingDown} NXSEARCH

bind RoutingKey.2+RoutingKey.3+\{keyRoutingUp} PRPROMPT
bind RoutingKey.2+RoutingKey.3+\{keyRoutingDown} NXPROMPT

