> For the complete documentation index, see [llms.txt](https://aptivi.gitbook.io/aptivi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aptivi.gitbook.io/aptivi/terminaux-manual/usage/input-reader/reader-settings.md).

# Reader Settings

In case you want to set things up

The reader currently has a global settings instance session-wide. However, it can get overridden if you make a new instance of `TermReaderSettings` with some available properties mentioned below set. They get read each time you call this function or you activate a keybinding that uses one of these settings.

***

## <mark style="color:$primary;">Available settings</mark>

Here are the available settings that you can set:

<table><thead><tr><th width="210">Property</th><th>Description</th></tr></thead><tbody><tr><td><code>PasswordMaskChar</code></td><td>Sets the password masking character (overrides the global input settings).</td></tr><tr><td><code>HistoryEnabled</code></td><td>Whether the history is enabled or not.</td></tr><tr><td><code>HistoryName</code></td><td>Select what history to use</td></tr><tr><td><code>LeftMargin</code></td><td>Sets the left margin of the input.</td></tr><tr><td><code>RightMargin</code></td><td>Sets the right margin of the input.</td></tr><tr><td><code>Width</code></td><td>Sets the width of the input reader as either the specified value or the available width.</td></tr><tr><td><code>InputForegroundColor</code></td><td>The foreground color for the input text, as well as the input prompt.</td></tr><tr><td><code>InputBackgroundColor</code></td><td>The background color for the input text, as well as the input prompt.</td></tr><tr><td><code>Suggestions</code></td><td>Sets a function that you could use to return an array of strings containing auto completion data.</td></tr><tr><td><code>SuggestionsDelimiters</code></td><td>Delimiters to split the current input within a function that returns a list of suggestions.</td></tr><tr><td><code>TreatCtrlCAsInput</code></td><td>Whether to treat <code>Ctrl</code> + <code>C</code> as input or not. If enabled, Terminaux will process this keybinding as aborting the current input.</td></tr><tr><td><code>PlaceholderText</code></td><td>This is the text that the terminal reader shows when there is no input text. This is used to give users hints on what they should write to the prompt.</td></tr><tr><td><code>PrintDefaultValue</code></td><td>Whether to print the default value or not. Disables <code>WriteDefaultValue</code>.</td></tr><tr><td><code>WriteDefaultValue</code></td><td>Whether to make the default value part of the input or not. Disables <code>PrintDefaultValue</code>.</td></tr><tr><td><code>AutoInitialPosition</code></td><td>When writing default value, automatically set the initial position to the end of the input (only works when there is a default value and <code>WriteDefaultValue</code> is on)</td></tr><tr><td><code>InitialPosition</code></td><td>Where to set the initial cursor position for the reader (only works when there is a default value and <code>WriteDefaultValue</code> is on, in addition to <code>AutoInitialPosition</code> being off)</td></tr><tr><td><code>DefaultValueFormat</code></td><td>The default value format to print if <code>PrintDefaultValue</code> is enabled and there is a prompt.</td></tr><tr><td><code>KeyboardCues</code></td><td>Whether to play keyboard cues for each keypress</td></tr><tr><td><code>BassBoomLibraryPath</code></td><td>In case of addons or other custom path for MPG123, specifies a root path to BassBoom's libraries. See <a href="https://aptivi.gitbook.io/aptivi/bassboom-manual/">here</a> for more info.</td></tr><tr><td><code>PlayWriteCue</code></td><td>Specifies whether to play a write cue (that is, plays a sound for each keypress). You can specify your custom write cue using the <code>CueWrite</code> property, but be sure to pass it a stream that contains an MP3 file content that <a href="/aptivi/bassboom-manual/power-users/using-basolia.md">BassBoom</a> can play.</td></tr><tr><td><code>PlayRuboutCue</code></td><td>Specifies whether to play a rubout cue (that is, plays a sound for every backspace press). You can specify your custom write cue using the <code>CueRubout</code> property, but be sure to pass it a stream that contains an MP3 file content that <a href="/aptivi/bassboom-manual/power-users/using-basolia.md">BassBoom</a> can play.</td></tr><tr><td><code>PlayEnterCue</code></td><td>Specifies whether to play an enter cue (that is, plays a sound for each "submit" key, such as Enter). You can specify your custom write cue using the <code>CueEnter</code> property, but be sure to pass it a stream that contains an MP3 file content that <a href="/aptivi/bassboom-manual/power-users/using-basolia.md">BassBoom</a> can play.</td></tr><tr><td><code>CueVolume</code></td><td>Specifies the cue volume in fractional number between <code>0.0</code> and <code>1.0</code> (or <code>3.0</code> with volume boost)</td></tr><tr><td><code>CueVolumeBoost</code></td><td>Allows the cue volume to go above <code>1.0</code> to the maximum of <code>3.0</code>.</td></tr><tr><td><code>Bell</code></td><td>Specifies how to launch a console bell (audible for beep sounds, visual for flashing console, or none for nothing)</td></tr><tr><td><code>LockCondition</code></td><td>Specifies an action that, if evaluated to true, will make Terminaux stop waiting and to allow the input to go through.</td></tr><tr><td><code>DisableLock</code></td><td>Allows input to go through without waiting for the lock function to evaluate to true.</td></tr></tbody></table>

{% hint style="info" %}
You can copy the above settings in one line using the overload of the `TermReaderSettings` constructor that allows you to specify another `TermReaderSettings` instance to copy the settings from that instance to the new one. This is useful if you want to use the global settings without affecting future reads. This is a simple example of how to copy the global settings and to set the password mask without affecting the global password mask:

<pre class="language-csharp"><code class="lang-csharp">// Doesn't affect future reads
<strong>var settings = new TermReaderSettings(TermReader.GlobalReaderSettings)
</strong><strong>{
</strong><strong>    PasswordMaskChar = '#'
</strong><strong>};
</strong>
// Affects future reads
TermReader.GlobalReaderSettings.PasswordMaskChar = '#';
</code></pre>

{% endhint %}
