diff options
author | Dustin <dustin1114@gmail.com> | 2017-12-24 15:15:42 -0500 |
---|---|---|
committer | Joe Wilm <jwilm@users.noreply.github.com> | 2017-12-24 12:15:42 -0800 |
commit | caddac918e21a2b881a929eb371acf9f4d82cd0c (patch) | |
tree | 934f3ef81485d2b0a6dac6afd24011a6e10e5bf3 /src/lib.rs | |
parent | ed91eb365e8e24b0ef64351235ab3f8022a8e7b3 (diff) | |
download | alacritty-caddac918e21a2b881a929eb371acf9f4d82cd0c.tar.gz alacritty-caddac918e21a2b881a929eb371acf9f4d82cd0c.zip |
Change mouse cursor on terminal mode change (#865)
Some terminals have functionality around changing the type of mouse
cursor dynamically (arrow and text) based on which mode(s) the VTE is
in. For example, gnome-terminal changes the cursor from text (default)
to an arrow when opening programs that track mouse events (e.g. vim,
emacs, tmux, htop, etc.). The programs all allow using the mouse
interactively under some circumstances (like executing `set mouse=a` in
vim).
The programs that use an interactive mouse set the terminal mode to
different values. Though they're not entirely the same terminal mode
across programs, an emulator like vte (the library gnome-terminal
implements), changes the mouse cursor if the mouse mode is one of the
following:
- 1000: Mouse Click Tracking
- 1001: Mouse Highlight Tracking
- 1002: Mouse Cell Motion Tracking
- 1003: Mouse All Motion Tracking
- 1004: Mouse Focus Tracking
See https://github.com/GNOME/vte/blob/6acfa59dfcceef65c1f7e3570db37ab245f049c4/src/vteseq.cc#L708
for more information.
This commit adds functionality that changes the winit/glutin
`MouseCursor` when a mouse-listening mode of 1000-1004 is set. It
behaves similarly to when the window title changes.
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -81,6 +81,13 @@ use std::ops::Mul; pub use grid::Grid; pub use term::Term; +/// Facade around [winit's MouseCursor](glutin::MouseCursor) +#[derive(Debug, Eq, PartialEq, Copy, Clone)] +pub enum MouseCursor { + Arrow, + Text, +} + #[derive(Debug, Eq, PartialEq, Copy, Clone, Default, Serialize, Deserialize)] pub struct Rgb { pub r: u8, |