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


####################
# Default Bindings #
####################

bind LeftScrollUp LNUP
bind LeftScrollDown LNDN

bind RightScrollUp FWINLT
bind RightScrollDown FWINRT

bind LeftScrollUp+LeftScrollDown LNBEG
bind RightScrollUp+RightScrollDown RETURN

bind LeftScrollUp+RightScrollUp CSRTRK
bind LeftScrollUp+RightScrollDown SIXDOTS
bind LeftScrollDown+RightScrollUp FREEZE
bind LeftScrollDown+RightScrollDown DISPMD

bind LeftScrollUp+LeftScrollDown+RightScrollUp TOP
bind LeftScrollUp+LeftScrollDown+RightScrollDown BOT

bind RightScrollUp+RightScrollDown+LeftScrollUp INFO
bind RightScrollUp+RightScrollDown+LeftScrollDown PREFMENU

bind LeftScrollUp+LeftScrollDown+RightScrollUp+RightScrollDown HELP


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

context menu

bind LeftScrollUp MENU_PREV_ITEM
bind LeftScrollDown MENU_NEXT_ITEM

bind RightScrollUp MENU_PREV_SETTING
bind RightScrollDown MENU_NEXT_SETTING

bind LeftScrollUp+LeftScrollDown FWINLT
bind RightScrollUp+RightScrollDown FWINRT

bind LeftScrollUp+RightScrollUp MENU_FIRST_ITEM
bind LeftScrollDown+RightScrollDown MENU_LAST_ITEM

bind LeftScrollUp+LeftScrollDown+RightScrollUp PREFLOAD
bind LeftScrollUp+LeftScrollDown+RightScrollDown PREFSAVE

bind RightScrollUp+RightScrollDown+LeftScrollUp MENU_PREV_LEVEL
bind RightScrollUp+RightScrollDown+LeftScrollDown PREFMENU


