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

# This is a configuration file template for the BRLTTY application. 
# Uncomment those entries which apply to your personal needs and system
# requirements.

# BRLTTY expects to find its configuration file in "@CONFIGURATION_DIRECTORY@/@CONFIGURATION_FILE@"
# (can be overridden with the --configuration-file= [-f] option).
# If it doesn't exist, then BRLTTY silently continues but may require
# that certain command line options be explicitly supplied.

# Blank lines are ignored. The character '#', anywhere on a line,
# initiates a comment; all characters from it to the end of that line
# are ignored.

# Each configuration entry consists of a keyword followed by its operand.
# An arbitrary amount of white space, (blanks and/or tabs), may occur
# before the keyword, as well as before and after the operand. Keyword
# processing isn't case sensitive. Examples of valid entries are:
#
#	Braille-Driver	pm	# Papenmeier braille displays.
#	braille-device	serial:@serial_first_device@	# The first serial device.
#	SPEECH-DRIVER	fv	# The Festival Text to Speech System.

# The default settings given within the following descriptions assume no
# special build options (see "./configure --help" in the top-level
# directory of the source tree.


####################
# Braille Settings #
####################

# The braille-driver directive specifies the two-letter driver
# identification code of the driver for the braille display.
# If not specified, autodetection will be performed.
# If more than one driver, separated by commas, is specified,
# then autodetection will be performed amongst them.
# (can be overridden with the --braille-driver= [-b] option)
#braille-driver	auto	# autodetect
#braille-driver	al	# Alva
#braille-driver	at	# Albatross
#braille-driver	ba	# BrlAPI
#braille-driver	bc	# BrailComm
#braille-driver	bd	# Braudi
#braille-driver	bl	# BrailleLite
#braille-driver	bm	# Baum;; Refreshabraille, Orbit, NLS eReader Zoomax, NBP B2G
#braille-driver	bn	# BrailleNote
#braille-driver	cb	# CombiBraille
#braille-driver	ce	# Cebra
#braille-driver	cn	# Canute
#braille-driver	dp	# DotPad
#braille-driver	ec	# EcoBraille
#braille-driver	eu	# EuroBraille
#braille-driver	fa	# FrankAudiodata
#braille-driver	fs	# FreedomScientific; VFO, Vispero
#braille-driver	hd	# Hedo
#braille-driver	hm	# HIMS
#braille-driver	ht	# HandyTech; HelpTech
#braille-driver	hw	# HumanWare;; APH Chameleon, APH Mantis, NLS eReader
#braille-driver	ic	# Inceptor; Innovision
#braille-driver	ir	# Iris
#braille-driver	lb	# Libbraille
#braille-driver	lt	# LogText
#braille-driver	mb	# MultiBraille
#braille-driver	md	# MDV
#braille-driver	mm	# BrailleMemo
#braille-driver	mn	# MiniBraille
#braille-driver	mt	# Metec
#braille-driver	np	# NinePoint
#braille-driver	pg	# Pegasus
#braille-driver	pm	# Papenmeier
#braille-driver	sk	# Seika
#braille-driver	tn	# TechniBraille
#braille-driver	ts	# TSI
#braille-driver	vd	# VideoBraille
#braille-driver	vo	# Voyager;; Braille Pen, Easy Link
#braille-driver	vs	# VisioBraille

# The braille-device directive specifies the device to which the braille
# display is connected. The generic syntax is type:device. The device
# type is optional, and, for backward compatibility, defaults to serial.
# The following devices are supported (brackets indicate optionality):
#    serial:path (relative paths are anchored at "/dev")
#    usb:[serial-number]
#    bluetooth:address
# If not specified, "@braille_device@" will be used.
# If more than one device, separated by commas, is specified,
# then each of them will be probed in turn.
# (can be overridden with the --braille-device= [-d] option)
#braille-device	serial:@serial_first_device@	# First serial device.
#braille-device	usb:		# First USB device matching braille driver.
#braille-device	usb:nnnnn	# Specific USB device by serial number.
#braille-device	bluetooth:		# First paired Bluetooth device matching braille driver.
#braille-device	bluetooth:xx:xx:xx:xx:xx:xx	# Specific bluetooth device by address.

