Repository navigation
New REPL on Windows swallows characters entered via AltGr #132439
Description
Activity
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error3.13only security fixesonly security fixes3.14bugs and security fixesbugs and security fixestopic-replRelated to the interactive shellRelated to the interactive shellneeds backport to 3.13only security fixesonly security fixes
on Apr 12, 2025 @chris-eibl Small tip (and welcome to you as a triager!): we keep the "needs backport" labels for PRs and reserve version labels to issues so to indicate which Python versions are affected (and I personally leave out version labels if every Python version is affected, unless it's a security issue).
Reacted by Chris EiblReacted by Sergey MiryanovReacted by Chris Eibl- addedstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directory
on Apr 12, 2025 Yeah, I was unsure about the "needs backport" for issues myself.
Regarding the "versions affected": this only applies to 3.13 and 3.14, because only those two feature the new REPL - hence we maybe should keep them in this case on the issue?
Yes, we can keep them as it's really 3.13 and 3.14 specific. In general, once a version becomes EOL or security-only, we also remove or update the labels (technically, we could even remove them as 3.12 is now security-only so those issues won't necessarily be fixed)
Reacted by Chris EiblI can confirm this bug, tested on two different Windows 11 machines. Characters accessible via ALT GR on a German keyboard, most notably for programming Python { [ ] } , work randomly (square brackets) or not at all (curly brackets). Tested with Python 3.13.3 installed from the Microsoft Store. For Python 3.12.10 installed from the Microsoft Store, all keys / characters work just fine.
I've encountered this as well.
Bad Workaround: If you first press AltGR + 8, you can then enter exactly one AltGr grapheme.
So,
AltGR + 8, AltGr + 7 produces '{' on a German keyboard.
AltGR + 8, AltGr + Q produces '@' on a German keyboard.Reacted by pewscorner, MajorTanya, Ableytner, hs-jonathan and darko664Reacted by markusschlenker- changed the title
[-]REPL on Windows swallows characters entered via AltGr[/-][+]New REPL on Windows swallows characters entered via AltGr[/+]on Apr 14, 2025 For me, the issue only occurs in an "old terminal", e.g. using
cmd.exe. In a Windows terminal (e.g. powershell), the new REPL runs in virtual terminal mode
cpython/Lib/_pyrepl/windows_console.py
Lines 115 to 118 in 45c447b
def _supports_vt(): try: import nt return nt._supports_virtual_terminal()
where I can useAltGras usual.But the "virtual terminal mode" has other problems (#131878): I can no longer enter
äÄöÖüÜ, etc., which work in the "old terminal", though.For me, the issue only occurs in an "old terminal", e.g. using
cmd.exe. In a Windows terminal (e.g. powershell), the new REPL runs in virtual terminal modeI think that's only true for the 3.14 developer preview. In the Python 3.13.3 release, there is no
_supports_vt()function inwindows_console.py. I have this issue no matter the terminal (the old Command Prompt and the new Windows Terminal) nor the shell (cmd.exeand PowerShell).I went so far as to hot-patching
windows_console.pylocally. The REPL as of 3.13.3 is unusable for me otherwise., You don't get very far in Python without curly braces or square brackets. This is not supposed to happen in a bug-fix release.Reacted by magnatek-mgs1 remaining item
- marked Keyboard layout issue with python.exe on windows 11 #132645 as a duplicate of this issue
on Apr 17, 2025 This also occurs on danish keyboards (on win10). Can't input chars: @£${[]}|€~
Fallback to 3.13.2 worked for me.You can also turn off the new REPL if you do not want to fallback on an earlier version:
https://docs.python.org/3/using/cmdline.html#envvar-PYTHON_BASIC_REPL- marked Some special characters cannot be typed in python shell on Windows #132913 as a duplicate of this issue
on Apr 25, 2025 Thanks for perservering, this is an important fix!
Reacted by Hugo van KemenadeReacted by Chris Eibl and John HennigReacted by Hugo van Kemenade- moved this from Todo to Done in Release and Deferred blockers 🚫
on May 5, 2025 - added a commit that references this issue
on May 5, 2025
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Bug report
Bug description:
E.g. on my keyboard with German layout,
{is usually entered via pressing the AltGr key and7, i.e.AltGr+7.Likewise,
},[,],\and some more can only be entered viaAltGr.But since #128388 / #128389 these are swallowed by the REPL on Windows and can no longer be entered.
On 3.13.3, this happens independent from the terminal mode.
On main, this only happens in legacy Windows terminals, where the virtual terminal mode is turned off (e.g.
cmd.exe).In virtual terminal mode there are other issues, see #131878.
Many other keyboard layouts like French, Czech, etc, use the AltGr key, too, and suffer the same bug (tested changing my keyboard layout).
CPython versions tested on:
3.14, 3.13
Operating systems tested on:
Windows
Linked PRs