| ~~~~~~~~ |
| Profiles |
| ~~~~~~~~ |
| |
| .. include:: prologue.rst |
| |
| Description |
| =========== |
| |
| A profile is an activatable group of settings which explicitly override the |
| ones that were established via command line options, the configuration file |
| (``brltty.conf``), the preferences file (``brltty.prefs``), etc when BRLTTY |
| was invoked. Profiles must be placed in the ``/etc/brltty/Profiles/`` |
| directory (see |README.Customize| for more details). |
| |
| A profile must be encoded in UTF-8. Blank lines are ignored. If the first |
| non-whitespace character of a line is ``#`` then that line is a comment and is |
| ignored. The `Standard Directives`_ are supported. All other lines specify the |
| settings that are to be overridden, and must be in the form: |
| |
| .. parsed-literal:: *name* *value* |
| |
| Each type of profile has the following properties: |
| |
| * A specific group of settings that it can override. |
| * Its own file extension. |
| * Its own selector within BRLTTY's Profiles submenu. |
| * Its own SET_*_PROFILE command for direct selection (see |
| `Profile Selection`_). |
| |
| Supported Profile Types |
| ----------------------- |
| |
| Language Profiles |
| ~~~~~~~~~~~~~~~~~ |
| |
| A language profile must have the ``.lpf`` file extension. It can override the |
| following settings: |
| |
| * locale |
| * speech-driver |
| * speech-parameters |
| * text-table |
| * contraction-table |
| |
| For example, a profile for the German language might look like this:: |
| |
| locale de_DE.UTF-8 |
| speech-driver es |
| speech-parameters voice=de,maxrate=300 |
| text-table de |
| contraction-table de-g2 |
| |
| All of the speech driver parameters must be specified on a single line, and be |
| separated from one another by a comma (``,``). |
| |
| Profile Selection |
| ----------------- |
| |
| Each type of profile has a selector within BRLTTY's Profiles submenu. The |
| selector for a given profile type allows for setting that type of profile |
| either to ``off`` (which means "no profile") or to any of the files in the |
| ``/etc/brltty/Profiles/`` directory which have the file extension for that type |
| of profile. The file names are sorted alphabetically. |
| |
| If you'd like to select a profile directly (rather than use the Profiles |
| submenu) then you can define key bindings for the appropriate ``SET_*_PROFILE`` |
| command. For example, if you'd like to directly select your language profile |
| then you'd define bindings for the ``SET_LANGUAGE_PROFILE`` command. You may |
| add your bindings either to the keyboard table that you're using or to the key |
| table for your braille device. Except for a few examples below, exactly how to |
| do this is beyond the scope of this document (see |README.KeyTables| for |
| details). |
| |
| One approach is to define a single binding which involves a routing key. For |
| example:: |
| |
| bind Key1+Key2+RoutingKey SET_LANGUAGE_PROFILE |
| |
| Using this paradigm, the leftmost routing key means to use no language profile, |
| and the next few routing keys select each of your language profiles in the same |
| order as they appear within the Language selector of the Profiles submenu. |
| |
| Another approach is to define a specific binding for each language profile. For |
| example:: |
| |
| bind Key1+Key2 SET_LANGUAGE_PROFILE+0 |
| bind Key1+Key3 SET_LANGUAGE_PROFILE+1 |
| bind Key2+Key3 SET_LANGUAGE_PROFILE+2 |
| bind Key1+Key2+Key3 SET_LANGUAGE_PROFILE+3 |
| |
| Using this paradigm, the binding for ``+0`` (Key1+Key2) means to use no |
| language profile, and the bindings for ``+1`` (Key1+Key3), ``+2`` (Key2+Key3), |
| etc select each of your language profiles in the same order as they appear |
| within the Language selector of the Profiles submenu. |
| |
| A practical approach, which would make it easy to remember the bindings, might |
| be to use a keyboard table, and to use a simple key combination plus a |
| meaningful letter for each language name. Let's say that your primary language |
| is English, and that you also use French and German. In this case, your default |
| settings (no profile) would be for English, and you'd create french.lpf for |
| French and german.lpf for German. You could then define a set of bindings which |
| use ``e`` for English, ``f`` for French, and ``g`` for German. For example:: |
| |
| bind ShiftLeft+ShiftRight+!e SET_LANGUAGE_PROFILE+0 |
| bind ShiftLeft+ShiftRight+!f SET_LANGUAGE_PROFILE+1 |
| bind ShiftLeft+ShiftRight+!g SET_LANGUAGE_PROFILE+2 |
| |
| The ``+1`` binding would activate ``french.lpf`` and the ``+2`` binding would |
| activate ``german.lpf`` because that's how the profile name list would be |
| sorted. If, however, you choose to use the native language names then you'd |
| have ``deutsch.lpf`` for German and ``français.lpf`` for French. In this case, |
| you'd need a different set of bindings because ``deutsch.lpf`` (for German) |
| sorts before ``français.lpf`` (for French):: |
| |
| bind ShiftLeft+ShiftRight+!e SET_LANGUAGE_PROFILE+0 |
| bind ShiftLeft+ShiftRight+!d SET_LANGUAGE_PROFILE+1 |
| bind ShiftLeft+ShiftRight+!f SET_LANGUAGE_PROFILE+2 |
| |
| When adding the bindings to a key table, they should most likely be defined |
| within the default context. The best way to ensure this is to add them at the |
| very end of the appropriate key table or subtable, and to add the ``context |
| default`` statement just before them. For example:: |
| |
| context default |
| bind Key1+RoutingKey SET_LANGUAGE_PROFILE |
| |
| If you'd like your additional binding definitions to survive a BRLTTY reinstall |
| then you should use a customized key table or subtable (see |README.Customize|) |
| that includes the provided one, and then defines your additiional bindings. |
| Let's say that you'd like to add your bindings to the ``laptop`` keyboard table |
| (``laptop.ktb``). Create a file with the same name - ``laptop.ktb`` - in the |
| ``/etc/xdg/brltty/`` directory, and, with an editor, make it look like this:: |
| |
| include laptop.ktb |
| context default |
| bind Key1+Key2+RoutingKey SET_LANGUAGE_PROFILE |
| |
| Standard Directives |
| =================== |
| |
| .. include:: nesting-directives.rst |
| .. include:: variable-directives.rst |
| .. include:: condition-directives.rst |
| |