# NOTE: If the device is connected via a serial-to-USB adapter then setting
# braille-device to usb: will not work. In this case, you needs to identify the
# virtual serial device which the kernel has created for the adapter, i.e. to
# something like serial:ttyUSB0 or ttyACM0 (see the kernel messages on device
# plug to get the actual device name).

# The release-device directive specifies whether or not the device to which the
# braille display is connected is to be released when the current screen or
# window can't be read by BRLTTY. If not specified, "on" will be used on Windows
# platforms and "off" will be used on all other platforms.
# (can be overridden with the --release-device [-r] option)
#release-device	on	# Release the device.
#release-device	off	# Don't release the device.

# The text-table directive specifies which text table to use. Relative paths
# are anchored at "@TABLES_DIRECTORY@/@TEXT_TABLES_SUBDIRECTORY@". If not specified, locale-based
# autoselection with fallback to "@text_table@" will be performed.
# (can be overridden with the --text-table= [-t] option)
#text-table	auto	# locale-based autoselection
#text-table	ar	# Arabic (generic)
#text-table	as	# Assamese
#text-table	awa	# Awadhi
#text-table	bg	# Bulgarian
#text-table	bh	# Bihari
#text-table	bn	# Bengali
#text-table	bo	# Tibetan
#text-table	bra	# Braj
#text-table	brf	# Braille Ready Format (for viewing .brf files within an editor or pager)
#text-table	cs	# Czech
#text-table	cy	# Welsh
#text-table	da	# Danish
#text-table	da-1252	# Danish (Svend Thougaard, 2002–11–18)
#text-table	da-lt	# Danish (LogText)
#text-table	de	# German
#text-table	dra	# Dravidian
#text-table	el	# Greek
#text-table	en	# English
#text-table	en_CA	# English (Canada)
#text-table	en_GB	# English (United Kingdom)
#text-table	en_US	# English (United States)
#text-table	en-nabcc	# English (North American Braille Computer Code)
#text-table	eo	# Esperanto
#text-table	es	# Spanish
#text-table	et	# Estonian
#text-table	fi	# Finnish
#text-table	fr	# French
#text-table	fr_CA	# French (Canada)
#text-table	fr_FR	# French (France)
#text-table	fr-2007	# French (unified 2007)
#text-table	fr-cbifs	# French (Code Braille Informatique Français Standard)
#text-table	fr-vs	# French (VisioBraille)
#text-table	ga	# Irish
#text-table	gd	# Gaelic
#text-table	gon	# Gondi
#text-table	gu	# Gujarati
#text-table	he	# Hebrew
#text-table	hi	# Hindi
#text-table	hr	# Croatian
#text-table	hu	# Hungarian
#text-table	hy	# Armenian
#text-table	is	# Icelandic
#text-table	it	# Italian
#text-table	kha	# Khasi
#text-table	kn	# Kannada
#text-table	kok	# Konkani
#text-table	kru	# Kurukh
#text-table	lt	# Lituanian
#text-table	lv	# Latvian
#text-table	mg	# Malagasy
#text-table	mi	# Maori
#text-table	ml	# Malayalam
#text-table	mni	# Manipuri
#text-table	mr	# Marathi
#text-table	mt	# Maltese
#text-table	mun	# Munda
#text-table	mwr	# Marwari
#text-table	ne	# Nepali
#text-table	new	# Newari
#text-table	nl	# Dutch
#text-table	nl_BE	# Dutch (Belgium)
#text-table	nl_NL	# Dutch (Netherlands)
#text-table	no	# Norwegian
#text-table	no-generic	# Norwegian (with support for other languages)
#text-table	no-oup	# Norwegian (Offentlig utvalg for punktskrift)
#text-table	nwc	# Newari (old)
#text-table	or	# Oriya
#text-table	pa	# Panjabi
#text-table	pi	# Pali
#text-table	pl	# Polish
#text-table	pt	# Portuguese
#text-table	ro	# Romanian
#text-table	ru	# Russian
#text-table	se	# Sami (Northern)
#text-table	sa	# Sanskrit
#text-table	sat	# Santali
#text-table	sd	# Sindhi
#text-table	sk	# Slovak
#text-table	sl	# Slovenian
#text-table	sv	# Swedish
#text-table	sv-1989	# Swedish (1989 standard)
#text-table	sv-1996	# Swedish (1996 standard)
#text-table	sw	# Swahili
#text-table	ta	# Tamil
#text-table	te	# Telugu
#text-table	tr	# Turkish
#text-table	uk	# Ukrainian
#text-table	vi	# Vietnamese

