Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:michals
rxvt-unicode
rxvt-unicode-secondarywheel.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File rxvt-unicode-secondarywheel.patch of Package rxvt-unicode
The patch from Arch Linux: https://aur.archlinux.org/packages/rxvt-unicode-better-wheel-scrolling/ --- doc/rxvt.1.pod | 12 ++++++++++++ src/command.C | 40 ++++++++++++++++++++++++++++++++++++++-- src/optinc.h | 1 + src/rsinc.h | 1 + src/xdefaults.C | 1 + 5 files changed, 53 insertions(+), 2 deletions(-) --- a/doc/rxvt.1.pod +++ b/doc/rxvt.1.pod @@ -440,6 +440,11 @@ B<secondaryScreen>. Turn on/off secondary screen scroll (default enabled); resource B<secondaryScroll>. +=item B<-ssw>|B<+ssw> + +Turn on/off secondary screen wheel support (default disabled); resource +B<secondaryWheel>. + =item B<-rm> I<mode> Compile I<frills>: Sets long line rewrapping behaviour on window resizes @@ -1096,6 +1101,13 @@ option is enabled, scrolls on the second scrollback buffer and, when secondaryScreen is off, switching to/from the secondary screen will instead scroll the screen up. +=item B<secondaryWheel:> I<boolean> + +Turn on/off secondary wheel (default disabled). If enabled, when on +secondary screen, using the mouse wheel will not scroll in the buffer +but instead send 3 "fake" keystrokes (Up/Down arrow) to the running +application (allows e.g. natural scrolling in B<man>, B<less>, etc). + =item B<hold>: I<boolean> Turn on/off hold window after exit support. If enabled, @@RXVT_NAME@@ --- a/src/command.C +++ b/src/command.C @@ -2211,10 +2211,46 @@ rxvt_term::button_release (XButtonEvent } else # endif +#ifndef NO_SECONDARY_SCREEN { - scr_page (dirn, lines); - scrollBar.show (1); + /* on SECONDARY screen, we send "fake" UP/DOWN keys instead + * (this allows to scroll within man, less, etc) */ + if (option (Opt_secondaryWheel) && current_screen != PRIMARY) + { + XKeyEvent event; + event.display = ev.display; + event.window = ev.window; + event.root = ev.root; + event.subwindow = ev.subwindow; + event.time = ev.time; + event.x = ev.x; + event.y = ev.y; + event.x_root = ev.x_root; + event.y_root = ev.y_root; + event.same_screen = ev.same_screen; + event.state = 0; + event.keycode = XKeysymToKeycode(ev.display, + (dirn == UP) ? XK_Up : XK_Down); + for ( ; lines > 0; --lines) + { + event.type = KeyPress; + XSendEvent (event.display, event.window, True, + KeyPressMask, (XEvent *) &event); + event.type = KeyRelease; + XSendEvent (event.display, event.window, True, + KeyPressMask, (XEvent *) &event); + } + } + /* on PRIMARY screen, we scroll in the buffer */ + else +#endif + { + scr_page (dirn, lines); + scrollBar.show (1); + } +#ifndef NO_SECONDARY_SCREEN } +#endif } break; #endif --- a/src/optinc.h +++ b/src/optinc.h @@ -26,6 +26,7 @@ def(cursorBlink) def(secondaryScreen) def(secondaryScroll) + def(secondaryWheel) def(pastableTabs) def(cursorUnderline) #if ENABLE_FRILLS --- a/src/rsinc.h +++ b/src/rsinc.h @@ -98,6 +98,7 @@ #ifndef NO_SECONDARY_SCREEN def (secondaryScreen) def (secondaryScroll) + def (secondaryWheel) #endif #if ENABLE_FRILLS def (rewrapMode) --- a/src/xdefaults.C +++ b/src/xdefaults.C @@ -257,6 +257,7 @@ optList[] = { #ifndef NO_SECONDARY_SCREEN BOOL (Rs_secondaryScreen, "secondaryScreen", "ssc", Opt_secondaryScreen, 0, "secondary screen"), BOOL (Rs_secondaryScroll, "secondaryScroll", "ssr", Opt_secondaryScroll, 0, "secondary screen scroll"), + BOOL (Rs_secondaryWheel, "secondaryWheel", "ssw", Opt_secondaryWheel, 0, "enable secondary screen wheel"), #endif #if ENABLE_FRILLS STRG (Rs_rewrapMode, "rewrapMode", "rm", "string", "rewrap mode (auto, always, never)"),
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor