If you’re studying Chinese, Japanese or Korean and use a Linux operating system, you’ll probably discover that SCIM (‘Smart Common Input Method’, the input system for CJK languages) does not work with Anki (a piece of brilliant SRS study software”)).
When you press ctrl + space to trigger CJK input in Anki, nothing happens. This is pretty disappointing.
Fixing SCIM in Anki
The problem is nearly always fixable though, and it only takes a few minutes to sort it out.
This article takes an ‘all bases covered’ approach, in the hope of catching whatever error is causing SCIM not to trigger in Anki. Your best bet is probably to go through the steps here and test SCIM input in Anki after each one; there’s no point making further changes once it’s working.
Input method selected
The first thing is to check that SCIM is set as the input method in your system’s settings. On Ubuntu or Linux Mint, go to Administration → Language Support and make sure that where it says ‘Keyboard input method system:‘, ‘scim-bridge’ is selected:
Some settings in SCIM
It’s also a good idea to check that your keyboard layout is correctly set in SCIM, and to disable one of the options. Open up SCIM settings, set your keyboard layout and uncheck the option that says ‘Embed Preedit string into client window’:
X input method
It might also be necessary to set SCIM as the input method in X’s settings (X is the window manager in a lot of Linux distros). You just need to edit one file:
sudo gedit /etc/X11/xinit/xinput.d/scim
And find these two lines:
Change those two lines to the following:
Another potential problem might be an incorrectly configured or incomplete locale in Anki’s settings.
To find out the locale of your system, run this in a terminal:
You should get a list of variables. The top one is what you want; copy what it says after ‘LANG=’, for example:
Now open another file:
sudo gedit /etc/scim/global
And add what you copied to the line ‘/SupportedUnicodeLocales = ‘, using commas to separate multiple locales. For example:
/SupportedUnicodeLocales = en_GB.utf8,en_US.UTF-8
Anki uses the Python QT module, and this often fails to work with SCIM.
Make sure you’ve got scim-bridge-client-qt4 and python-qt4 installed:
sudo apt-get update sudo apt-get install scim-bridge-client-qt4 python-qt4
Then edit a file to make sure QT applications (and some others) know to use SCIM as an input method:
sudo gedit /etc/profile
Go to the bottom of that file and add this:
# SCIM export XMODIFIERS='@im=SCIM' export GTK_IM_MODULE="scim-bridge" export XIM_PROGRAM="scim-bridge -d" export QT_IM_MODULE="scim-bridge" scim -d
It may be necessary to install a GUI to play with the settings for python qt:
sudo apt-get install qt4-qtconfig
Once that has installed, run:
This will bring up the GUI. The settings we want to change are on the ‘Interface’ tab. At the bottom of this tab, check that ‘Default Input Method’ is set to ‘scim-bridge’. It might also be necessary to change ‘XIM Input Style’ to ‘Over The Spot’:
Now log out and in (or restart) to refresh all the relevant programs. SCIM should now be working in Anki.
Some other things to try
If none of that worked, there are still some options left. In the steps above, ‘scim-bridge’ was used as the input module in all cases. You could try replacing this with ‘scim’ or ‘scim-immodule’.
There’s also a SCIM input module specifically for QT applications, so it may be worth installing that and setting it as the input method for QT:
sudo apt-get install scim-qtimm
Then in the steps given above, use ‘scim-qtimm’ as the input module wherever QT is mentioned.
If none of this works, then unfortunately it may be time to start reinstalling things (SCIM, Anki, even the OS if you think it’s worth it).