# The contraction-table directive specifies which contraction table to use.
# Relative paths are anchored at "@TABLES_DIRECTORY@/@CONTRACTION_TABLES_SUBDIRECTORY@". If not specified, no
# contraction table will be available.
# (can be overridden with the --contraction-table= [-c] option)
#contraction-table	auto	# locale-based autoselection
#contraction-table	af	# Afrikaans (contracted)
#contraction-table	am	# Amharic (uncontracted)
#contraction-table	de	# German
#contraction-table	de-g0	# German (uncontracted)
#contraction-table	de-g1	# German (basic contractions)
#contraction-table	de-g2	# German (contracted)
#contraction-table	de-1998	# German (contracted - 1998 standard)
#contraction-table	de-2015	# German (contracted - 2015 standard)
#contraction-table	en	# English
#contraction-table	en_US	# English (United States)
#contraction-table	en-ueb-g1	# English (Unified, uncontracted)
#contraction-table	en-ueb-g2	# English (Unified, contracted)
#contraction-table	en-us-g2	# English (United States, contracted)
#contraction-table	es	# Spanish (contracted)
#contraction-table	fr	# French
#contraction-table	fr-g1	# French (uncontracted)
#contraction-table	fr-g2	# French (contracted)
#contraction-table	ha	# Hausa (contracted)
#contraction-table	id	# Indonesian (contracted)
#contraction-table	ipa	# International Phonetic Alphabet
#contraction-table	ja	# Japanese (uncontracted)
#contraction-table	ko	# Korean
#contraction-table	ko-g0	# Korean (uncontracted)
#contraction-table	ko-g1	# Korean (partially contracted)
#contraction-table	ko-g2	# Korean (contracted)
#contraction-table	lt	# Lithuanian (uncontracted)
#contraction-table	mg	# Malagasy (contracted)
#contraction-table	mun	# Munda (contracted)
#contraction-table	nl	# Dutch (contracted)
#contraction-table	ny	# Chichewa (contracted)
#contraction-table	pt	# Portuguese (contracted)
#contraction-table	ru	# Russian (contracted)
#contraction-table	si	# Sinhalese (uncontracted)
#contraction-table	sw	# Swahili (contracted)
#contraction-table	th	# Thai (contracted)
#contraction-table	zh_TW	# Chinese (Taiwan, uncontracted)
#contraction-table	zu	# Zulu (contracted)

# The attributes-table directive specifies which attributes table to use.
# Relative paths are anchored at "@TABLES_DIRECTORY@/@ATTRIBUTES_TABLES_SUBDIRECTORY@". If not specified,
# "@attributes_table@" will be used.
# (can be overridden with the --attributes-table= [-a] option)
#attributes-table	left_right	# foreground colour in the left column and background colour in the right column
#attributes-table	invleft_right	# inverse foreground colour in the left column and background colour in the right column
#attributes-table	upper_lower	# foreground colour in the upper square and background colour in the lower square


#############################
# Braille Driver Parameters #
#############################

# The braille-parameters directive passes driver-specific parameters
# through to the braille driver.
# (can be specified more than once)
# (can be overridden with the --braille-parameters= [-B] option)
#braille-parameters driver:name=value,...

# Alva Braille Driver Parameters
#braille-parameters al:RotatedCells=no # [no,yes]
#braille-parameters al:SecondaryRoutingKeyEmulation=no # [no,yes]

