Ibus-typing-booster Get faster typing experience by intelligent context sensitive completion. Backdrop & Introduction Ibus-typing-booster is a completion input method to speed-up typing. The project was started in 2010 for [1]Fedora 15. The original purpose was to make typing of Indic languages easier and faster by providing completion and spell checking suggestions. Originally it was forked from [2]ibus-table whose developer was Yu Yuwei [3] acevery@gmail.com, with contributions from Caius("kaio") [4]chanceme@kaio.net . Since then ibus-typing-booster has been improved to support many other languages as well by supporting input methods from the [5]m17n project. Since version [6]2.27.23 it finally supports all input methods from the [7] m17n project, including those offering multiple candidates. This means that since Version [8]2.27.23 it also supports Chinese and Japanese. ibus-typing-booster also has the capability to type several different languages at the same time without having to switch between languages. Developers • Mike Fabian [9]mfabian@redhat.com • Anish Patil: [10]anish.developer@gmail.com Features • Context sensitive completions. • Learns from user input. • Can be trained by supplying files containing typical user input. • If available, [11]hunspell dictionaries will also be used to provide not only completion but also spellchecking suggestions (But ibus-typing-booster can also work without hunspell by learning from user input alone). • Can be used with almost any keyboard layout. • Almost all input methods supplied by [12]libm17n are supported (including the [13]inscript2 input methods). • Several input methods and languages can be used at the same time without switching. • Predicts [14]Unicode symbols and emojis as well. Online documentation You can find online documentation here: • [15]ibus-typing-booster home page on github • [16]ibus-typing-booster documentation page Feature Requests & Bug reports • You can report bugs here: [17]ibus-typing-booster issue tracker on github • Request for new features here: [18]ibus-typing-booster pull request on github Contributing translations The best (& the easiest) way to contribute translations is using this [19] online translation platform. Development If you want to build from source or contribute to the development, see the [20]ibus-typing-booster development page. There you'd also find the requirements for building from source for most systems. Table of default key bindings • [21]Default key bindings • [22]Default mouse bindings Note: These bindings are also shown below for convenience. Some of these key bindings can be customized in the setup tool. The following table explains the defaults: ┌───────────────┬───────────────────────────────────────────────────────────┐ │Key Combination│ Effect │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Commit the preëdit (or the selected candidate, if any) and │ │Space │send a Space to the application, i.e. commit the typed │ │ │string followed by a space. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Return or │Commit the preëdit (or the selected candidate, if any) and │ │KP_Enter │send a Return or KP_Enter to the application. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Bound by default to the commands "select_next_candidate" │ │ │and "enable_lookup". │ │ │ │ │ │ • If the option "Enable suggestions by Tab" is not set │ │ │ (☐) then Tab always just executes │ │ │ "select_next_candidate" which selects the next │ │ │ candidate from the candidate list. │ │ │ • If the option "Enable suggestions by Tab" is set (☑), │ │ │ then no candidate list is shown by default: │ │Tab │ □ If no candidate list is shown: "enable_lookup" is │ │ │ executed which requests to show the candidate list │ │ │ (nothing might be shown if no candidates can be │ │ │ found). │ │ │ □ If a candidate list is already shown: │ │ │ "select_next_candidate" is executed which selects │ │ │ the next candidate in the list. After each commit │ │ │ and after each change of the contents of the │ │ │ preëdit, the candidate list will be hidden again │ │ │ until the "enable_lookup" requests it again. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Bound by default to the command │ │Shift+Tab │"select_previous_candidate". Selects the previous candidate│ │ │in the candidate list. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Bound by default to the command "cancel". │ │ │ │ │ │ • When a candidate is selected (no matter whether this is│ │ │ a normal lookup table or a "related" lookup table): │ │ │ Show the first page of that lookup table again with no │ │ │ candidate selected. │ │Esc │ • When no candidate is selected: │ │ │ □ When a lookup table with related candidates is │ │ │ shown or a lookup table where upper/lower-case has │ │ │ been changed by typing the Shift key is shown: go │ │ │ back to the original lookup table. │ │ │ □ When a normal lookup table is shown: close it and │ │ │ clear the preëdit. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │← │Move cursor one typed key left in the preëdit text. May │ │ │trigger a commit if the left end of the preëdit is reached.│ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Move cursor to the left end of the preëdit text. If the │ │Control+← │cursor is already at the left end of the preëdit text, │ │ │trigger a commit and send a Control+← to the application. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Move cursor one typed key right in preëdit text. May │ │→ │trigger a commit if the right end of the preëdit is │ │ │reached. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Move cursor to the right end of the preëdit text. If the │ │Ctrl+→ │cursor is already at the right end of the preëdit text, │ │ │trigger a commit and send a Ctrl+→ to the application. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Backspace │Remove the typed key to the left of the cursor in the │ │ │preëdit text. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Ctrl+Backspace │Remove everything to the left of the cursor in the preëdit │ │ │text. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Delete │Remove the typed key to the right of the cursor in the │ │ │preëdit text. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Ctrl+Delete │Remove everything to the right of the cursor in the preëdit│ │ │text. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │↓ │Bound by default to the command "select_next_candidate". │ │ │Selects the next candidate. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Bound by default to the command │ │↑ │"select_previous_candidate". Selects the previous │ │ │candidate. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Pg Up │Bound by default to the command "lookup_table_page_up". │ │ │Shows the previous page of candidates. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Pg Down │Bound by default to the command "lookup_table_page_down". │ │ │Shows the next page of candidates. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │F1 │Commit the candidate with the label "1" followed by a │ │ │space. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │F2 │Commit the candidate with the label "2" followed by a │ │ │space. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │... │... │ ├───────────────┼───────────────────────────────────────────────────────────┤ │F9 │Commit the candidate with the label "9" followed by a │ │ │space. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Remove the candidate with the label "1" from the database │ │Ctrl+F1 │of learned user input (If possible, if this candidate is │ │ │not learned from user input, nothing happens). │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Remove the candidate with the label "2" from the database │ │Ctrl+F2 │of learned user input (If possible, if this candidate is │ │ │not learned from user input, nothing happens). │ ├───────────────┼───────────────────────────────────────────────────────────┤ │... │... │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Remove the candidate with the label "3" from the database │ │Ctrl+F9 │of learned user input (If possible, if this candidate is │ │ │not learned from user input, nothing happens). │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Same as F1...F9 if the option "Use digits as select keys" │ │ │is enabled. Enabling that option makes selecting candidates│ │ │a bit easier because the number keys 1...9 are closer to │ │ │the fingers than F1...F9 on most keyboards. On the other │ │ │hand, it makes completing when typing numbers impossible │ │1...9 │and it makes typing strings which are combinations of │ │ │letters and numbers like "A4" more difficult. If digits are│ │ │used as select keys, numbers can only be typed when no │ │ │candidate list is shown. In most cases this means that │ │ │numbers can only be typed when nothing else has been typed │ │ │yet and the preëdit is empty. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Ctrl+1...Ctrl+9│Same as Ctrl+F1...Ctrl+F9 if the option “Use digits as │ │ │select keys” is enabled. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Bound by default to the command "toggle_emoji_prediction". │ │Alt+F6 │Toggle the emoji and Unicode symbol prediction on/off. This│ │ │has the same result as using the setup tool to change this.│ ├───────────────┼───────────────────────────────────────────────────────────┤ │ │Bound by default to the command "toggle_off_the_record". │ │ │Toggle the "Off the record" mode. This has the same result │ │ │as using the setup tool to change this. While "Off the │ │ │record" mode is on, learning from user input is disabled. │ │Alt+F9 │If learned user input is available, predictions are usually│ │ │much better than predictions using only dictionaries. │ │ │Therefore, one should use this option sparingly. Only if │ │ │one wants to avoid saving secret user input to disk it │ │ │might make sense to use this option temporarily. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Alt+F10 │Bound by default to the command "setup". Opens the setup │ │ │tool. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Alt+F12 │Bound by default to the command "lookup_related". Shows │ │ │related emoji and Unicode symbols or related words. │ ├───────────────┼───────────────────────────────────────────────────────────┤ │Alt+Space │Insert a literal space into the preëdit. │ └───────────────┴───────────────────────────────────────────────────────────┘ When more than one input method at the same time is used, the following additional key bindings are available: ┌───────────┬───────────────────────────────────────────────────────────────┐ │ Key │ Effect │ │Combination│ │ ├───────────┼───────────────────────────────────────────────────────────────┤ │Ctrl+↓ │Bound by default to the command "next_input_method". Switches │ │ │the input method used for the preëdit to the next input method.│ ├───────────┼───────────────────────────────────────────────────────────────┤ │ │Bound by default to the command "previous_input_method". │ │Ctrl+↑ │Switches the input method used for the preëdit to the previous │ │ │method. │ └───────────┴───────────────────────────────────────────────────────────────┘ Mouse bindings These mouse bindings are currently hard-coded and cannot yet be customized. ┌────────────────┬──────────────────────────────────────────────────────────┐ │ Mouse Event │ Effect │ ├────────────────┼──────────────────────────────────────────────────────────┤ │Button 1 click │Commit the candidate clicked on followed by a space (Same │ │on a candidate │as F1...F9). │ ├────────────────┼──────────────────────────────────────────────────────────┤ │Ctrl + Button 1 │Remove clicked candidate from database of learned user │ │click on a │input (If possible, if this candidate is not learned from │ │candidate │user input, nothing happens). │ ├────────────────┼──────────────────────────────────────────────────────────┤ │Button 3 clicks │Show related emoji and Unicode symbols or related words │ │on a candidate │(Same as Alt+F12). │ ├────────────────┼──────────────────────────────────────────────────────────┤ │Ctrl + Button 3 │Toggle the emoji and Unicode symbol prediction on/off │ │clicks anywhere │(Same as Alt+F6). This has the same result as using the │ │in the candidate│setup tool to change this. │ │list │ │ ├────────────────┼──────────────────────────────────────────────────────────┤ │ │Toggle the “Off the record” mode (Same as Alt+F9). │ │ │This has the same result as using the setup tool to change│ │ │this. │ │Alt + Button 3 │While "Off the record" mode is on, learning from user │ │clicks anywhere │input is disabled. If learned user input is available, │ │in the candidate│predictions are usually much better than those which │ │list │predictions use only dictionaries. Therefore, one should │ │ │use this option sparingly. Only if one wants to avoid │ │ │saving secret user input to disk it might make sense to │ │ │use this option temporarily. │ └────────────────┴──────────────────────────────────────────────────────────┘ References: [1] https://en.wikipedia.org/wiki/Fedora_version_history#Fedora_15 [2] https://github.com/acevery/ibus-table [3] mailto:acevery@gmail.com [4] mailto:chanceme@kaio.net [5] https://savannah.nongnu.org/projects/m17n/ [6] https://github.com/mike-fabian/ibus-typing-booster/releases/tag/2.27.23 [7] https://savannah.nongnu.org/projects/m17n/ [8] https://github.com/mike-fabian/ibus-typing-booster/releases/tag/2.27.23 [9] mailto:mfabian@redhat.com [10] mailto:anish.developer@gmail.com [11] https://github.com/hunspell/hunspell [12] https://pkgs.org/download/libm17n.so.0 [13] https://fedoraproject.org/wiki/QA:Inscript2_Keymaps [14] https://en.wikipedia.org/wiki/Unicode [15] http://mike-fabian.github.io/ibus-typing-booster/ [16] https://mike-fabian.github.io/ibus-typing-booster/docs/user/ [17] https://github.com/mike-fabian/ibus-typing-booster/issues [18] https://github.com/mike-fabian/ibus-typing-booster/pulls [19] https://translate.fedoraproject.org/projects/ibus-typing-booster/ [20] https://mike-fabian.github.io/ibus-typing-booster/docs/dev/ [21] https://mike-fabian.github.io/ibus-typing-booster/docs/user/#table-of-default-key-bindings [22] https://mike-fabian.github.io/ibus-typing-booster/docs/user/#mouse-bindings