Skip to content

Releases: Adam-D-Lewis/eitype

0.2.2

13 Jun 16:32
34cc418

Choose a tag to compare

Bug-fix release.

Make EiType Send + Sync (previously #[pyclass(unsendable)]). Callers that cache a typer and reuse it across threads — e.g. a ThreadPoolExecutor — no longer trip PyO3's "unsendable, but sent to another thread" assertion, which surfaced as an uncatchable PanicException and silently dropped text. The xkb keymap/state are now serialized behind an internal lock, so the type is thread-safe on GIL-enabled and free-threaded interpreters and from the Rust API.

See #20.

v0.2.1

27 Apr 15:41
0df5cbf

Choose a tag to compare

Bug fixes

  • Non-Latin characters now type correctly. Cyrillic, Greek, Hebrew, Arabic, Thai, Hangul, and Latin Extended characters previously failed with Character not found in keymap even when the right layout was selected. keysym_to_char now delegates to xkb_keysym_to_utf32, which handles every legacy keysym block. (#8, #12)

  • Characters at AltGr / level 3+ now type correctly. Layouts like us-intl, de, fr, es, EurKEY put characters such as ä, Ä, é, ñ at xkb level 2/3, reachable only via AltGr (or AltGr+Shift). The previous code matched the keysym but tapped the key without the AltGr modifier, silently producing the wrong character (e.g. q instead of ä) with no error. The lookup now reports the level and type_char presses the modifiers required to reach it. (#15)

  • AltGr resolution honors xkb-options. Modifier keycodes are now resolved from the active keymap rather than hardcoded, so layouts with lv3:ralt_alt, lv3:menu_switch, lv3:caps_switch, etc. — where ISO_Level3_Shift lives on a key other than Right Alt — work correctly.

Known limitations

  • The --layout / --variant / --model flags only affect client-side keycode selection; they don't change how the EI server interprets events. See #17.
  • Cross-layout typing (typing characters from layouts not currently active) remains unsupported.

v0.2.0

21 Feb 23:32
47a7c47

Choose a tag to compare

What's New

Auto-detect active keyboard layout

eitype now automatically detects the active keyboard layout group via the EI protocol. When EI detection isn't available, compositor-specific fallbacks are used for GNOME (gsettings), KDE (qdbus), and Sway (swaymsg). This eliminates the need to manually specify --layout-group in most cases.

Fix for layout-independent keys at non-zero layout index

Fixed an issue where layout-independent keys (Space, Return, Backspace, Tab, Escape, and others) were not found when the active keyboard layout was at a non-zero index. These keys are now correctly resolved regardless of the active layout group.

Full Changelog: 0.1.2...0.2.0

v0.1.2

19 Jan 01:33
0.1.2
c91ecd0

Choose a tag to compare

Full Changelog: 0.1.1...0.1.2

v0.1.1

18 Jan 23:26
0.1.1
f943fc7

Choose a tag to compare

  • Update PyO3 to 0.27 for full Python 3.14 support
  • Build wheels for Python 3.10, 3.11, 3.12, 3.13, and 3.14

v0.1

18 Jan 22:42
725e1c7

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/Adam-D-Lewis/eitype/commits/0.1