# BrlAPI Braille Driver Parameters
#braille-parameters ba:Auth=@CONFIGURATION_DIRECTORY@/@api_authkeyfile@
#braille-parameters ba:Host=:0
#braille-parameters ba:SpeechChanges=yes # [yes,no]

# BrailleLite Braille Driver Parameters
#braille-parameters bl:BaudRate=9600 # [300,600,1200,2400,4800,9600,19200,38400]
#braille-parameters bl:KbEmu=yes # [yes,no]

# Baum Braille Driver Parameters
#braille-parameters bm:Protocol=default # [default,escape,hid1,hid2,ht,pb]
#braille-parameters bm:VarioKeys=no # [no,yes]

# DotPad Braille Driver Parameters
#brailledd-parameters dp:Display=default # [default,text,graphic]

# EuroBraille Braille Driver Parameters
#braille-parameters eu:Protocol= # [auto,azerbraille,clio,eurobraille,notebraille,pupibraille,scriba,esys,esytime,iris,esysiris]

# HandyTech Braille Driver Parameters
#braille-parameters ht:SetTime=no # [no,yes]

# Iris Braille Driver Parameters
#braille-parameters ir:Embedded= # [no,yes]
#braille-parameters ir:LatchDelay=10 # [0-100] (tenths of a second)
#braille-parameters ir:Protocol= # [eurobraille,native]

# Libbraille Braille Driver Parameters
#braille-parameters lb:Device=/dev/ttyS0 # 
#braille-parameters lb:Driver=auto # 
#braille-parameters lb:Table=us.tbl # 

# TSI Braille Driver Parameters
#braille-parameters ts:HighBaud=yes # [yes,no]
#braille-parameters ts:SetBaud=9600 # [4800,9600,19200]

# TTY Braille Driver Parameters
#braille-parameters tt:Baud=9600 # 
#braille-parameters tt:CharSet=ISO8859-1 # 
#braille-parameters tt:Columns=40 # [1-80]
#braille-parameters tt:Lines=1 # [1-3]
#braille-parameters tt:Locale= # 
#braille-parameters tt:Term=vt100 # [terminfo]

# VisioBraille Braille Driver Parameters
#braille-parameters vs:Baud=57600 # 
#braille-parameters vs:DisplaySize=40 # [20-40]
#braille-parameters vs:PromVersion=4 # [3-6]

# XWindow Braille Driver Parameters
#braille-parameters xw:Columns=40 # [1-80]
#braille-parameters xw:Font=name # []
#braille-parameters xw:Input=off # [off,on]
#braille-parameters xw:Lines=1 # [1-3]
#braille-parameters xw:Model=bare # [bare]
#braille-parameters xw:TkParms= # 


###################
# Speech Settings #
###################

# The speech-driver directive specifies the two-letter driver
# identification code of the driver for the speech synthesizer.
# If not specified, autodetection will be performed.
# If more than one driver, separated by commas, is specified,
# then autodetection will be performed amongst them.
# (can be overridden with the --speech-driver= [-s] option)
#speech-driver	auto	# autodetect
#speech-driver	al	# Alva
#speech-driver	an	# Android
#speech-driver	bl	# BrailleLite
#speech-driver	cb	# CombiBraille
#speech-driver	en	# eSpeak-NG
#speech-driver	es	# eSpeak
#speech-driver	fl	# FestivalLite
#speech-driver	fv	# Festival
#speech-driver	gs	# GenericSay
#speech-driver	mp	# Mikropuhe
#speech-driver	sd	# SpeechDispatcher
#speech-driver	sw	# Swift
#speech-driver	th	# Theta
#speech-driver	vv	# ViaVoice; Voxin
#speech-driver	xs	# ExternalSpeech

# The speech-input directive specifies the name of the file system object
# (FIFO, named pipe, named socket, etc) which can be used by external
# applications for text-to-speech conversion via BRLTTY's speech driver.
# Relative paths are anchored at the current working directory. If not
# specified, the file system object isn't created.
# (can be overridden with the --speech-input= [-i] option)
#speech-input	/path/to/file-system-object

