Skip to content

New REPL on Windows swallows characters entered via AltGr #132439

Description

@chris-eibl

Bug report

Bug description:

E.g. on my keyboard with German layout, { is usually entered via pressing the AltGr key and 7, i.e. AltGr+7.

Likewise, }, [, ], \ and some more can only be entered via AltGr.

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

Activity

  1. added
    type-bugAn unexpected behavior, bug, or error
    3.13only security fixes
    3.14bugs and security fixes
    topic-replRelated to the interactive shell
    on Apr 12, 2025
  2. picnixz commented on Apr 12, 2025

    @picnixz
    Member

    @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).

  3. added
    stdlibStandard Library Python modules in the Lib/ directory
    on Apr 12, 2025
  4. chris-eibl commented on Apr 12, 2025

    @chris-eibl
    MemberAuthor

    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?

  5. picnixz commented on Apr 12, 2025

    @picnixz
    Member

    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)

  6. noisefloor commented on Apr 13, 2025

    @noisefloor

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

  7. mettvterritory commented on Apr 14, 2025

    @mettvterritory

    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.

  8. changed the title [-]REPL on Windows swallows characters entered via AltGr[/-] [+]New REPL on Windows swallows characters entered via AltGr[/+] on Apr 14, 2025
  9. chris-eibl commented on Apr 14, 2025

    @chris-eibl
    MemberAuthor

    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

    def _supports_vt():
    try:
    import nt
    return nt._supports_virtual_terminal()

    where I can use AltGr as usual.

    But the "virtual terminal mode" has other problems (#131878): I can no longer enter äÄöÖüÜ, etc., which work in the "old terminal", though.

  10. john-hen commented on Apr 14, 2025

    @john-hen

    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

    I think that's only true for the 3.14 developer preview. In the Python 3.13.3 release, there is no _supports_vt() function in windows_console.py. I have this issue no matter the terminal (the old Command Prompt and the new Windows Terminal) nor the shell (cmd.exe and PowerShell).

    I went so far as to hot-patching windows_console.py locally. 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.

  11. 1 remaining item

  12. NSK-Guru commented on Apr 20, 2025

    @NSK-Guru

    This also occurs on danish keyboards (on win10). Can't input chars: @£${[]}|€~
    Fallback to 3.13.2 worked for me.

  13. chris-eibl commented on Apr 20, 2025

    @chris-eibl
    MemberAuthor

    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

  14. jeanga commented on May 3, 2025

    @jeanga
  15. added 2 commits that reference this issue on May 5, 2025
  16. ambv commented on May 5, 2025

    @ambv
    Contributor

    Thanks for perservering, this is an important fix!

  17. added a commit that references this issue on May 5, 2025
  18. added a commit that references this issue on Jul 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.13only security fixes3.14bugs and security fixesrelease-blockerstdlibStandard Library Python modules in the Lib/ directorytopic-replRelated to the interactive shelltype-bugAn unexpected behavior, bug, or error

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions