Is there a way to use three keyboard languages, having two of them being switchable with a keystroke and the third one to be enabled by a hotkey?

5

I use Windows 8.1 and I constantly need two keyboard layouts - QWERTY (en) and ЙЦУКЕН (ru), but I also use Microsoft IME (ja) from time to time. Having all three of them enabled is extremely uncomfortable, since I have to cycle through two layouts to get to the third, but having to add and remove japanese layout every single time I need it is tideous and even less comfortable.

Is there a way to set Alt+Shift to switch between English-Russian-English layouts and a hotkey to temporarily enable Microsoft IME Japanese layout?

Adiost

Posted 2014-05-18T00:16:23.930

Reputation: 103

I'd probably use an auto-hotkey script which would handle the toggling and layouts for you. – nerdwaller – 2014-05-18T03:14:28.337

I apologize for the previous comment, as I didn't read the question all the way through. If you would be willing to compromise, my answer would still be valid, although you would have to use three different combinations to access those three layouts. – Doktoro Reichard – 2014-05-18T03:35:18.077

Answers

3

Note that this isn't exactly what the OP asked for. It will work for the intended purpose (of not having to deal with the Alt + Shift cycling combination) by instead having 3 different and separate combinations for each layout.

I'm using by reference what is written here in this 7tutorials post, mainly because it has accurate and explicit screenshots.

An important note though: the last steps refer only to changing the combination that deals with the keyboard layout switch. Selecting whatever keyboard layout you want (in your case, the Japanese IME) and then pressing "Change Key Sequence" will show a different window than the one presented. You can choose to combine Left Alt + Shift + a number between 0 and 9, for instance. As such, you could have the following setup:

  • Left Alt + Shift + 1 for the QUERTY (en) layout
  • Left Alt + Shift + 2 for the ЙЦУКЕН (ru) layout
  • Left Alt + Shift + 3 for the Japanese IME layout

How to Change the Keyboard Shortcut

To change the keyboard shortcut used for switching the input language, open the Language panel, found in "Control Panel -> Clock, Language, and Region -> Language".

Here, click or tap the Advanced Settings link on the left.

This takes you to the "Language Advanced Settings" panel. It should look similar to the screenshot below.

Click or tap the "Change language bar hot keys" link in the "Switching input methods" section.

A new window opens, named "Text Services and Input Languages". This is the place where you can change the keyboard shortcut for switching between input languages. Click or tap "Change Key Sequence".

Select the keyboard combination you would like to use as a shortcut and click or tap OK.

Doktoro Reichard

Posted 2014-05-18T00:16:23.930

Reputation: 4 896

I'm aware of custom shortcuts and yes, that doesn't work for me. Guess I'm off to making myself a switching script. Anyways, thanks for such a huge answer, even though it isn't exactly related to the question itself. – Adiost – 2014-05-18T06:38:02.967

At any rate, I wish you the best of luck in writing such script. A preliminary search in the AutoHotKey forums lead to this post, which might have what you need. If you do manage to write it, don't forget to share it.

– Doktoro Reichard – 2014-05-18T16:29:52.533

2

In earlier versions of Windows (up to Windows 7) it was possible to set US layout for Russian input language. With that it was possible to setup to have Russian input language with RU and US layouts, switchable by one key sequence, and Japanese input language, that you can switch to and from with another key sequence.

Alas, US layout for Russian input language was removed in later Windows versions. However it's possible to add any layout to any input language via PowerShell:

$OldList = Get-WinUserLanguageList
$OldList.Add("en-US")
$OldList[-1].InputMethodTips.Add("0409:00000419")
Set-WinUserLanguageList -LanguageList $OldList

This will add an English (United States) input language (0409) with US (00000409) and RU (00000419) layouts. Existing English (United States) input language will be overwritten.

Note: with this setup, Windows will sometimes start thinking that you have three input languages, despite listing only two, forcing you to cycle through all three languages instead of just Japanese and English/Russian. Add and remove an input language that should not be there to temporarily resolve this.

UPD: Keep in mind that spell check is dependent on current input language and not on keyboard layout, so you won't be able to have spell check in both languages. If you want to have spell check in Russian you will have to add a Russian input language with RU and US layouts instead:

$OldList = Get-WinUserLanguageList
$OldList.Add("ru-RU")
$OldList[-1].InputMethodTips.Add("0419:00000409")
Set-WinUserLanguageList -LanguageList $OldList

Note 2: You can lookup language and keyboard identifiers here. For example, you can use 0809 for English (United Kingdom) input language and 00000809 for en-GB layout.


Another minor inconvenience with this method (for me at least) is that with smaller taskbar icons input indicator will show ENG for both layouts. If you don't like big taskbar icons or have input indicator disabled, another option is using language bar with customized icons (by default it will show EN and a grey keyboard icon for both layouts).

To do that use an app linked in the description of this video, or follow the tutorial in the video to set icons in Registry:

  1. Enable language bar in the desktop version of the Language settings;
  2. Choose/prepare an icon (or two) to use for one of the (or both) layouts.
  3. Open registry editor and navigate to HKEY_CURRENT_USER\SOFTWARE\Microsoft\CTF;
  4. Create a new key inside and name it LayoutIcon;
  5. Lookup desired language and keyboard identifiers;
  6. Inside the LayoutIcon key, create key for desired input language (0409 for English (United States));
  7. In it create two keys for desired keyboard layouts (00000419 and 00000409 for US and RU layouts respectively);
  8. In each of them create String values named IconFile and REG_DWORD value IconIndex;
  9. Set IconFile to the path of the chosen icon resource (.ico, .icl, .dll). Set IconIndex to index of icon in the resource file or 0 for .ico;
  10. Restart shell or reboot for changes to take effect.

This might reset after some system updates, so it's best to keep the app/tutorial saved on your drive somewhere (together with icon(s), preferably).


All in all, it's not the perfect solution, but i think it's the closest one.

HYBRID BEING

Posted 2014-05-18T00:16:23.930

Reputation: 21