# The quiet-if-no-braille directive specifies that the autospeak feature
# isn't to be implicitly enabled when the braille driver is not running.
# (can be overridden with the --quiet-if-no-braille= [-Q] option)
#quiet-if-no-braille	off	# [off,on]

# The autospeak-threshold directive specifies the minimum screen content
# quality that will trigger the autospeak feature.
# (can be overridden with the --autospeak-threshold= option)
#autospeak-threshold	none


############################
# Speech Driver Parameters #
############################

# The speech-parameters directive passes driver-specific parameters through
# to the speech driver.
# (can be specified more than once)
# (can be overridden with the --speech-parameters= [-S] option)
#speech-parameters driver:name=value,...

# eSpeak Speech Driver Parameters
#speech-parameters es:MaxRate=450 # [80-]
#speech-parameters es:Path=
#speech-parameters es:PunctList=
#speech-parameters es:Voice=default

# eSpeak-NG Speech Driver Parameters
#speech-parameters en:MaxRate=450 # [80-]
#speech-parameters en:Path=
#speech-parameters en:PunctList=
#speech-parameters en:Voice=en

# ExternalSpeech Speech Driver Parameters
#speech-parameters xs:Socket_Path=/tmp/exs-data

# Festival Speech Driver Parameters
#speech-parameters fv:Command=festival # [/path/to/command]
#speech-parameters fv:Name= # [kevin,kal]

# FestivalLite Speech Driver Parameters
#speech-parameters fl:Pitch=100 # [50-200]

# GenericSay Speech Driver Parameters
#speech-parameters gs:Command=/usr/local/bin/say

# Mikropuhe Speech Driver Parameters
#speech-parameters mp:Name= # [/path/to/mikropuhe/name.pu5]
#speech-parameters mp:Pitch=0 # [-10-10]

# SpeechDispatcher Speech Driver Parameters
#speech-parameters sd:Language= # [two-letter language code]
#speech-parameters sd:Module= # [flite,festival,epos-generic,dtk-generic,...]
#speech-parameters sd:Name= # 
#speech-parameters sd:Port=6560 # [1-65535]
#speech-parameters sd:Voice= # [male1,female1,male2,female2,male3,female3,child_male,child_female]

# Swift Speech Driver Parameters
#speech-parameters sw:Name= # [voice,/path/to/voice]

# Theta Speech Driver Parameters
#speech-parameters th:Age= # [1-99,-1--99]
#speech-parameters th:Gender= # [male,female,neuter]
#speech-parameters th:Language= # [two-letter language code]
#speech-parameters th:Name= # [voice,/path/to/voice]
#speech-parameters th:Pitch=0.0 # [-2.0-2.0]

# ViaVoice Speech Driver Parameters
#speech-parameters vv:Quality= # [fair,poor,good]
#speech-parameters vv:Mode= # [words,letters,punctuation,phonetic]
#speech-parameters vv:Synthesize= # [sentences,all]
#speech-parameters vv:Abbreviations= # [on,off]
#speech-parameters vv:Years= # [on,off]
#speech-parameters vv:Language= # [American-English, British-English, Castilian-Spanish, Mexican-Spanish, Standard-French, Canadian-French, Standard-German, Standard-Italian, Standard-Mandarin-GBK, Standard-Mandarin-PinYin, Standard-Mandarin-UCS2, Taiwanese-Mandarin-Big5, Taiwanese-Mandarin-ZhuYin, Taiwanese-Mandarin-PinYin, Taiwanese-Mandarin-UCS2, Brazilian-Portuguese, Standard-Japanese-SJIS, Standard-Japanese-UCS2, Standard-Finnish, Standard-Korean-UHC, Standard-Korean-UCS2, Standard-Cantonese-GBK, Standard-Cantonese-UCS2, HongKong-Cantonese-Big5, HongKong-Cantonese-UCS2, Standard-Dutch, Standard-Norwegian, Standard-Swedish, Standard-Danish, Standard-Thai-TIS620]
#speech-parameters vv:Voice= # [man,woman,child,patriarch,matriarch]
#speech-parameters vv:Gender= # [male,female]
#speech-parameters vv:HeadSize= # [0-100]
#speech-parameters vv:PitchBaseline= # [40-422 Hz]
#speech-parameters vv:Expressiveness= # [0-100] (pitch fluctuation)
#speech-parameters vv:Roughness= # [0-100]
#speech-parameters vv:Breathiness= # [0-100]
#speech-parameters vv:Volume= # [0-100 %]
#speech-parameters vv:Speed= # [70-1297 wpm]


