Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Win7: Cyrillic input with shift partially does not work #798

Closed
MVKozlov opened this issue Nov 7, 2018 · 15 comments
Closed

Win7: Cyrillic input with shift partially does not work #798

MVKozlov opened this issue Nov 7, 2018 · 15 comments

Comments

@MVKozlov
Copy link
Contributor

MVKozlov commented Nov 7, 2018

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

@MVKozlov MVKozlov changed the title Win7: Cyrillic input with shift partially dows not work Win7: Cyrillic input with shift partially does not work Nov 7, 2018
@MVKozlov
Copy link
Contributor Author

MVKozlov commented Nov 7, 2018

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

@MVKozlov
Copy link
Contributor Author

MVKozlov commented Nov 7, 2018

Something breaks between beta1 and beta2

@lzybkr
Copy link
Member

lzybkr commented Nov 7, 2018

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.

@MVKozlov
Copy link
Contributor Author

MVKozlov commented Nov 7, 2018

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

@ForNeVeR
Copy link
Contributor

ForNeVeR commented Dec 1, 2018

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.

lzybkr added a commit that referenced this issue Dec 2, 2018
The method Keys.ShouldInsert was a misguided attempt to avoid inserting
keys where there is no binding but the key really doesn't make sense as
input.

Unfortunately it is just causing more pain and probably wasn't
addressing a serious problem, so I'm removing it.

Fix #798
@ForNeVeR
Copy link
Contributor

ForNeVeR commented Dec 2, 2018

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!

@lzybkr
Copy link
Member

lzybkr commented Dec 2, 2018

#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.

@ForNeVeR
Copy link
Contributor

ForNeVeR commented Dec 2, 2018

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!

lzybkr added a commit that referenced this issue Dec 3, 2018
The method Keys.ShouldInsert was a misguided attempt to avoid inserting
keys where there is no binding but the key really doesn't make sense as
input.

Unfortunately it is just causing more pain and probably wasn't
addressing a serious problem, so I'm removing it.

Fix #798
@mahoune
Copy link

mahoune commented Jan 21, 2019

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.

@iSazonov
Copy link

iSazonov commented Feb 5, 2019

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

@SteveL-MSFT
Copy link
Member

@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

@iSazonov
Copy link

iSazonov commented Feb 5, 2019

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

@SteveL-MSFT
Copy link
Member

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

@iSazonov
Copy link

@SteveL-MSFT But it is enterprise LTS versions.

@megapro17
Copy link

megapro17 commented May 22, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants