19

I am using Windows 7 Ultimate on a Windows network. My default settings is Danish locale, Danish keyboardlayout, but English system language. I only have Danish keyboard layout installed (in Text Services and Input Languages).

However, at the login screen I can choose Danish and English, but whatever I choose Windows 7 changes system language (and keyboard layout!) to English (United States). Since this is a per-App setting I must change the language setting (language bar in the taskbar)

Where can this be changed system wide and permament?

2

8 Answers 8

16

I had the same issue of it changing regions on me.

I right clicked the keyboard icon in the lower right taskbar and unchecked "auto adjust".

French screenshot:

Screenshot of French version of the "auto adjust" setting

3
  • Don't know why this doesn't have more upvotes... simple and exactly what is needed
    – freefaller
    Jan 9, 2016 at 9:29
  • @user413734 - Where precisely do you see "Auto Adjust"? Thank you.
    – nsandersen
    Apr 19, 2016 at 9:29
  • @nsandersen Minimize the language bar if you have it. Right click the keyboard at the bottom right, in the taskbar. Click auto-adjust. See picture (in French) imgur.com/2N59XpF
    – David G
    Jun 22, 2016 at 18:09
8

Open the Region and Languages in the Control Panel and do this:

Click the Keyboards and Languages tab and click Change keyboards...

enter image description here

From here you can either change the Default input language to Danish.

enter image description here

Or you can completely remove the US Keyboard.

enter image description here

Doing either one of these should result in you being able to use only the Danish keyboard instead of having to change it per-app as it makes it the default system-wide.

4
  • 1
    KCotreau, Thiago M: If it just was that simple ... As mentioned, I already have ONLY Danish Keyboard installed. So my setup is as shown by Thiago above, but ONLY Danish keyboard. Anyway, when rebooting, the language settings are EN and so is the keyboard. ChrisF, sorry about the emphasis in the original post - frustration...
    – Hans
    Jul 1, 2011 at 10:57
  • I THINK I SOLVED IT! I changed the default language to English (United States) and chose the Danish keyboard to go with that. Seems to work so far.
    – Hans
    Jul 4, 2011 at 15:03
  • 1
    Uh ... It tricked me. Windows 7 still manages to sneek in a US keyboard layout in there somehow, and sets this as the default! Again, I beleive I have purged all mentioning of US keyboards in my "Text Services and Input Languages" setting, but it is still there!
    – Hans
    Jul 4, 2011 at 15:11
  • I found the solution here in the first comment: answers.microsoft.com/en-us/windows/forum/windows_xp-desktop/…
    – atraudes
    Jun 6, 2012 at 17:37
5

The best solution (assuming you want to have access to more than one keyboard, which I did) is to go into the Control Panel, Keyboards and Languages/advanced settings.

And change the keyboard shortcut for switching keyboards from Ctrl/Shift to none!

All along, I, too thought it was changing from Eng to Fr on a "random" basis. But it wasn't random at all: I always use keyboard shortcuts, and one of my favorites is Ctrl+Shift+Tab for moving to the previous tab in Chrome.

Stumbled on the shortcut conflict when checking out someone else's suggestion of going into Control Panel. That's when I saw the problem. Once I turned off the keyboard shortcut for changing languages (no biggy) I've never again had the problem. Random or otherwise! Mystery solved!

1
  • This did the trick for me, thank you! Note that you can still switch keyboard layouts with Win + Space.
    – Robin
    Oct 18, 2017 at 11:35
2

Go into Control Panel>Region and Languages>Keyboards and Languages tab>Change Keyboards, and remove the ones you don't want.

1

I had the same problem: My KB kept switching between US and UK keyboards even though I didn't have a UK KB installed. I manged to solve this by adding a UK keyboard, then removing it. The language bar disappeared and my input KB now stays as US.

1
  • 1
    Thank you! After all the above answers, this one finally worked; I guess windows is still buggy after all these years.
    – epoch
    Feb 13, 2018 at 8:34
1

This is a the most annoying bug and it still happens to a genuine brand new HP computer with
Windows 7 Buisness OEM but my issue is also related to 'MS Word 2003' not changing keyboard layout (could not Apostrophe properly )

I use 2 keyboard layouts: US-International and French

I found these solutions that worked for me and some that seems like your issue:

METHOD 1

In MS WORD 2003 [“] and apostrophes [‘] would not display until another key was pressed.
Then this key and the quote or apostrophe would appear on the screen.

Checking in the keyboard settings the system was set to United States-International and French for it’s keyboard layout.

Change your keyboard layout to another US layout and removed the United States-International keyboard layout.

After pressing OK, I tested it on a Word Document and the issue still remained.

But after rebooting the system it went back to normal and I could use apostrophes and quotation marks as usual.

Suggestions (if it fails):
Try to change your Windows local language Unicode just to see how it behave.
Another suggestion related to application language switching issues is to change the hotkey combination that switch the keyboard layout.
Also in Word turn off when configuring Microsoft Word 'Smart Quotes' option.

METHOD 2

Before changing registry values I recommend making a restore point or a registry backup.
Use it at your own risk
To change the keyboard layout manually you need to change the keyboard layouts\preload\
Registry key in the Registry:

Press Start> type Regedit.exe

In the registry locate this key:

HKEY_CURRENT_USER\ Keyboard Layout\Preload\1