#####################
# Keyboard Settings #
#####################

# The keyboard-table directive specifies which keyboard table to use. Relative paths are
# anchored at "@TABLES_DIRECTORY@/@KEYBOARD_TABLES_SUBDIRECTORY@". If not specified, no keyboard table is used.
# (can be overridden with the --keyboard-table= [-k] option)
#keyboard-table	off	# no keyboard table
#keyboard-table	braille	# bindings for braille keyboards
#keyboard-table	desktop	# bindings for full keyboards
#keyboard-table	keypad	# bindings for keypad-based navigation
#keyboard-table	laptop	# bindings for keyboards without a keypad
#keyboard-table	sun_type6	# bindings for Sun Type 6 keyboards

# The keyboard-properties directive specifies which keyboards to monitor.
# If not specified, all keyboards are monitored.
# (can be specified more than once)
# (can be overridden with the --keyboard-properties= [-K] option)
#keyboard-properties	Type=any	# [any,ps2,usb,bluetooth,internal]
#keyboard-properties	Vendor=0X0000	# [0X0000-0XFFFF]
#keyboard-properties	Product=0X0000	# [0X0000-0XFFFF]


##################
# Sound Settings #
##################

# The pcm-device directive specifies the device to use for soundcard
# digital audio. If not specified, a method- and system-dependent
# default will be used.
# (can be overridden with the --pcm-device= [-p] option)
#pcm-device	/path/to/device	# most methods
#pcm-device	pcm-handle-id	# ALSA (see second parameter of snd_pcm_open)

# The midi-device directive specifies the device to use for the Musical
# Instrument Digital Interface. If not specified, a method- and
# system-dependent default will be used.
# (can be overridden with the --midi-device= [-m] option)
#midi-device	/path/to/device	# most methods
#midi-device	client:port	# ALSA (may use number or case-sensitive substring of name)


###################
# Logging Options #
###################

# The quiet directive reduces the logging level to standard error by one
# level and also suppresses the braille and speech driver banners.
# (can be overridden with the --quiet [-q] option)
#quiet off	# [off,on]

# The log-file directive specifies the file to which diagnostics are written.
# Relative paths are anchored at the current working directory. If not
# specified, diagnostics are written to the system log.
# (can be overridden with the --log-file= [-L] option)
#log-file	/tmp/brltty.log

# The log-level directive specifies which event categories are to be
# logged as well as the severity threshold for uncategorized events.
# The category names and severity threshold are separated by commas.
# (can be overridden with the --log-level= [-l] option)
#log-level	notice

# Only one severity threshold may be specified. Less severe uncategorized
# events will not be logged. If not specified, "notice" will be assumed.
# The severity thresholds are:
#log-level	emergency
#log-level	alert
#log-level	critical
#log-level	error
#log-level	warning
#log-level	notice
#log-level	information
#log-level	debug

# Any number of event categories may be enabled. Prefixing a category name
# with a minus sign [-] disables it (particularly useful if "all" is used).
# The categories are:
#log-level	all	# enable all of the categories
#log-level	inpkts	# input packets
#log-level	outpkts	# output packets
#log-level	brlkeys	# braille device key events
#log-level	kbdkeys	# keyboard key events
#log-level	csrtrk	# cursor tracking
#log-level	csrrtg	# cursor routing
#log-level	update	# update events
#log-level	speech	# speech events
#log-level	async	# asynchronous event scheduling
#log-level	server	# BrlAPI server events
#log-level	gio	# generic I/O
#log-level	serial	# serial I/O
#log-level	usb	# USB I/O
#log-level	bt	# Bluetooth I/O
#log-level	hid	# Human Interface I/O
#log-level	brldrv	# braille driver events
#log-level	spkdrv	# speech driver events
#log-level	scrdrv	# screen driver events


