summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-terms')
-rw-r--r--x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch165
-rw-r--r--x11-terms/rxvt-unicode/metadata.xml3
-rw-r--r--x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild112
3 files changed, 280 insertions, 0 deletions
diff --git a/x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch b/x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch
new file mode 100644
index 000000000000..3f6f5d90618e
--- /dev/null
+++ b/x11-terms/rxvt-unicode/files/rxvt-unicode-9.22-sgr-mouse-mode-flag.patch
@@ -0,0 +1,165 @@
+diff --git a/config.h.in b/config.h.in
+index 914d606..b869bfb 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -9,6 +9,9 @@
+ /* Define if you want handling for rarely used but handy features */
+ #undef ENABLE_FRILLS
+
++/* Define if you want support for SGR mouse mode 1006 */
++#undef ENABLE_SGRMOUSE
++
+ /* Define if you can embed a perl interpreter */
+ #undef ENABLE_PERL
+
+diff --git a/configure.ac b/configure.ac
+index 0da3b59..c8b9c80 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -76,6 +76,7 @@ AC_SEARCH_LIBS(gethostbyname, nsl)
+ AC_SEARCH_LIBS(socket, socket)
+
+ support_frills=yes
++support_sgrmouse=yes
+ support_inheritpixmap=yes
+ support_fading=yes
+ support_keepscrolling=yes
+@@ -109,6 +110,7 @@ AC_ARG_ENABLE(everything,
+ [
+ if test x$enableval = xno; then
+ support_frills=no
++ support_sgrmouse=no
+ support_inheritpixmap=no
+ support_fading=no
+ support_keepscrolling=no
+@@ -137,6 +139,7 @@ AC_ARG_ENABLE(everything,
+ fi
+ if test x$enableval = xyes; then
+ support_frills=yes
++ support_sgrmouse=yes
+ support_inheritpixmap=yes
+ support_fading=yes
+ support_keepscrolling=yes
+@@ -359,6 +362,12 @@ AC_ARG_ENABLE(frills,
+ support_frills=$enableval
+ fi])
+
++AC_ARG_ENABLE(sgrmouse,
++ [ --enable-sgrmouse enable support for SGR mouse mode 1006],
++ [if test x$enableval = xyes -o x$enableval = xno; then
++ support_sgrmouse=$enableval
++ fi])
++
+ AC_ARG_ENABLE(keepscrolling,
+ [ --enable-keepscrolling enable continual scrolling on scrollbar arrow press],
+ [if test x$enableval = xyes -o x$enableval = xno; then
+@@ -666,6 +675,9 @@ fi
+ if test x$support_frills = xyes; then
+ AC_DEFINE(ENABLE_FRILLS, 1, Define if you want handling for rarely used but handy features)
+ fi
++if test x$support_sgrmouse = xyes; then
++ AC_DEFINE(ENABLE_SGRMOUSE, 1, Define if you want support for SGR mouse mode 1006)
++fi
+ if test x$support_mousewheel = xyes; then
+ AC_DEFINE(MOUSE_WHEEL, 1, Define to use wheel events (button4 and button5) to scroll)
+ fi
+diff --git a/src/command.C b/src/command.C
+index 7b79f51..a62ef87 100644
+--- a/src/command.C
++++ b/src/command.C
+@@ -1282,6 +1282,13 @@ rxvt_term::mouse_report (XButtonEvent &ev)
+ int button_number, key_state = 0;
+ int x, y;
+ int code = 32;
++ bool mode_sgr = false;
++
++#if ENABLE_SGRMOUSE
++ if (priv_modes & PrivMode_ExtMouseSgr) mode_sgr = true;
++#endif
++
++ if (mode_sgr) code = 0;
+
+ x = Pixel2Col (ev.x) + 1;
+ y = Pixel2Row (ev.y) + 1;
+@@ -1296,11 +1303,18 @@ rxvt_term::mouse_report (XButtonEvent &ev)
+ code += 32;
+ }
+
+- if (MEvent.button == AnyButton)
++ if (!(mode_sgr) && MEvent.button == AnyButton)
+ button_number = 3;
+ else
+ {
+- button_number = MEvent.button - Button1;
++ if (ev.type == MotionNotify) {
++ if (ev.state & Button1Mask) button_number = 0;
++ else if (ev.state & Button2Mask) button_number = 1;
++ else if (ev.state & Button3Mask) button_number = 2;
++ else return;
++ } else {
++ button_number = ev.button - Button1;
++ }
+ /* add 0x3D for wheel events, like xterm does */
+ if (button_number >= 3)
+ button_number += 64 - 3;
+@@ -1361,6 +1375,15 @@ rxvt_term::mouse_report (XButtonEvent &ev)
+ wint_t (32 + x),
+ wint_t (32 + y));
+ else
++#endif
++#if ENABLE_SGRMOUSE
++ if (mode_sgr)
++ tt_printf ("\033[<%d;%d;%d%c",
++ code + button_number + key_state,
++ x,
++ y,
++ (ev.type == ButtonRelease ? 'm' : 'M'));
++ else
+ #endif
+ tt_printf ("\033[M%c%c%c",
+ code + button_number + key_state,
+@@ -2904,7 +2927,7 @@ rxvt_term::process_csi_seq ()
+ scr_soft_reset ();
+
+ static const int pm_h[] = { 7, 25 };
+- static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1005, 1015, 1049 };
++ static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1002, 1003, 1005, 1006, 1015, 1049 };
+
+ process_terminal_mode ('h', 0, ecb_array_length (pm_h), pm_h);
+ process_terminal_mode ('l', 0, ecb_array_length (pm_l), pm_l);
+@@ -3710,6 +3733,9 @@ rxvt_term::process_terminal_mode (int mode, int priv ecb_unused, unsigned int na
+ { 1003, PrivMode_MouseAnyEvent },
+ #if ENABLE_FRILLS
+ { 1005, PrivMode_ExtModeMouse },
++#endif
++#if ENABLE_SGRMOUSE
++ { 1006, PrivMode_ExtMouseSgr },
+ #endif
+ { 1010, PrivMode_TtyOutputInh }, // rxvt extension
+ { 1011, PrivMode_Keypress }, // rxvt extension
+diff --git a/src/rxvt.h b/src/rxvt.h
+index 5c7cf66..2ffd3fb 100644
+--- a/src/rxvt.h
++++ b/src/rxvt.h
+@@ -645,6 +645,7 @@ enum {
+ #define PrivMode_ExtModeMouse (1UL<<23) // xterm pseudo-utf-8 hack
+ #define PrivMode_ExtMouseRight (1UL<<24) // xterm pseudo-utf-8, but works in non-utf-8-locales
+ #define PrivMode_BlinkingCursor (1UL<<25)
++#define PrivMode_ExtMouseSgr (1UL<<27) // sgr mouse extension
+
+ #define PrivMode_mouse_report (PrivMode_MouseX10|PrivMode_MouseX11|PrivMode_MouseBtnEvent|PrivMode_MouseAnyEvent)
+
+diff --git a/src/xdefaults.C b/src/xdefaults.C
+index 894aa8d..e5952b7 100644
+--- a/src/xdefaults.C
++++ b/src/xdefaults.C
+@@ -359,6 +359,9 @@ static const char optionsstring[] = "options: "
+ #if defined(ENABLE_FRILLS)
+ "frills,"
+ #endif
++#if defined(ENABLE_SGRMOUSE)
++ "sgrmouse,"
++#endif
+ #if defined(SELECTION_SCROLLING)
+ "selectionscrolling,"
+ #endif
diff --git a/x11-terms/rxvt-unicode/metadata.xml b/x11-terms/rxvt-unicode/metadata.xml
index e088706493d5..b2f262896f27 100644
--- a/x11-terms/rxvt-unicode/metadata.xml
+++ b/x11-terms/rxvt-unicode/metadata.xml
@@ -21,6 +21,9 @@
<flag name="iso14755">Enable ISO-14755 support</flag>
<flag name="mousewheel">Enable scrolling via mouse wheel or buttons 4 and 5</flag>
<flag name="perl">Enable perl script support. You can still disable this at runtime with -pe ""</flag>
+<flag name="sgrmouse">Enable unofficial support for the xterm SGR 1006 mouse-tracking extension.
+ Needed to properly support mouse events for terminals with more than 223
+ rows or columns, in applications not supporting the urxvt 1015 extension.</flag>
<flag name="unicode3">Use 21 instead of 16 bits to represent unicode characters</flag>
<flag name="utmp">Enable utmp support</flag>
<flag name="wtmp">Enable wtmp support</flag>
diff --git a/x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild b/x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild
new file mode 100644
index 000000000000..3f1cb44b6c4b
--- /dev/null
+++ b/x11-terms/rxvt-unicode/rxvt-unicode-9.22-r7.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop systemd
+
+COLOUR_PATCH_NAME="${PN}-9.22_24-bit-color_cpixl-20201108.patch"
+
+DESCRIPTION="rxvt clone with xft and unicode support"
+HOMEPAGE="http://software.schmorp.de/pkg/rxvt-unicode.html"
+SRC_URI="http://dist.schmorp.de/rxvt-unicode/Attic/${P}.tar.bz2
+ https://dev.gentoo.org/~marecki/dists/${PN}/${COLOUR_PATCH_NAME}.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris"
+IUSE="-24-bit-color 256-color blink fading-colors +font-styles gdk-pixbuf iso14755 +mousewheel
+ +perl -sgrmouse startup-notification unicode3 +utmp +wtmp xft"
+
+RESTRICT="test"
+
+RDEPEND=">=sys-libs/ncurses-5.7-r6:=
+ media-libs/fontconfig
+ x11-libs/libX11
+ x11-libs/libXrender
+ gdk-pixbuf? ( x11-libs/gdk-pixbuf )
+ kernel_Darwin? ( dev-perl/Mac-Pasteboard )
+ perl? ( dev-lang/perl:= )
+ startup-notification? ( x11-libs/startup-notification )
+ xft? ( x11-libs/libXft )"
+DEPEND="${RDEPEND}
+ x11-base/xorg-proto"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9.06-case-insensitive-fs.patch
+ "${FILESDIR}"/${PN}-9.21-xsubpp.patch
+ "${FILESDIR}"/${PN}-9.22-sgr-mouse-mode-flag.patch
+ "${WORKDIR}"/${COLOUR_PATCH_NAME}
+)
+DOCS=(
+ Changes
+ README.FAQ
+ doc/README.xvt
+ doc/changes.txt
+ doc/etc/${PN}.term{cap,info}
+ doc/rxvt-tabbed
+)
+
+src_prepare() {
+ default
+
+ # kill the rxvt-unicode terminfo file - #192083
+ sed -i -e "/rxvt-unicode.terminfo/d" doc/Makefile.in || die "sed failed"
+
+ eautoreconf
+}
+
+src_configure() {
+ # --enable-everything goes first: the order of the arguments matters
+ econf --enable-everything \
+ $(use_enable 24-bit-color) \
+ $(use_enable 256-color) \
+ $(use_enable blink text-blink) \
+ $(use_enable fading-colors fading) \
+ $(use_enable font-styles) \
+ $(use_enable gdk-pixbuf pixbuf) \
+ $(use_enable iso14755) \
+ $(use_enable mousewheel) \
+ $(use_enable perl) \
+ $(use_enable sgrmouse) \
+ $(use_enable startup-notification) \
+ $(use_enable unicode3) \
+ $(use_enable utmp) \
+ $(use_enable wtmp) \
+ $(use_enable xft)
+}
+
+src_compile() {
+ default
+
+ sed -i \
+ -e 's/RXVT_BASENAME = "rxvt"/RXVT_BASENAME = "urxvt"/' \
+ "${S}"/doc/rxvt-tabbed || die
+}
+
+src_install() {
+ default
+
+ systemd_douserunit "${FILESDIR}"/urxvtd.service
+
+ make_desktop_entry urxvt rxvt-unicode utilities-terminal \
+ "System;TerminalEmulator"
+}
+
+pkg_postinst() {
+ if use 24-bit-color; then
+ ewarn
+ ewarn "You have enabled 24-bit colour support in ${PN}, which is UNOFFICIAL and INCOMPLETE."
+ ewarn "You may or may not encounter visual glitches or stability issues. When in doubt,"
+ ewarn "rebuild =${CATEGORY}/${PF} with USE=-24-bit-color (the default setting)."
+ ewarn
+ fi
+
+ if use sgrmouse; then
+ ewarn
+ ewarn "Support for the SGR 1006 mouse extension in ${PN} is UNOFFICIAL and provided as-is."
+ ewarn "When in doubt, rebuild =${CATEGORY}/${PF} with USE=-sgrmouse (the default setting)."
+ ewarn
+ fi
+}