Psreadline: Win7: Cyrillic input with shift partially does not work

Created on 7 Nov 2018  路  15Comments  路  Source: PowerShell/PSReadLine

Environment data

PS version: 5.1.14409.1012
PSReadline version: 2.0.0-beta3
os: 6.1.7601.17514 (win7sp1_rtm.101119-1850)
PS file version: 10.0.14409.1005 (rs1_srvoob.161208-1155)

Steps to reproduce or exception report

Installed latest PSReadline under PSv5.1 / Win7

switch keyboard to russian input, type:

  • without shift - 泄褑褍泻械薪谐褕褖蟹褏褗
  • should be (without shift but with caps) - 袡笑校袣袝袧袚楔些袟啸歇
  • with shift only - 笑校楔些啸歇
  • with caps + shift - 褑褍泻褕褖褏褗

and many other symbols got eaten too

Most helpful comment

I'm on 2004 build and still not fixed, PSReadLine version is still 2.0.0
I had to update it manually, and bug is gone
Run this line in PowerShell from administrator:
Install-Module PSReadLine -force

All 15 comments

PS version: 6.1.0
PSReadline version: 2.0.0-beta3
os: Linux gorets 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
PS file version:

ok

Something breaks between beta1 and beta2

Are you changing the layout after starting PowerShell? If so, this might be hard to fix, the api I rely on the determine if Shift is necessary does not honor keyboard layout changes.

Yes, I start PS and press shortcut to change layout. The same version (Beta3) works ok on Linux but does not work on Windows (both 7 and 10)

Moreover, if I change default layout to Russian, (I start PSs with RUS layout) I can't get any russian upper case symbols with shift (at least qwerty line) and even when I switch to English I can't type any English symbols with shift as well!

Seems there should be another PlatformWindows.cs override

The impact of this issue is very high, because multi-layout users switch their layouts literally all the time. I have some file names and content I want to enter into my PowerShell session in my native layout, and so I need to change my layout from time to time without restarting the whole PowerShell session, that's a disaster.

@lzybkr, how could we help you with the issue? Could you please share any thoughts on that or show where I could find the code of that problematic API and PSReadLine's usage of that API? I'll be glad to help with the fix.

Just wanted to report that it became worse on the latest nightly build at that point: no matter which layout is active when I start PowerShell 6.1 with PSReadLine, I cannot enter any Cyrillic letters at all: some of the keys result in ? being added to the input and some of them don't work at all.

Will check the build from #822 after it's finished on CI though!

822 fixes just the problem initially reported here.

The rendering of ? (and it's just a rendering problem, the characters are correct if executed) was introduced by #771, the workaround for now is to run:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

There is one additional problem if you start PowerShell with the Cyrillic keyboard - PSReadLine will fail to load, and the only workaround right now is to start PowerShell with a different keyboard.

There is one additional problem if you start PowerShell with the Cyrillic keyboard - PSReadLine will fail to load, and the only workaround right now is to start PowerShell with a different keyboard.

Well, honestly I cannot reproduce that on the latest build (e.g. if I install build from #822). I was able to reproduce that on beta3 though.

Thanks for the tip about [Console]::OutputEncoding, it helped!

We also face this issue on Windows 10 (1809) Version: 10.0.17763 Build 17763.

Preinstalled powershell module PSReadLine verison is 2.0.0

PS U:\> Get-Module | ? {$_.Name -eq "PSReadline"} | Select Name, Version

Name       Version
----       -------
PSReadline 2.0.0

Here's a link to discussion on technet:
https://social.technet.microsoft.com/Forums/ru-RU/8ccdf213-56ca-461e-8ce1-0cc82391dddb/windows-10-1809-10551088108610731083107710841099-1089

The problem exist with EN-US keyboard layout selected on powershell console start.
With Cyrillic keyboard layout (RU-RU) select problem doesn't reproduced, `cause module PSReadLine probably doesn't load properly.

@SteveL-MSFT These is very annoying. Can you share information when fixes is expected for Windows?

@iSazonov the fix for PSReadLine not starting on non-en-US keyboard layouts is already checked into latest Win10 and should be flighting on latest Insider builds

@SteveL-MSFT Thanks! Will we get this on WindowsUpdate? For 1809 and Windows 10 Ent 2019 at February or March?

@iSazonov for older builds, I think we just need to get another release of PSReadLine to PSGallery

@SteveL-MSFT But it is enterprise LTS versions.

I'm on 2004 build and still not fixed, PSReadLine version is still 2.0.0
I had to update it manually, and bug is gone
Run this line in PowerShell from administrator:
Install-Module PSReadLine -force

Was this page helpful?
0 / 5 - 0 ratings