diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2025-02-02 13:17:51 +0300 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2025-02-16 02:20:39 +0300 |
commit | b87c56799ab6f6d651e1dc6c712a625545a4ad5f (patch) | |
tree | 726a36ede8cf7a9d310c4299f5fadef6398dcda0 /src/interface.c | |
parent | 6c500d60eb7df65b0c71e9b0e0955ff581fc3f5a (diff) | |
download | sciteco-b87c56799ab6f6d651e1dc6c712a625545a4ad5f.tar.gz |
implemented mouse support via special ^KMOUSE and <EJ> with negative keys
* You need to set 0,64ED to enable mouse processing in Curses.
It is always enabled in Gtk as it should never make the experience worse.
sample.teco_ini enables mouse support, since this should be the new default.
`sciteco --no-profile` won't have it enabled, though.
* On curses, it requires the ncurses mouse protocol version 2, which will
also be supported by PDCurses.
* Similar to the Curses API, a special key macro ^KMOUSE is inserted if any of the supported
mouse events has been detected.
* You can then use -EJ to get the type of mouse event, which can be used
with a computed goto in the command-line editing macro.
Alternatively, this could have been solved with separate ^KMOUSE:PRESSED,
^KMOUSE:RELEASED etc. pseudo-key macros.
* The default ^KMOUSE implementation in fnkeys.tes supports the following:
* Left click: Edit command line to jump to position.
* Ctrl+left click: Jump to beginning of line.
* Right click: Insert position or position range (when dragging).
* Double right click: insert range for word under cursor
* Ctrl+right click: Insert beginning of line
* Scroll wheel: scrolls (faster with shift)
* Ctrl+scroll wheel: zoom (GTK-only)
* Currently, there is no visual feedback when "selecting" ranges
via right-click+drag.
This would be tricky to do and most terminal emulators do not appear
to support continuous mouse updates.
Diffstat (limited to 'src/interface.c')
-rw-r--r-- | src/interface.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/interface.c b/src/interface.c index a3c9935..9ec1bed 100644 --- a/src/interface.c +++ b/src/interface.c @@ -43,6 +43,9 @@ TECO_DEFINE_UNDO_CALL(teco_interface_ssm, unsigned int, uptr_t, sptr_t); TECO_DEFINE_UNDO_CALL(teco_interface_info_update_qreg, const teco_qreg_t *); TECO_DEFINE_UNDO_CALL(teco_interface_info_update_buffer, const teco_buffer_t *); +/** Last mouse event */ +teco_mouse_t teco_mouse = {0}; + typedef struct { teco_string_t str; gchar name[]; |