#######################
# Preference Settings #
#######################

# The preferences-file directive specifies the file in which to save the user's
# preferences. Relative paths are usually anchored at "@UPDATABLE_DIRECTORY@"
# (can be changed via the updatable-directory directive).
# If not specified, "@PREFERENCES_FILE@" will be used.
# (can be overridden with the --preferences-file= [-F] option)
#preferences-file	@PREFERENCES_FILE@

# The override-preferences directive can be used to explicitly specify the
# initial setting of any preference. More than one preference may be overridden
# by separating them by commas and/or by using this directive multiple times.
# (can be specified more than once)
# (can be overridden with the --override-preferences= [-o] option)
#override-preferences preference=setting,...


##########################
# Miscellaneous Settings #
##########################

# The pid-file directive specifies the absolute path to a file that will
# contain BRLTTY's process identifier. It is removed when BRLTTY terminates.
# (can be overridden with the --pid-file= [-P] option)
#pid-file @WRITABLE_DIRECTORY@/brltty.pid

# The locale-directory directive specifies the absolute path to the directory
# which contains the compiled message translations for other languages. If not
# specified, "@LOCALE_DIRECTORY@" will be used.
# (can be overridden with the --locale-directory= option)
#locale-directory @LOCALE_DIRECTORY@

# The updatable-directory directive specifies the absolute path to a directory
# which contains files that can be updated (preferences, saved clipboard, etc).
# If not specified, "@UPDATABLE_DIRECTORY@" will be used.
# (can be overridden with the --updatable-directory= [-U] option)
#updatable-directory @UPDATABLE_DIRECTORY@

# The writable-directory directive specifies the absolute path to a directory
# which can be written to (creation of missing but needed resources, etc). If
# not specified, "@WRITABLE_DIRECTORY@" will be used.
# (can be overridden with the --writable-directory= [-W] option)
#writable-directory @WRITABLE_DIRECTORY@

# The drivers-directory directive specifies the absolute path to the
# directory which contains the dynamically loadable drivers. If not
# specified, @DRIVERS_DIRECTORY@ will be used.
# (can be overridden with the --drivers-directory= [-D] option)
#drivers-directory @DRIVERS_DIRECTORY@

# The tables-directory directive specifies the absolute path to the directory
# which contains the text, contraction, attributes, keyboard, and input tables.
# If not specified, "@TABLES_DIRECTORY@" will be used.
# (can be overridden with the --tables-directory= [-T] option)
#tables-directory @TABLES_DIRECTORY@

# The start-message directive specifies the text to be shown when the braille
# driver starts and to be spoken when the speech driver starts. If not
# specified, "@PACKAGE_NAME@ @PACKAGE_VERSION@" will be used.
# (can be overridden with the --start-message= option)
#start-message @PACKAGE_NAME@\s@PACKAGE_VERSION@

# The stop-message directive specifies the text to be shown when the braille
# driver stops. If not specified, "@PACKAGE_NAME@ stopped" will be used.
# (can be overridden with the --stop-message= option)
#stop-message @PACKAGE_NAME@\sstopped

# The prompt-patterns directive specifies a list of regular expressions
# that are to be used by the NXPROMPT and PRPROMPT navigation commands.
# If not specified, then an exact match of the content of the current line,
# up to and including the first space, will be used.
# (can be specified more than once)
# (can be overridden with the --prompt-patterns= option)
#prompt-patterns	regexp,...

# The message-time directive specifies how long a message is to be displayed
# before it's automatically cleared. If not specified, four seconds will be
# used.
# (can be overridden with the --message-time= [-M] option)
#message-time	400	# hundredths of a second


########################
# Privilege Parameters #
########################

