How do I switch input modes in mozc without going to the IBus menu?
TLDR
Abstract
Steps to create the Japanese Mozc key bindings, to switch the input modes:
- Open a text editor (e.g. Gedit).
- Click on
Gnome Status
menu (Gnome's top-left bar) >IBus
menu (i.e. keyboard/input language selector) > SelectJapanese Mozc
input method. - Again, click on
Gnome Status Menu
>IBuz
>tools
>Properties
>Mozc Settings
window. - From
Keymap style
section > click oncustomize
button (first one). - Create new entries with your personal shortcuts to duplicate the japanese keys binding: hankaku/zenhankaku, muhenkan, eisu.
- If messed things up, click on
reset to defaults
button fromMozc Settings
window.
That's all!
Graphical abstract
Steps to create the key bindings to toggle Japanese syllabaries input mode.
Introduction:
The problem: how to type Japanese using a non-Japanese keyboard?
In Japanese (日本語, nihongo), you need to write using a lot of different symbols-sets. A informal categorization of these sets can be like:
- all
alphabetssyllabaries (ひらがな hiragana, かたかな katakana, 漢字 kanji, ローマ字 romaji), - (han)dakuten, contractions, combinations and variants (e.g. ゜maru, ゛tenten, uppercase, lowercase, full-width, half-width etc),
- symbols in Japanese style (e.g. Japanese period。, 「Japanese quote」, Japaneseーhiphen etc).
So, dedicated keys exists on Japanese keyboards to toggle between them. An analogy with occidental keyboard are the Capslock key to upper/lower-case or, Shift key to insert symbols. But the occidental keyboard hasn't these Japanese keys. So how to type in Japanese using a non-Japanese keyboard?
Solutions
Basically, two solutions can be listed:
- install a Japanese keyboard or,
- binding Japanese keys, by software level, in your non-Japanese keyboard.
Solution 1: Install a Japanese keyboard
Easiest solution so far. Acquire one Japanese keyboard, install and configure on your Operation System. But you need access to one, maybe buying one (with international credit card, taxes, waiting for shipping and so on).
Solution 2: Binding Japanese keys in your non-Japanese keyboard.
It is a cheap solution and you can use it in any keyboard you have. But you need to install software, configure, and memorize MANY key combinations. It is basically "a sea of shortcuts" to emulate the Japanese keyboard. Linux have some software to simulate a Japanese keyboard for using a non-Japanese keyboard.
Let's implement the solution 2.
Theoretical background
Linux input software layers
Our computer can receive inputs from many talked/typed languages and hardware (i.e. different keyboards and layouts). So it needs to organize the configurations and permit to the user choice between different languages. For example, a user can type one document in Italian AND English languages, at alternating times. So the software needs to show the user a way to change the language to be inputted.
The Linux user have 2 layers of software to configure the input method by keyboard:
- Input Method Framework (IMF): a class of software that organize the inputs (from keyboard, mouse etc), send to the correct destination (software, systems etc), and configure them.
- Input Method Editor/Engine (IME): a class of software that receives the inputted characters (from a keyboard), translate them to the desired input (i.e. idiom, language) and, send them to the Input Method Framework (IMF) to handle them. Basically, we have: from keyboard > (typed/inputted keys) > IME (receives and translate them) > (translated inputted keys) > IMF (handle translated inputted keys to destinations).
For the Linux user, an example o IMF is IBus; an a example of IME is MOZC. The first one will switch between all installed IMEs and switch between all idioms/languages installed too. The second one, if selected, will send to the IMF only Japanese keys, even if you typed in a non-Japanese keyboard. About Japanese IMEs, you can read more about here, and visualize the states/events in these diagrams:
Diagram 1:
Diagram 2:
Japanese keyboard
Layout
The Japanese keyboard layout (キーボード) is established by Japanese International Standard (JIS). First of all, let's contemplate the Japanese keyboard! Watch an open box video. You can see the vector draw bellow, showing clearly the Japanese keys:
Finally, some real pictures bellow:
Try to identify each key, slowly.
We have:
- Roman letter (QWERTY).
- Hiragana symbols.
- Small hiragana symbols.
- Han-dakuten symbols (maru, tenten).
- Arithmetic symbols.
- Capslock, shift, super, alt, tab, Ctrl, Enter, Backspace.
- Punctuation with Japanese style (period, quotes etc).
- and some special keys with Japanese words:
- muhenkan 無変換: don't convert kana to kanji.
- henkan 変換: convert kana to kanji.
- hiragana/Katakana/romaji カタカナ / ひらがな / ローマ字:
- hankaku/zenkaku 半角 / 全角: switch between half-width or full-width
- kanji 半角 / 全角 / 漢字: switch between kanji or English characters.
- eisū 英数: switch to alphanumeric characters.
You can have more description of these specific keys here. And read about the text frequency of hiragana, katakana e kanji and here.
Typing
How a Japanese user type on this keyboard?
- Answer 1: type phonetically, using romaji mode. Yes, they use romaji!
- Answer 2: it can type in kana mode, too, using hiragana keys.
For example, lets type "kakikukeko" in romaji mode
:
- First, select
romaji mode
. - Typing, in a QWERTY keyboard:
- type k, outputs:
k
. - type a, outputs:
か
(ka). - type k, outputs:
かk
. - type i, outputs:
かき
(kaki). - type k, outputs:
かきk
. - type u, outputs:
かきく
(kakiku). - type k, outputs:
かきくk
. - type e, outputs:
かきくけ
(kakikuke). - type k, outputs:
かきくけk
. - type o, outputs:
かきくけこ
(kakikukeko). - type ENTER, outputs:
かきくけこ
(kakikukeko ).
- type k, outputs:
Another example, type "kakikukeko" in hiragana mode
.
- First, select
kana mode
. - Typing, in a QWERTY keyboard:
- type t, outputs:
か
(ka). - type g, outputs:
かき
(kaki). - type k, outputs:
かきく
(kakiku). - type :, outputs:
かきくけ
(kakikuke). - type b, outputs:
かきくけこ
(kakikukeko). - type ENTER, outputs:
かきくけこ
(kakikukeko ).
- type t, outputs:
And to convert to katakana or kanji is the same thing.
You can toggle to katakana mode
or kanji mode
and type on romaji or hiragana.
And the computer will pop up an autocomplete window to you select your desired word.
Method
Now, we will use software to type Japanese in a non-Japanese keyboard. My system when I create this text was:
- My OS: Ubuntu 18.04.4 LTS
- My Japanese IME: Mozc 2.20.2673.102
- My IMF: Ibus 1.5.17
- My keyboard: Latin keyboard (with ç, ~, ^ and so on).
Install
Ubuntu came with the IMF IBus
(like a built in).
But if you need to install IBus:
sudo apt install ibus
Next, let's install our Japanese IME MOZC
:
sudo apt install ibus-mozc
Observation: look at the name of the package ibus-mozc
.
Its our IMF + IME names.
So, in future we can search on APT repositories for IMF and Japanese IME alternatives, like ibus-*
, or *-mozc
.
Installations completed!
Configurations
A Japanese keyboard has many different keys, to switch:
It is necessary to edit and memorize the Japanese input software's (binding) shortcut keys. Hiragana, katakana, kanji, romaji, upper/lower-case, full/half-width, Japanese symbols (period, quote, maru, tenten etc). So, you need to memorize/edit the keys to (des)activate the switches.
See the screenshots from before to get a hint of where the MOZC keymap is. To edit/read these keys on your Mozc:
- Open a text editor (e.g. Gedit) and stay with it in foreground.
- Select Mozc input mode:
Hold Super and press Space as many times as to select Mozc option.
Or click on:
IBus
(atGNOME Status Menu
) >Japanese (Mozc)
. - To read/edit these Japanese key bindings, click on:
IBus
(atGNOME Status Menu
) >Tools
>Properties
. - After
Mozc Setting
window popped up, click on:General
tab >Keymap
section (at bottom) > Keymap Stylecustomize
button (first one). - After
Mozc keymap editor
window popped up, click on: Scroll up and down to memorize and edit the Japanese keymap (bindings). - Probably, you may will toggle between all Mozc's input modes (hiragana, katakana, romaji etc) if you duplicate and edit these binding keys for your chosen shortcuts. Basically, to switch between syllabaries using MOZC, you need to memorize/edit/press:
- hankaku/zenhankaku key: to turn IME on/off.
- muhenkan key: to toggle kana syllabaries.
- eisu key (or shift+muhenkan keys) to toggle latin input (i.e. romaji).
From MOZC's source-code, see the table with all matches to the Japanese JIS special keys, as bellow:
...
Composition Eisu ToggleAlphanumericMode
Conversion Eisu ToggleAlphanumericMode
DirectInput Eisu IMEOn
Precomposition Eisu ToggleAlphanumericMode
...
Composition Hankaku/Zenkaku IMEOff
Conversion Hankaku/Zenkaku IMEOff
DirectInput Hankaku/Zenkaku IMEOn
Precomposition Hankaku/Zenkaku IMEOff
...
Composition Muhenkan SwitchKanaType
Conversion Muhenkan SwitchKanaType
Precomposition Muhenkan InputModeSwitchKanaType
...
You can consider to study/test other MOZC keys too, like:
...
DirectInput F13 IMEOn
...
Composition Ctrl i ConvertToFullKatakana
Conversion Ctrl i ConvertToFullKatakana
...
Composition Ctrl o ConvertToHalfWidth
Conversion Ctrl o ConvertToHalfWidth
Composition Ctrl p ConvertToFullAlphanumeric
Conversion Ctrl p ConvertToFullAlphanumeric
...
Composition Ctrl t ConvertToHalfAlphanumeric
Conversion Ctrl t ConvertToHalfAlphanumeric
Composition Ctrl u ConvertToHiragana
Conversion Ctrl u ConvertToHiragana
...
Composition F10 ConvertToHalfAlphanumeric
Conversion F10 ConvertToHalfAlphanumeric
DirectInput F13 IMEOn
Composition F2 ConvertWithoutHistory
Composition F6 ConvertToHiragana
Conversion F6 ConvertToHiragana
Composition F7 ConvertToFullKatakana
Conversion F7 ConvertToFullKatakana
Composition F8 ConvertToHalfWidth
Conversion F8 ConvertToHalfWidth
Composition F9 ConvertToFullAlphanumeric
Conversion F9 ConvertToFullAlphanumeric
...
Composition Henkan Convert
Conversion Henkan ConvertNext
DirectInput Henkan Reconvert
Precomposition Henkan Reconvert
...
Composition Hiragana InputModeHiragana
Conversion Hiragana InputModeHiragana
DirectInput Hiragana IMEOn
Precomposition Hiragana InputModeHiragana
...
Composition Katakana InputModeFullKatakana
Conversion Katakana InputModeFullKatakana
DirectInput Katakana IMEOn
Precomposition Katakana InputModeFullKatakana
...
Composition Shift Muhenkan ConvertToFullAlphanumeric
Conversion Shift Muhenkan ConvertToFullAlphanumeric
Precomposition Shift Muhenkan ToggleAlphanumericMode
...
Composition Kanji IMEOff
Composition OFF IMEOff
Composition ON IMEOn
Conversion Kanji IMEOff
Conversion OFF IMEOff
Conversion ON IMEOn
DirectInput Kanji IMEOn
DirectInput ON IMEOn
Precomposition ASCII InsertCharacter
Precomposition Kanji IMEOff
Precomposition OFF IMEOff
Precomposition ON IMEOn
...
So, we need to create new shortcuts similar with these, like bellow (these are my shortcut sugestions):
...
Composition Ctrl j IMEOff
Conversion Ctrl j IMEOff
DirectInput Ctrl j IMEOn
Precomposition Ctrl j IMEOff
Composition Ctrl b SwitchKanaType
Conversion Ctrl b SwitchKanaType
Composition Ctrl y ToggleAlphanumericMode
Conversion Ctrl y ToggleAlphanumericMode
DirectInput Ctrl y IMEOn
Precomposition Ctrl y ToggleAlphanumericMode
...
If you are interested, you can read MOZC's romaji-hiragana conversion table.
- If you mess the things, click on
reset to defauts
button atMozc setting
window (opened in Step 3).
If you edit these shortcuts, please consider conflicts with your existing shortcuts from:
- Operating system shortcuts (Ubuntu).
- Graphical shell shortcuts (Gnome, KDE).
- App shortcuts (firefox, gedit, libreoffice, gimp).
- Personalized shortcuts (your personal shortcuts).
With these key bindings you can type very well in a non-japanese keyboard. We didn't binding the others japanese keys to let you study the subject.
Alternative solutions
Similar softwares
Im using IBus to be my input method editor (IME). But you can switch to other IMF/IME if you desire. Others IMEs are:
-
Anthy:
sudo apt install ibus-anthy
. -
KKC:
sudo apt install ibus-kkc
. -
SKK:
sudo apt install ibus-skk
.
The same as to input method framework (IMF), like:
-
Fcitx:
sudo apt install fcitx
.- and you need to change the IME when installing like:
-
sudo apt install fcitx-mozc
. -
sudo apt install fictx-kkc
. -
sudo apt install fictx-skk
.
-
- and you need to change the IME when installing like:
A list of IMF can be found List of input methods for Unix platforms and Linux input method framework brief summary.
Edit keymap file by a text editor
You can manage the keymap saving, editing, import/export and so on. To do that, read the file at source-code. If you wanna, you can download this file and edit it to be imported into your MOZC software.
So, to import/export the keymap file:
- At
GNOME Status Menu
, select MOZC input method. - Again at
GNOME Status Menu
, selectTools
>Properties
. - After
Mozc Setting
window popped up, click on:General
tab >Keymap
section (at bottom) > Keymap Stylecustomize
button (first one). - And after
Mozc keymap editor
window popped up, click on:Edit
button menu (at bottom) > clickimport from file...
orexport from file...
. With that you can save (export) your keymap editions. And you can to insert a new keymap edited by importing it.
That's all!
References
You may be interested in read this MOZC issue about how to switch between MOZC j-sylabaries. A good answer about MOZC inputs can be found here. A brief about MOZC input at askubuntu. A lot of questions commented about MOZC and input method. Answers to start MOZC in Hiragana mode.
It seems that on Windows with Google Japanese Input, the Hankaku/Zenkaku key gets automatically remapped to Alt+`. Either this doesn't happen on Ubuntu with mozc, or the Alt+` sequence is being intercepted somewhere (maybe by Unity for the switch-group command?).
In any case, all I needed to do was to go to System Settings > Text Entry > Japanese (mozc) > Settings > General > Keymap style → Customize... and rebind all instances of the Hankaku/Zenkaku key to some other key combination. I was working off of the MS-IME keymap as a base, so I only needed to change the "Activate IME" and "Deactivate IME" commands to something else.
It would have been nice if I could have used Alt+`, but that doesn't seem to be possible. Oh well.
I wasn't able to get it to work on ibus, but if you switch from ibus-mozc to fcitx-mozc input, you can use the ` key as the zenkaku (全角) toggle key to switch between romaji and hiragana input without going to the drop-down menu.
To switch to fcitx from ibus:
- Open Language Support
- Under Keyboard Input Method System, select fcitx
- Log out and back in
- Open Text Entry
- Click the + button
- Select Mozc (Fcitx)
- Click Add