sobota 14. září 2019

Odstranění dynamicky přidaného rozložení klávesnice ve Windows bez rebootu

Poznámky na úvod:
1) Nenaleznete zde postup, jak nechtěnému přidávání zabránit. Je zde jen návod, jak ho jednoduše a bez rebootu odstranit.
2) Pro popis řešení bez úvodní omáčky skočte přímo na řešení.

Popis problému

Ve Windows 10 se občas stane, že se do nastavení rozložení klávesnice bez přičinění uživatele přidá nové rozložení. V mém případě se mi přidává do jazyka "Čeština" rozložení QWERTZ. Myslel jsem, že se mi tento problém podařilo vyřešit tak, že jsem pomocí CTRL+SHIFT nepřepínal klávesnice, ale jazyky:

Bohužel se ukázalo, že to byla mylná teorie, protože se mi to dnes opět po delší době stalo. Zajímavé je, při jaké příležitosti - spuštění hry pomocí Steam klienta s nastavením na Češtinu. Je to pěkně vidět na videu: 



Před spuštěním hry mám pouze dvě rozložení - anglické a české QWERTY. Následně spustím hru nastavenou na angličtinu, rozložení se nezmění. Pak přepnu hru do češtiny, spustím ji a hned se automaticky přidá QWERTZ rozložení, viz čas 00:30, kdy se změní indikátor rozložení na hlavním panelu. 

Není to jediná situace, kdy to nastane. S tímto problém se potýká hodně uživatelů Windows. Tomášovi Vítovi se to např. stává s Outlookem

Protože se mi to konečně podařilo v jednom případu odchytit a bez problémů opakovaně reprodukovat, tak jsem zkoušel jsem googlovat a aplikovat několik postupů ( např. https://twitter.com/RadekHulan/status/1076125557128155137 nebo https://superuser.com/questions/1092246/how-to-prevent-windows-10-from-automatically-adding-keyboard-layouts-i-e-us-ke ), které tomu měly zabránit. Bohužel žádný mi nefungoval.

Začal jsem tedy řešit, jak se tohoto rozložení jednoduše zbavit. Problém je v tom, že to rozložení se do Windows přidá a zároveň nepřidá. Zní to zvláštně. Představte si to tak, že se sice ukazuje na hlavním panelu (taskbaru), ale v nastavení Windows není:

Vlevo je vidět, že v nastavení Windows je pro češtinu pouze jedno rozložení ("Česká QWERTY"), přesto jsou ale v panelu jazyků pro češtinu rozložení dvě - "Česká QWERTY" a "Česká" (to je ona dynamicky přidaná QWERTZ). 

Pozn: Pokud byste měli rozložení QWERTZ záměrně přidané, vypadlo by to v nastavení Windows takto:

Důsledky toho, že rozložení je přidané pouze "za běhu" a není v nastavení jsou dva:
  • po rebootu rozložení zase zmizí,
  • bez rebootu nelze odstranit (není "co" odstranit).

Řešení

Jak už ale titulek článku říká, nějak to lze. Jednoduchý trik spočívá v tom, že rozložení do Windows nejprve přidáte a následně ho odstraníte:



Pokud se vám nechce klikat, tak jsem připravil jednoduchý script v Powershellu, který udělá totéž: https://github.com/KamilZm/RemoveUnwantedKBLayout