# The stay-privileged directive disables switching to an unprivilegdd user
# as well as the relinquishing of any privileges (group memberships,
# capabilities, etc).
# (can be overridden with the --stay-privileged= [-z] option)
#stay-privileged	off	# [off,on]

# The privilege-parameters directive specifies the default privilege
# establishment parameters to use when BRLTTY is started by a privileged
# user (e.g. by root on a Linux/Unix system). The configured defaults are:
# "@privilege_parameters@".
# (can be specified more than once)
# (can be overridden with the --privilege-parameters= [-Z] option)
#privilege-parameters platform:name=value,...

# Linux Privilege Parameters
#privilege-parameters lx:path=/usr/sbin:/sbin:/usr/bin:/bin
#privilege-parameters lx:scfmode=no # [no,log,fail,kill]
#privilege-parameters lx:shell=/bin/sh
#privilege-parameters lx:user=brltty


################################################
# Application Programming Interface Parameters #
################################################

# The no-api directive disables the Application Programming Interface (API).
# (can be overridden with the --no-api= [-N] option)
#no-api	off	# [off,on]

# The api-parameters directive passes parameters to the Application
# Programming Interface.
# (can be specified more than once)
# (can be overridden with the --api-parameters= [-A] option)
#api-parameters name=value,...

#api-parameters Auth=keyfile:@CONFIGURATION_DIRECTORY@/@api_authkeyfile@	# Require authentication key
#api-parameters Auth=user:joe		# Allow some local user
#api-parameters Auth=group:brl		# Allow some local group
#api-parameters Auth=polkit		# authenticate via Polkit
#api-parameters Host=:0			# Accept only local Unix connections
#api-parameters Host=0.0.0.0:0		# Accept any internet connection.
#api-parameters StackSize=65536


###################
# Screen Settings #
###################

# The screen-driver directive specifies the two-letter driver
# identification code of the driver for the console screen.
# (can be overridden with the --screen-driver= [-x] option)
#screen-driver	an	# Android
#screen-driver	as	# AtSpi
#screen-driver	a2	# AtSpi2
#screen-driver	em	# Terminal Emulator
#screen-driver	fv	# File Viewer
#screen-driver	hd	# Hurd
#screen-driver	lx	# Linux
#screen-driver	pb	# PcBios
#screen-driver	sc	# Screen
#screen-driver	wn	# Windows


############################
# Screen Driver Parameters #
############################

# The screen-parameters directive passes driver-specific parameters through
# to the screen driver.
# (can be specified more than once)
# (can be overridden with the --screen-parameters= [-X] option)
#screen-parameters driver:name=value,...

# AtSpi Screen Driver Parameters
#screen-parameters as:Type=text+terminal # [text,terminal,all]+...

# AtSpi2 Screen Driver Parameters
#screen-parameters a2:Release=yes # [yes,no]
#screen-parameters a2:Type=default # [default,all,{terminal,text}+...]

# File Viewer Screen Driver Parameters
#screen-parameters fv:File=path #

# Linux Screen Driver Parameters
#screen-parameters lx:Charset=name+... # []
#screen-parameters lx:FallbackText=text # ""
#screen-parameters lx:HFB=auto # [auto,vga,fb,0-7]
#screen-parameters lx:LogSFM=no # [no,yes]
#screen-parameters lx:RpiSpacesBug=no # [no,yes]
#screen-parameters lx:Unicode=yes # [yes,no]
#screen-parameters lx:VT=0 # [0-63]
#screen-parameters lx:WidecharPadding=no # [no,yes]

# Terminal Emulator Screen Driver Parameters
#screen-parameters em:Directory=path # []
#screen-parameters em:Emulator=command # [brltty-pty]
#screen-parameters em:Group=name/number # []
#screen-parameters em:Home=path # []
#screen-parameters em:Path=path # []
#screen-parameters em:Shell=command # [$SHELL]
#screen-parameters em:User=name/number # []

# Windows Screen Driver Parameters
#screen-parameters wn:Root=no # [no,yes]
#screen-parameters wn:FollowFocus=yes # [yes,no]


