How to change current keyboard layout in powershell?


I have two languages set in my windows settings – Czech (default) and English (for programming). I want to switch between them in powershell.

I generally work in Czech language, and it is my default language on my PC. So whenever I (re)start any app, it starts with Czech keyboard layout.

But I am programming with English layout. So I always need to tap Alt+Shift when I am starting new programming app – i.e. powershell window.

Is there some way to do this with some command in powershell? Or in C#, possibly through some win32 api call (as I could make myself small cmdlet for this)?

I found this question (and some others), but I didn’t understand it(them) much…

I never worked with Win API, so I don’t know what exactly is possible and how to work with it…

Does somebody has some cmdlet or little tutorial how to do this?


I found nice and very easy solution! There is WASP project on Codeplex. This project allows to manipulate windows, send keys to them and send clicks to them.

Solution for my problem is to import the WASP module when powershell is starting, then select powershell window (using WASP) and send Alt+Shift keystroke to it (using WASP).

Here is the code to include to the powershell profile.ps1 file in order to change language to the next one:


How to change current keyboard layout in powershell? by licensed under CC BY-SA | With most appropriate answer!

Leave a Reply