You will need to edit the Registry Key , change the string key "1" value setting to the "ID Language code" number listed below next to the keyboard layout name you want.

Close Regedit.exe

Restart Computer

Note: Preload\2 is used if you want to be able to switch between two keyboard layouts.

Find the ID language code here below:

00000402="bg"
00000404="ch"
00000405="cz"
00000406="dk"
00000407="gr"
00000408="gk"
00000409="us"
0000040A="sp"
0000040B="su"
0000040C="fr"
0000040E="hu"
0000040F="is"
00000410="it"
00000411="jp"
00000412="ko"
00000413="nl"
00000414="no"
00000415="pl"
00000416="br"
00000418="ro"
00000419="ru"
0000041A="yu"
0000041B="sl"
0000041C="us"
0000041D="sv"
0000041F="tr"
00000422="us"
00000423="us"
00000424="yu"
00000425="et"
00000426="us"
00000427="us"
00000804="ch"
00000807="sg"
00000809="uk"
0000080A="la"
0000080C="be"
00000813="be"
00000816="po"
00000C0C="cf"
00000C1A="us"
00001009="us"
0000100C="sf"
00001809="us"
00010402="us"
00010405="cz"
00010407="gr"
00010408="gk"
00010409="dv"
0001040A="sp"
0001040E="hu"
00010410="it"
00010415="pl"
00010419="ru"
0001041B="sl"
0001041F="tr"
00010426="us"
00010C0C="cf"
00010C1A="us"
00020408="gk"
00020409="us"
00030409="usl"
00040409="usr"
00050408="gk"

For more informations about adding keyboard layout manualy check this link:

Adding and removing keyboard languages with PowerShell

1

Use AHK. Finally, after all my attempts it solved my issue with Russian and English auto-swithing in Windows 7. You will define, which language you want to see for all threads / windows, and will be able to change it by keyboard shortcut. Code:

#SingleInstance, Force ;
LangCode_First := 67699721          ; langcode of first language in decimal ( i made it by 0x0409 --> 0x04090409 --->  https://www.rapidtables.com/convert/number/hex-to-decimal.html 
LangCode_HEX_First := 0x0409        ; langcode of first language in HEX (get it here https://docs.microsoft.com/en-us/windows/win32/menurc/varfileinfo-block)
LangCode_Second := 68748313         ; langcode of second language
LangCode_HEX_Second := 0x0419       ; langcode of second language in HEX

; English (USA) 0x0419 0x4190419 68748313 (HEX to Dec)
; Russian 0x0409 0x4090409 67699721 (HEX to Dec)

;function that set keyboard language
    SetDefaultKeyboard(LocaleID){
        Static SPI_SETDEFAULTINPUTLANG := 0x005A, SPIF_SENDWININICHANGE := 2

        Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
        VarSetCapacity(binaryLocaleID, 4, 0)
        NumPut(LocaleID, binaryLocaleID)
        DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &binaryLocaleID, "UInt", SPIF_SENDWININICHANGE)

        WinGet, windows, List
        Loop % windows {
            PostMessage 0x50, 0, % Lan, , % "ahk_id " windows%A_Index%
        }
    }

;your shortcut for swithing language

!LShift::SetKey()

;function that detect current language and change it, if it is needed
SetKey(){

    if ("" DllCall("GetKeyboardLayout", Int,DllCall("GetWindowThreadProcessId", int,WinActive("A"), Int,0)) = 67699721)  ;change value here to your lang code
    {
        SetDefaultKeyboard(0x0419) ;change value here to your lang code
    }
    else if ("" DllCall("GetKeyboardLayout", Int,DllCall("GetWindowThreadProcessId", int,WinActive("A"), Int,0)) = 68748313) ;change value here to your lang code
    {
        SetDefaultKeyboard(0x0409) ;change value here to your lang code
    }
}

In the beginning you can see language codes, that required. You can extract them from here and convert additional parameters here (HEX to DEC) Please change also variables in ending of code, I marked where you need to do it.

It is also better to delete default language-swiching shortcut in advanced key settings menu, by changing both options in Change Key Sequence to Not Assigned

4
  • Full langauge codes list is here.
    – HeyJude
    May 19, 2020 at 18:46
  • Thanks a lot, it's the only way that worked for me. I wanted to use scroll lock to switch between two keyboards, so it's the code pastebin.com/DuNERZje - it also synchronizes with scroll lock state on the start.
    – Krzysiu
    May 28, 2020 at 12:43
  • @Krzysiu Take into account, that I note some freezes (sometimes), when I use this script and trigger changing layout via shortcuts. May 28, 2020 at 15:01
  • Thanks! I'll add simple debug functions and if that would happen, I'll share what could cause that.
    – Krzysiu
    May 29, 2020 at 16:06
0

I found a solution that worked for me. The problem was that I only had Dvorak installed under Installed Services, and since the computer's locale was set to US, it kept defaulting to that. Once I added US to Installed Services and set Dvorak as the "Default input language", it started behaving.

In your case, changing the system locale to Danish may remedy your issue. In the Region and Language window (first pictured by Thiago), click the Administrative tab, then click "Change system locale" and choose the appropriate selection from the list.

I don't know if this is a desirable fix for you, but there you go. I really wish this wasn't so complicated; I don't have this problem on my Mac... ;-)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .