Impossible to type numbers on a French AZERTY keyboard #7565

Open
opened 2026-02-16 18:07:36 -05:00 by yindo · 7 comments
Owner

Originally created by @akhansari on GitHub (Jan 25, 2026).

Originally assigned to: @kommander on GitHub.

Description

Nothing happens when I try to type numbers on a French AZERTY keyboard.

This would only happen on WezTerm.

By default on a French layout, we had to hold the shift to type numbers.

Plugins

No response

OpenCode version

1.1.35

Steps to reproduce

No response

Screenshot and/or share link

No response

Operating System

Fedora

Terminal

WezTerm

Originally created by @akhansari on GitHub (Jan 25, 2026). Originally assigned to: @kommander on GitHub. ### Description Nothing happens when I try to type numbers on a French AZERTY keyboard. This would only happen on WezTerm. By default on a French layout, we had to hold the shift to type numbers. ### Plugins _No response_ ### OpenCode version 1.1.35 ### Steps to reproduce _No response_ ### Screenshot and/or share link _No response_ ### Operating System Fedora ### Terminal WezTerm
yindo added the opentuibug labels 2026-02-16 18:07:36 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Jan 25, 2026):

This issue might be a duplicate of existing issues. Please check:

  • #8664: Number keys from QMK keyboard layer ignored in TUI input (keyboard input number issue)
  • #6364: Hotkeys don't work if the keyboard layout isn't english (keyboard layout compatibility issue)

These issues suggest that OpenCode's TUI may have underlying keyboard handling problems that affect non-English keyboard layouts and number input in specific scenarios.

Feel free to ignore if none of these address your specific case.

@github-actions[bot] commented on GitHub (Jan 25, 2026): This issue might be a duplicate of existing issues. Please check: - #8664: Number keys from QMK keyboard layer ignored in TUI input (keyboard input number issue) - #6364: Hotkeys don't work if the keyboard layout isn't english (keyboard layout compatibility issue) These issues suggest that OpenCode's TUI may have underlying keyboard handling problems that affect non-English keyboard layouts and number input in specific scenarios. Feel free to ignore if none of these address your specific case.
Author
Owner

@doums commented on GitHub (Jan 26, 2026):

Hi, same issue here, on Wezterm (built from master 712400a5).
Note that outside of opencode, numbers just work. The issue is present in opencode prompt only.
On Ghostty no issue.

Linux, X11, layout set to fr (azerty)
opencode 1.1.36
fish, version 4.3.3 (if this is relevant)

@doums commented on GitHub (Jan 26, 2026): Hi, same issue here, on Wezterm (built from master `712400a5`). Note that outside of opencode, numbers just work. The issue is present in opencode prompt only. On Ghostty no issue. Linux, X11, layout set to `fr` (azerty) opencode 1.1.36 fish, version 4.3.3 (if this is relevant)
Author
Owner

@kommander commented on GitHub (Jan 27, 2026):

Could you download an opentui-examples-* prebuilt executable from https://github.com/anomalyco/opentui/releases/tag/v0.1.75 and run the "Keypress Debug Tool", pressing the combos that do not work and then shift+s to dump the key log to cwd and share that?

@kommander commented on GitHub (Jan 27, 2026): Could you download an `opentui-examples-*` prebuilt executable from [https://github.com/anomalyco/opentui/releases/tag/v0.1.75](<https://github.com/anomalyco/opentui/releases/tag/v0.1.75>) and run the "Keypress Debug Tool", pressing the combos that do not work and then `shift+s` to dump the key log to cwd and share that?
Author
Owner

@akhansari commented on GitHub (Jan 27, 2026):

Thanks for your reply. Here is the json:

{
  "exportedAt": "2026-01-27T17:25:53.230Z",
  "rawInputs": [
    {
      "timestamp": "2026-01-27T17:25:49.670Z",
      "sequence": "\u001b[27;2;49~"
    },
    {
      "timestamp": "2026-01-27T17:25:53.227Z",
      "sequence": "S"
    }
  ],
  "keyEvents": [
    {
      "timestamp": "2026-01-27T17:25:49.672Z",
      "type": "keypress",
      "event": {
        "name": "1",
        "ctrl": false,
        "meta": false,
        "shift": true,
        "option": false,
        "sequence": "\u001b[27;2;49~",
        "number": false,
        "raw": "\u001b[27;2;49~",
        "eventType": "press",
        "source": "raw",
        "super": false,
        "hyper": false,
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
    },
    {
      "timestamp": "2026-01-27T17:25:53.229Z",
      "type": "keypress",
      "event": {
        "name": "s",
        "ctrl": false,
        "meta": false,
        "shift": true,
        "option": false,
        "sequence": "S",
        "number": false,
        "raw": "S",
        "eventType": "press",
        "source": "raw",
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
    }
  ],
  "summary": {
    "totalRawInputs": 2,
    "totalKeyEvents": 2
  },
  "capabilities": {
    "kitty_keyboard": false,
    "kitty_graphics": true,
    "rgb": false,
    "unicode": "unicode",
    "sgr_pixels": true,
    "color_scheme_updates": false,
    "explicit_width": false,
    "scaled_text": false,
    "sixel": false,
    "focus_tracking": true,
    "sync": true,
    "bracketed_paste": true,
    "hyperlinks": false,
    "explicit_cursor_positioning": false,
    "terminal": {
      "name": "WezTerm",
      "version": "20240203-110809-5046fc22",
      "from_xtversion": true
    }
  }
}

Strange... with Alacritty I have this:

      "event": {
        "name": "1",
        "ctrl": false,
        "meta": false,
        "shift": false,
        "option": false,
        "sequence": "1",
        "number": true,
        "raw": "1",
        "eventType": "press",
        "source": "raw",
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
@akhansari commented on GitHub (Jan 27, 2026): Thanks for your reply. Here is the json: ```json { "exportedAt": "2026-01-27T17:25:53.230Z", "rawInputs": [ { "timestamp": "2026-01-27T17:25:49.670Z", "sequence": "\u001b[27;2;49~" }, { "timestamp": "2026-01-27T17:25:53.227Z", "sequence": "S" } ], "keyEvents": [ { "timestamp": "2026-01-27T17:25:49.672Z", "type": "keypress", "event": { "name": "1", "ctrl": false, "meta": false, "shift": true, "option": false, "sequence": "\u001b[27;2;49~", "number": false, "raw": "\u001b[27;2;49~", "eventType": "press", "source": "raw", "super": false, "hyper": false, "_defaultPrevented": false, "_propagationStopped": false } }, { "timestamp": "2026-01-27T17:25:53.229Z", "type": "keypress", "event": { "name": "s", "ctrl": false, "meta": false, "shift": true, "option": false, "sequence": "S", "number": false, "raw": "S", "eventType": "press", "source": "raw", "_defaultPrevented": false, "_propagationStopped": false } } ], "summary": { "totalRawInputs": 2, "totalKeyEvents": 2 }, "capabilities": { "kitty_keyboard": false, "kitty_graphics": true, "rgb": false, "unicode": "unicode", "sgr_pixels": true, "color_scheme_updates": false, "explicit_width": false, "scaled_text": false, "sixel": false, "focus_tracking": true, "sync": true, "bracketed_paste": true, "hyperlinks": false, "explicit_cursor_positioning": false, "terminal": { "name": "WezTerm", "version": "20240203-110809-5046fc22", "from_xtversion": true } } } ``` Strange... with Alacritty I have this: ```json "event": { "name": "1", "ctrl": false, "meta": false, "shift": false, "option": false, "sequence": "1", "number": true, "raw": "1", "eventType": "press", "source": "raw", "_defaultPrevented": false, "_propagationStopped": false } ```
Author
Owner

@akhansari commented on GitHub (Jan 27, 2026):

Maybe this is related to https://github.com/wezterm/wezterm/issues/6287

@akhansari commented on GitHub (Jan 27, 2026): Maybe this is related to https://github.com/wezterm/wezterm/issues/6287
Author
Owner

@doums commented on GitHub (Jan 27, 2026):

{
  "exportedAt": "2026-01-27T20:22:23.508Z",
  "rawInputs": [
    {
      "timestamp": "2026-01-27T20:22:06.889Z",
      "sequence": "\u001b[27;2;49~"
    },
    {
      "timestamp": "2026-01-27T20:22:23.504Z",
      "sequence": "S"
    }
  ],
  "keyEvents": [
    {
      "timestamp": "2026-01-27T20:22:06.892Z",
      "type": "keypress",
      "event": {
        "name": "1",
        "ctrl": false,
        "meta": false,
        "shift": true,
        "option": false,
        "sequence": "\u001b[27;2;49~",
        "number": false,
        "raw": "\u001b[27;2;49~",
        "eventType": "press",
        "source": "raw",
        "super": false,
        "hyper": false,
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
    },
    {
      "timestamp": "2026-01-27T20:22:23.507Z",
      "type": "keypress",
      "event": {
        "name": "s",
        "ctrl": false,
        "meta": false,
        "shift": true,
        "option": false,
        "sequence": "S",
        "number": false,
        "raw": "S",
        "eventType": "press",
        "source": "raw",
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
    }
  ],
  "summary": {
    "totalRawInputs": 2,
    "totalKeyEvents": 2
  },
  "capabilities": {
    "kitty_keyboard": false,
    "kitty_graphics": true,
    "rgb": false,
    "unicode": "unicode",
    "sgr_pixels": true,
    "color_scheme_updates": false,
    "explicit_width": false,
    "scaled_text": false,
    "sixel": false,
    "focus_tracking": true,
    "sync": true,
    "bracketed_paste": true,
    "hyperlinks": false,
    "explicit_cursor_positioning": false,
    "terminal": {
      "name": "WezTerm",
      "version": "20260116-054604-712400a5",
      "from_xtversion": true
    }
  }
}

Ghostty (numbers work here)

{
  "exportedAt": "2026-01-27T20:25:51.240Z",
  "rawInputs": [
    {
      "timestamp": "2026-01-27T20:25:48.444Z",
      "sequence": "1"
    },
    {
      "timestamp": "2026-01-27T20:25:51.235Z",
      "sequence": "S"
    }
  ],
  "keyEvents": [
    {
      "timestamp": "2026-01-27T20:25:48.449Z",
      "type": "keypress",
      "event": {
        "name": "1",
        "ctrl": false,
        "meta": false,
        "shift": false,
        "option": false,
        "sequence": "1",
        "number": true,
        "raw": "1",
        "eventType": "press",
        "source": "raw",
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
    },
    {
      "timestamp": "2026-01-27T20:25:51.239Z",
      "type": "keypress",
      "event": {
        "name": "s",
        "ctrl": false,
        "meta": false,
        "shift": true,
        "option": false,
        "sequence": "S",
        "number": false,
        "raw": "S",
        "eventType": "press",
        "source": "raw",
        "_defaultPrevented": false,
        "_propagationStopped": false
      }
    }
  ],
  "summary": {
    "totalRawInputs": 2,
    "totalKeyEvents": 2
  },
  "capabilities": {
    "kitty_keyboard": true,
    "kitty_graphics": true,
    "rgb": false,
    "unicode": "unicode",
    "sgr_pixels": true,
    "color_scheme_updates": true,
    "explicit_width": false,
    "scaled_text": false,
    "sixel": false,
    "focus_tracking": true,
    "sync": true,
    "bracketed_paste": true,
    "hyperlinks": false,
    "explicit_cursor_positioning": false,
    "terminal": {
      "name": "ghostty",
      "version": "1.2.3-arch2",
      "from_xtversion": true
    }
  }
}
@doums commented on GitHub (Jan 27, 2026): ``` { "exportedAt": "2026-01-27T20:22:23.508Z", "rawInputs": [ { "timestamp": "2026-01-27T20:22:06.889Z", "sequence": "\u001b[27;2;49~" }, { "timestamp": "2026-01-27T20:22:23.504Z", "sequence": "S" } ], "keyEvents": [ { "timestamp": "2026-01-27T20:22:06.892Z", "type": "keypress", "event": { "name": "1", "ctrl": false, "meta": false, "shift": true, "option": false, "sequence": "\u001b[27;2;49~", "number": false, "raw": "\u001b[27;2;49~", "eventType": "press", "source": "raw", "super": false, "hyper": false, "_defaultPrevented": false, "_propagationStopped": false } }, { "timestamp": "2026-01-27T20:22:23.507Z", "type": "keypress", "event": { "name": "s", "ctrl": false, "meta": false, "shift": true, "option": false, "sequence": "S", "number": false, "raw": "S", "eventType": "press", "source": "raw", "_defaultPrevented": false, "_propagationStopped": false } } ], "summary": { "totalRawInputs": 2, "totalKeyEvents": 2 }, "capabilities": { "kitty_keyboard": false, "kitty_graphics": true, "rgb": false, "unicode": "unicode", "sgr_pixels": true, "color_scheme_updates": false, "explicit_width": false, "scaled_text": false, "sixel": false, "focus_tracking": true, "sync": true, "bracketed_paste": true, "hyperlinks": false, "explicit_cursor_positioning": false, "terminal": { "name": "WezTerm", "version": "20260116-054604-712400a5", "from_xtversion": true } } } ``` Ghostty (numbers work here) ``` { "exportedAt": "2026-01-27T20:25:51.240Z", "rawInputs": [ { "timestamp": "2026-01-27T20:25:48.444Z", "sequence": "1" }, { "timestamp": "2026-01-27T20:25:51.235Z", "sequence": "S" } ], "keyEvents": [ { "timestamp": "2026-01-27T20:25:48.449Z", "type": "keypress", "event": { "name": "1", "ctrl": false, "meta": false, "shift": false, "option": false, "sequence": "1", "number": true, "raw": "1", "eventType": "press", "source": "raw", "_defaultPrevented": false, "_propagationStopped": false } }, { "timestamp": "2026-01-27T20:25:51.239Z", "type": "keypress", "event": { "name": "s", "ctrl": false, "meta": false, "shift": true, "option": false, "sequence": "S", "number": false, "raw": "S", "eventType": "press", "source": "raw", "_defaultPrevented": false, "_propagationStopped": false } } ], "summary": { "totalRawInputs": 2, "totalKeyEvents": 2 }, "capabilities": { "kitty_keyboard": true, "kitty_graphics": true, "rgb": false, "unicode": "unicode", "sgr_pixels": true, "color_scheme_updates": true, "explicit_width": false, "scaled_text": false, "sixel": false, "focus_tracking": true, "sync": true, "bracketed_paste": true, "hyperlinks": false, "explicit_cursor_positioning": false, "terminal": { "name": "ghostty", "version": "1.2.3-arch2", "from_xtversion": true } } } ```
Author
Owner

@simonklee commented on GitHub (Jan 29, 2026):

ℹ️ This issue will be resolved once we bump opentui and cut a release.

@simonklee commented on GitHub (Jan 29, 2026): ℹ️ This issue will be resolved once we bump opentui and cut a release.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#7565