Version 2.3
Braille IME Helper (BrlIMEHelper) enables users to input Chinese characters directly through the braille keyboard on a braille display. When no braille keyboard is available, the addon can also simulate it using a computer keyboard. With conversion from braille input to IME operations by the addon, users familiar to braille rules can input Chinese characters without learning other input methods and keyboard layouts. So far, the addon is an implementation based on bopomofo braille and 微軟注音 IME commonly used in Taiwan, and its concept can be extended to other braille systems and IMEs in the future.
Before installation, check the following environment settings:
This addon assumes that the user configures the IME as follows, but he/she can also change related options to suit the actual circumstance.
Windows version | Windows 10 2004 and above | Vista to Windows 10 1909 | Windows XP Service Pack 3 |
---|---|---|---|
Default IME | 微軟注音 | 微軟注音 | 美式鍵盤 |
Default composition mode | Alphanumeric | Alphanumeric | Native (新注音) |
Composition mode toggle | [Ctrl]+[Space] |
Left [Shift] |
[Ctrl]+[Space] |
Keyboard layout | Standard | Standard | Standard |
Remarks | Switch between 美式鍵盤 and 新注音 by [Ctrl]+[Space] . |
The addon provides both computer-keyboard and braille-keyboard gestures. Before introduction, please comprehend the following terms:
Here is a summary to show the most basic computer keyboard gestures the user has to know. The addon provides three ways to help the user typewrite in braille: the braille input mode, the general input mode, and the dot-by-dot input manner, which are described in the following three subsections.
[;:]
, and space bar: Dot 1 through 8 and braille space.[.]
: Complete input of one braille cell.[/]
: View uncommitted braille cell.It is the default mode. Nine keys on the computer keyboard are selected to emulate the physical braille keyboard, which are F, D, S, J, K, L, A, semicolon [;:]
, and the space bar by default. The process that NVDA handles the input by the emulated braille keyboard is the same as that for the braille input generated by a physical braille keyboard. Thus, they enable the user to typewrite in input translation rules and to send braille gestures.
Note: Success of the input depends on the physical constraints of the computer keyboard. For a computer keyboard without NKRO, it is possible that press of some pair of keys results in the effect of pressing only one of them. Before bug report about unreasonable behavior caused by the emulated braille keyboard, please check correctness of the braille input through input help of NVDA.
The general input mode also helps the user, especially who is familiar to the computer keyboard but not adapt himself/herself to the IME keyboard mapping, typewrite in braille. Its difference from the braille input mode is the correspondence between the keys and the braille patterns. A key (with or without Shift) corresponds to a braille pattern, which is defined by the OUTPUT translation table. Here are two examples for the reader to comprehend its usage and effect.
Example 1:
After the three steps, you would find that the braille pattern of the output text is the same as your input characters, but the text actually consists of Unicode braille characters, which show the process of your braille input. That is, if the input translation table is not "Unicode braille", then these Unicode braille characters will be translated back to the ordinary alphanumeric symbols before output.
Example 2: (not implemented yet)
a&'=1
After the three steps, you would find that the composition window displays 中文 or other Chinese characters read as ㄓㄨㄥㄨㄣˊ. That is, the braille pattern of a&'=1
is ⠁⠯⠄⠿⠂, which is the same as that of 中文.
Some users are used to input in braille, but not enough flexibility of their finger joints makes them commit many mistakes during the process of operating the physical braille keyboard or the braille input mode. The design of the general input mode attempts to facilitate their input process. On touching the braille cells, the reader usually thinks of the characters they represent rather than the numbers of the dots. Conversely, it's just as easy for the user to express the desired braille cells with characters. In this mode, the addon translates the computer keyboard presses into the braille input messages according to the current braille output translation table. For example, "f" is translated into ⠋, which is determined by the current braille output translation table. Then, a key press on a computer keyboard generating a lowercase f represents the braille input of ⠋. In other words, to type "f" by the computer keyboard is equivalent to simultaneous presses of the dots 1, 2, and 4 on the braille keyboard.
As shown in the explanation of the two examples, the general input mode has no effect in the IME alphanumeric input mode with the usual configuration. Therefore, it is the extension of "Disable braille keyboard simulation in IME alphanumeric mode" prior to version 2.3 of the addon.
Note: The method to generate a braille gesture in this mode follows that in the braille input mode, i.e. to hold down the braille space along with the other dot 1 to dot 8 simultaneously.
Remark: If press of the space bar does not result in a Unicode braille space (⠀), then it is caused by a bug of the old NVDA versions. Please upgrade NVDA to fix this problem.
The dot-by-dot input manner is independent of the other two braille keyboard emulation modes. If it is enabled, the user can input dot numbers of each braille cell via the numpad with Num Lock on. For example, [1][2][.] [1][2][3][5][.] [1][2][3][.]
results in "brl" displayed in the text edit. The functions of the numpad keys are presented by the summary at the beginning of this section. The manner allows the user to send braille gestures consisting of more than 6 dots (or space) regardless of the physical constraint of the computer keyboard.
A braille gesture consists of the braille space and other braille dot(s). It allows the user to execute some specific function or emulate some key shortcut by the braille keyboard. With these braille gestures, the user may reduce the chance of moving his/her hands away from braille keys, and thus efficiency of operation is enhanced.
The subsequent two subsections introduce braille gestures. The first subsection outlines some common braille gestures and suggestions for the user to quickly remember them. The second subsection provides a table to enumerate all braille gestures defined by this addon. Note that braille gestures executing BrlIMEHelper functions are available via both physical and virtual braille keyboards, but other braille gestures can only be used with the virtual braille keyboard.
To simplify subsequent content of the section, a braille gesture is described only by its braille dot(s), without mentioning the braille space.
Compatibility warning: NVDA versions earlier than 2018.3 disallow braille input from "No braille", so source of gestures provided by the addon is "braille keyboard". If the running braille display driver does not define the same gesture, then braille input generated by its physical braille keyboard may cause execution of them, which does not happen in newer NVDA versions.
BrlIMEHelper Functions
Dots (+ braille space) | Function | Quick Memory |
---|---|---|
456 | Switch between IME alphanumeric and native input modes | The same as 視窗導盲鼠系統 |
1 | Review the braille buffer | |
245 | Clear braille buffer on typo to re-enter the correct content | ㄘ of 錯(ㄘㄨㄛˋ) is represented by dots 2, 4, and 5 |
123 | Switch between braille keyboard emulation modes in IME alphanumeric input | The same as 視窗導盲鼠系統 |
136 | Switch between the Unicode braille input translation table and any other table | The first alphabet of Unicode u is represented by dots 1, 3, and 6 |
What a user just enters in native input mode is stored in the braille buffer before finish of composition. For example, 135 126 is insufficient for composition, but a review of the braille buffer shows that ㄅㄛ has been entered.
2, 4, 5 + space has an additional effect. It makes NVDA dismiss braille message without update of any control content.
After press of dots 1, 3, 6 + space, the braille input translation table becomes "Unicode braille" immediately. The next press will let it become the original table selected by the user. However, if the original braille input translation table is "Unicode braille", then it will become "English (U.S.) 8 dot computer braille".
Document Editing
Dots (+ braille space) | Function | Quick Memory |
---|---|---|
346 | [ ↑] |
|
146 | [ ↓] |
|
126 | [ ←] |
Gesture of dots 1, 2, 6 represents < pointing to the left |
345 | [ →] |
Gesture of dots 3, 4, 5 represents > pointing to the right |
45 | [Home] (move the cursor to head of a line) |
|
1246 | [End] (move the cursor to end of a line) |
|
246 | Page Up (move the cursor to the previous page) | |
1256 | Page Down (move the cursor to the next page) | |
1247 | [Ctrl]+[F] (find) |
Dot 7 (Ctrl) + dots 1, 2, 4 (f) |
17 | [Ctrl]+[A] (select all) |
Dot 7 (Ctrl) + dot 1 (a) |
147 | [Ctrl]+[C] (copy) |
Dot 7 (Ctrl) + dots 1, 4 (c) |
13467 | [Ctrl]+[X] (cut) |
Dot 7 (Ctrl) + dots 1, 3, 4, 6 (x) |
12367 | [Ctrl]+[V] (paste) |
Dot 7 (Ctrl) + dots 1, 2, 3, 6 (v) |
13567 | [Ctrl]+[Z] (undo) |
Dot 7 (Ctrl) + dots 1, 3, 5, 6 (z) |
3456 | [Delete] (remove text right to the cursor) |
It is easy to link cross shape of # to "delete" |
Windows System Key Shortcuts
Dots (+ braille space) | Function | Quick Memory |
---|---|---|
14 | [Ctrl] (left) |
The first alphabet c is represented by dots 1 and 4 |
134 | [Alt] (left) |
The first alphabet m of "menu" is represented by dots 1, 3, 4 |
234 | [Shift] (left) |
The first alphabet s is represented by dots 2, 3, 4 |
2456 | [Win] (left) |
The first alphabet w is represented by dots 2, 4, 5, 6 |
34 | [Tab] |
The first alphabet t contains dots 3 and 4 |
16 | [Shift]+[Tab] |
Dots 1 and 6 form a reverse shape of dots 3 and 4 |
12346 | [App] (show the popup menu) |
|
1346 | [Alt]+[F4] (close the window) |
The [X] button at the top right of a window |
2346 | [Esc] |
|
25678 | [Win]+[D] (show the desktop) |
Dots 7 and 8 (Win) + dots 2, 5, 6 (d at lower position, i.e. 4) |
678 | [Win]+[T] (switch to the toolbar) |
|
27, 237, ..., 357, 3567 | [F1] through [F10] |
Dot 7 + ten braille digits |
NVDA Operations
Dots (+ braille space) | Function | Quick Memory |
---|---|---|
1345 | [NVDA]+[N] (show the NVDA menu) |
The alphabet key is N |
12456 | [NVDA]+[ ↓] (say all from the system caret) |
The dots form a shape of a down-pointing thumb |
12356 | [NVDA]+[F9] (mark the beginning position) |
The meaning of "begin" of a left parenthesis |
23456 | [NVDA]+[F10] (mark the end position) |
The meaning of "end" of a right parenthesis |
2, 23, ..., 35 | Numpad 1 through 9 (review cursor operations) | Digits represented by dots 2, 3, 5 and 6 |
Here is a table listing all supported braille gestures.
Before start, pease note that functions of most of the braille gestures can be induced by dot 7 and dot 8. Dot 7 represents that the emulated key shortcut contains [Ctrl]
, or it is one of function keys [F1]
to [F12]
. Dot 8 represents that the emulated key shortcut contains either [Alt]
or [NVDA]
key. Both dots 7 and 8 represents that the emulated key shortcut contains either of [Ctrl]+[Alt]
and [Win]
. Anyway, proper comprehension of the design principle would help the reader to remember a lot of braille gestures at short notice.
The original proposal of design in Chinese is available in message #3664 of nvda-tw group.
Dots (+ braille space) | Function | + dot 7 | + dot 8 | + dots 7 and 8 |
---|---|---|---|---|
1 | Review the braille buffer | [Ctrl]+[A] |
[Alt]+[A] |
[Ctrl]+[Alt]+[A] |
12 | None | [Ctrl]+[B] |
[Alt]+[B] |
[Ctrl]+[Alt]+[B] |
14 | [Ctrl] |
[Ctrl]+[C] |
[Alt]+[C] |
[Ctrl]+[Alt]+[C] |
145 | None | [Ctrl]+[D] |
[Alt]+[D] |
[Ctrl]+[Alt]+[D] |
15 | None | [Ctrl]+[E] |
[Alt]+[E] |
[Ctrl]+[Alt]+[E] |
124 | None | [Ctrl]+[F] |
[Alt]+[F] |
[Ctrl]+[Alt]+[F] |
1245 | None | [Ctrl]+[G] |
[Alt]+[G] |
None |
125 | None | [Ctrl]+[H] |
[Alt]+[H] |
[Ctrl]+[Alt]+[H] |
24 | None | [Ctrl]+[I] |
[Alt]+[I] |
[Ctrl]+[Alt]+[I] |
245 | Clear braille buffer on typo to re-enter the correct content | [Ctrl]+[J] |
[Alt]+[J] |
[Ctrl]+[Alt]+[J] |
13 | None | [Ctrl]+[K] |
[Alt]+[K] |
[Ctrl]+[Alt]+[K] |
123 | Switch between braille keyboard emulation modes in IME alphanumeric input | [Ctrl]+[L] |
[Alt]+[L] |
[Ctrl]+[Alt]+[L] |
134 | [Alt] |
[Ctrl]+[M] |
[Alt]+[M] |
[Ctrl]+[Alt]+[M] |
1345 | Show the NVDA menu | [Ctrl]+[N] |
[Alt]+[N] |
None |
135 | None | [Ctrl]+[O] |
[Alt]+[O] |
[Ctrl]+[Alt]+[O] |
1234 | None | [Ctrl]+[P] |
[Alt]+[P] |
None |
1235 | None | [Ctrl]+[R] |
[Alt]+[R] |
None |
234 | [Shift] |
[Ctrl]+[S] |
[Alt]+[S] |
[Ctrl]+[Alt]+[S] |
2345 | None | [Ctrl]+[T] |
[Alt]+[T] |
None |
136 | Switch between the Unicode braille input translation table and any other table | [Ctrl]+[U] |
[Alt]+[U] |
[Ctrl]+[Alt]+[U] |
1236 | None | [Ctrl]+[V] |
[Alt]+[V] |
None |
2456 | [Win] |
[Ctrl]+[W] |
[Alt]+[W] |
None |
1346 | [Alt]+[F4] |
[Ctrl]+[X] |
[Alt]+[X] |
None |
1356 | None | [Ctrl]+[Z] |
[Alt]+[Z] |
None |
246 | [PgUp] |
[Ctrl]+[PgUp] |
[Alt]+[PgUp] |
None |
1256 | [PgDn] |
[Ctrl]+[PgDn] |
[Alt]+[PgDn] |
None |
12456 | Say all from the system caret | None | None | None |
45 | [Home] |
[Ctrl]+[Home] |
[Alt]+[Home] |
None |
2346 | [Esc] |
[Ctrl]+[Esc] |
[Alt]+[Esc] |
None |
3456 | [Delete] |
[Ctrl]+[Delete] |
[Alt]+[Delete] |
None |
1246 | [End] |
[Ctrl]+[End] |
[Alt]+[End] |
None |
146 | [ ↓] |
[Ctrl]+[ ↓] |
[Alt]+[ ↓] |
[Ctrl]+[Alt]+[ ↓] |
12346 | [App] |
None | None | None |
12356 | [NVDA]+[F9] |
None | None | None |
23456 | [NVDA]+[F10] |
None | None | None |
16 | [Shift]+[Tab] |
[Ctrl]+[Shift]+[Tab] |
[Alt]+[Shift]+[Tab] |
None |
346 | [ ↑] |
[Ctrl]+[ ↑] |
[Alt]+[ ↑] |
[Ctrl]+[Alt]+[ ↑] |
34 | [Tab] |
[Ctrl]+[Tab] |
[Alt]+[Tab] |
None |
126 | [ ←] |
[Ctrl]+[ ←] |
[Alt]+[ ←] |
[Ctrl]+[Alt]+[ ←] |
345 | [ →] |
[Ctrl]+[ →] |
[Alt]+[ →] |
[Ctrl]+[Alt]+[ →] |
456 | Switch between IME alphanumeric and native input modes | None | None | None |
2 | Move the review cursor to the previous character of the current navigator object and speak it | [F1] |
Switch to the previous review mode | [Win]+[A] |
23 | Report the character of the current navigator object where the review cursor is situated | [F2] |
Move the navigator object to the first object inside it | [Win]+[B] |
25 | Move the review cursor to the next character of the current navigator object and speak it | [F3] |
None | [Win]+[X] |
256 | Move the review cursor to the previous word of the current navigator object and speak it | [F4] |
Move the navigator object to the previous object | [Win]+[D] |
26 | Speak the word of the current navigator object where the review cursor is situated | [F5] |
Report the current navigator object | None |
235 | Move the review cursor to the next word of the current navigator object and speak it | [F6] |
Move the navigator object to the next object | None |
2356 | Move the review cursor to the previous line of the current navigator object and speak it | [F7] |
Switch to the next review mode | None |
236 | Report the line of the current navigator object where the review cursor is situated | [F8] |
Move the navigator object to the object containing it | None |
35 | Move the review cursor to the next line of the current navigator object and speak it | [F9] |
None | [Win]+[I] |
356 | None | [F10] |
Perform the default action on the current navigator object | None |
5 | Click the left mouse button once at the current mouse position | [F11] |
Move the mouse pointer to the current navigator object | None |
56 | Read from the review cursor up to the end of the current text, moving the review cursor as it goes | [F12] |
None | None |
3 | None | None | Report information about the location of the text or object at the review cursor | [Win]+[Tab] |
36 | None | None | Set the navigator object to the current focus, and the review cursor to the position of the caret inside it, if possible | Open the control panel |
6 | Click the right mouse button once at the current mouse position | None | Set the navigator object to the current object under the mouse pointer and speak it | [Win]+[T] |
None | Braille space | [Win]+[Space] |
[Alt]+[Space] |
[Win]+[Shift]+[Space] |
Most users configure NVDA to automatically dismiss the current braille message within a few seconds. If it is necessary to read some message carefully, then the user can execute this function through a self-defined input gesture. The message will stay on the braille display as if the "Show indefinitely" checkbox in the NVDA preference settings were checked. Thus, it is suggested to bind the function to a handy gesture, which may be completed within a few seconds.
If checked, braille keyboard simulation is enabled automatically when NVDA starts.
It determines the key command sent by the addon when the user presses dots 4, 5, and 6 along with the braille space. To keep the behavior consistent, the default is left shift.
Note: Windows XP users, please configure the default input mode of 新注音 to native input if you would like to use [Ctrl]+[Space]
to switch between 美式鍵盤 and 新注音.
The option is an extension from "Disable braille keyboard simulation by default in IME alphanumeric mode" of the version earlier than 2.3. If checked, the ASCII mode is the default mode of braille keyboard emulation on IME alphanumeric input. See "Computer Keyboard" section of the gesture specification for details of the modes.
Users can determine positions of braille dots, braille space, and ignored (reserved) keys for braille keyboard simulation in BrlIMEHelper settings dialog. Braille keyboard simulation is automatically disabled when either of the "Braille Keys" or the "Ignored Keys" edit control is focused. Exact 9 braille keys are required, but number of ignored keys is unlimited. If a key appears in both options, "Braille Keys" takes precedence. After entering all key positions by single computer keyboard strokes, [Apply]
or [OK]
button press is necessary to take effect. Occasionally, the "Braille Keys" option may not fully work, because simultaneous transmission of some key commands is unsupported by internal design of your computer (or notebook) keyboard. Please change your configuration to find a set of feasible braille keys.
If checked, all keys, except the braille keys, are ignored during braille keyboard simulation in IME alphanumeric input mode.
The option corresponds to the configuration of keyboard layout in IME native input mode.
If checked, the user can input braille cells dot by dot via the numpad with Num Lock on.
The two options determines indication of toggle of braille keyboard simulation. Particularly, automatic toggling may occur after change of foreground window and/or options of the addon.
If checked, there is only one single state of braille keyboard simulation toggle, which is the behavior of all versions earlier than 2.0. Otherwise, the addon logs state of each process independently. A user who allows different IMEs for different windows may uncheck this option to reduce times of toggling braille keyboard simulation. Note that all toggle states of processes become the default state of NVDA starting if this option is changed from unchecked to checked.
The computer keyboard can emulate braille input from both the current working braille display and "No braille". When conflict happens, the precedence is determined by this option. On default, gestures provided by the addon take precedence.
[Apply]
button into the settings dialog.