###############################################################################
# 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 Orbit Reader

note A six-dot standard braille keyboard is along the back edge of the top.
note * From left to right, its keys are: Dot3, Dot2, Dot1 - Dot4, Dot5, Dot6.
note There's a five-key navigation pad in between Dot1 and Dot4.
note Space is the long key in the middle, just in front of the navigation pad.
note Dot7 and Dot8 are the keys immediately to the left and right of Space.

assign space Space
include navpad.kti

assign press Select
include emulate6.kti
include routing.kti

note The rocker to the left of the braille cells emulates the Display2 key,
note * and the one to their right emulates the Display5 key.
