mirror of
https://github.com/wez/wezterm.git
synced 2024-12-24 13:52:55 +03:00
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
fe48951e7a
One of the default key assignments was registered as `SUPER+SHIFT+{` which worked on macOS, but on Linux, would never match because the keypress over there was (correctly) reporting as `SUPER+{`. I originally thought that the user reported issue was a linux normalization problem, but in looking deeper, the issue is really that macos is doing something funky! On macos we collect the interpreted key event as a string, and also the interpretation of that event without any modifiers applied. For letters this means that eg: `ALT-l` reports as `¬` for the processed string and `l` for the unmodified string. That's good! However, for punctuation we get a backwards result: SUPER+SHIFT+[ produces `[` for the processed text and `{` for the unmodified text! This commit tries to detect this, using a heuristic that is potentially bad on non-US layouts: if both the processed and unmodified strings are punctuation then we bias to the unmodified version. With that change, that key press is correctly reported as `SUPER+{`, and we can fix the key assignment registration to reflect that. I quickly checked the behavior of pressing that same physical key combination with a DEU layout active, and it appears that the unmodified stuff is also flipped there; we get a lower-case version of something that I think should be uppercase. This commit doesn't change that behavior: ``` key_event KeyEvent { key: Char('ü'), modifiers: NONE, raw_key: Some(Char('Ü')), raw_modifiers: SHIFT | SUPER, raw_code: Some(33), repeat_count: 1, key_is_down: true } ``` refs: https://github.com/wez/wezterm/issues/601 |
||
---|---|---|
.cargo | ||
.github | ||
assets | ||
async_ossl | ||
base91 | ||
bintree | ||
ci | ||
codec | ||
config | ||
deps | ||
docs | ||
env-bootstrap | ||
filedescriptor | ||
licenses | ||
luahelper | ||
mux | ||
promise | ||
pty | ||
rangeset | ||
ratelim | ||
strip-ansi-escapes | ||
tabout | ||
term | ||
termwiz | ||
test-data | ||
tmux-cc | ||
umask | ||
vtparse | ||
wezterm | ||
wezterm-client | ||
wezterm-font | ||
wezterm-gui | ||
wezterm-gui-subcommands | ||
wezterm-input-types | ||
wezterm-mux-server | ||
wezterm-mux-server-impl | ||
wezterm-ssh | ||
wezterm-toast-notification | ||
window | ||
.cirrus.yml | ||
.gitignore | ||
.gitmodules | ||
.rustfmt.toml | ||
Cargo.lock | ||
Cargo.toml | ||
CONTRIBUTING.md | ||
get-deps | ||
LICENSE.md | ||
README.md | ||
wt-record | ||
wt-replay |
Wez's Terminal
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
User facing docs and guide at: https://wezfurlong.org/wezterm/
Screenshot of wezterm on macOS, running vim
Installation
https://wezfurlong.org/wezterm/installation.html
Getting help
This is a spare time project, so please bear with me. There are a couple of channels for support:
- You can use the GitHub issue tracker to see if someone else has a similar issue, or to file a new one: https://github.com/wez/wezterm/issues
- Start or join a thread in our GitHub Discussions; if you have general questions or want to chat with other wezterm users, you're welcome here!
- There is a Matrix room via Element.io for (potentially!) real time discussions.
The GitHub Discussions and Element/Gitter rooms are better suited to questions than it is to bug reports, but don't be afraid to use whichever you are most comfortable using and we'll work it out.