If you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.
The ForwardKeyEvent ibus signal is used to maintain ordering between CommitText events and non-IME key events.
The ordering is important for Korean IMEs, where it automatically commits text whenever a character is fully composed. This is different from Chinese/Japanese IMEs, where user manually presses a key to commit each word.
Without this patch, kitty can't handle non-IME key events when used with ibus-hangul, which utilizes ForwardKeyEvent signal.
Without ForwardKeyEvent:
```
key | sequence of events from application's view
r | UpdatePreeditText 'ㄱ'
k | UpdatePreeditText '가'
1 | (receives the reply to ProcessKeyEvent call: "native_key: 0x31 release: 0 handled: 0")
| -> UpdatePreeditText ''
| -> CommitText '가'
```
Application receives "1가", which is incorrect.
With ForwardKeyEvent:
```
key | sequence of events from application's view
r | UpdatePreeditText 'ㄱ'
k | UpdatePreeditText '가'
1 | (receives the reply to ProcessKeyEvent call: "native_key: 0x31 release: 0 handled: 1", and kitty discards the event)
| -> UpdatePreeditText ''
| -> CommitText '가'
| -> ForwardKeyEvent keysym=0x31("1")
```
Application receives "가1", which is correct.
Relevant ibus-hangul github issue to implement ForwardKeyEvent: https://github.com/libhangul/ibus-hangul/issues/42
Relevant changes in Qt to handle ForwardKeyEvent: https://codereview.qt-project.org/c/qt/qtbase/+/212179, https://codereview.qt-project.org/c/qt/qtbase/+/255587
|
||
|---|---|---|
| .github | ||
| bypy | ||
| docs | ||
| glad | ||
| glfw | ||
| kittens | ||
| kitty | ||
| kitty_tests | ||
| logo | ||
| shell-integration | ||
| terminfo | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .ignore | ||
| __main__.py | ||
| Brewfile | ||
| build-terminfo | ||
| CHANGELOG.rst | ||
| CONTRIBUTING.md | ||
| count-lines-of-code | ||
| gen-apc-parsers.py | ||
| gen-config.py | ||
| gen-key-constants.py | ||
| gen-wcwidth.py | ||
| INSTALL.md | ||
| key_encoding.json | ||
| launcher.c | ||
| LICENSE | ||
| Makefile | ||
| mypy-editor-integration | ||
| nerd-fonts-glyphs.txt | ||
| publish.py | ||
| README.asciidoc | ||
| SECURITY.md | ||
| session.vim | ||
| setup.cfg | ||
| setup.py | ||
| shell.nix | ||
| test.py | ||
| update-on-ox | ||
| update-on-ubuntu | ||
= kitty - the fast, feature-rich, cross-platform, GPU based terminal See https://sw.kovidgoyal.net/kitty/[the kitty website]. image:https://github.com/kovidgoyal/kitty/workflows/CI/badge.svg["Build status", link="https://github.com/kovidgoyal/kitty/actions?query=workflow%3ACI"] https://sw.kovidgoyal.net/kitty/faq/[Frequently Asked Questions] To ask other questions about kitty usage, use either the https://github.com/kovidgoyal/kitty/discussions/[discussions on GitHub] or the https://www.reddit.com/r/KittyTerminal[Reddit community] Packaging status in various repositories: image:https://repology.org/badge/vertical-allrepos/kitty.svg[https://repology.org/project/kitty/versions]