From d1022352c01b3a3fc912c0e8acb7735a3ebec991 Mon Sep 17 00:00:00 2001 From: Von Random Date: Tue, 21 Nov 2017 19:46:08 +0300 Subject: [PATCH] Add rxvt-unicode-sgr; proper mouse reporting --- rxvt-unicode-sgr/PKGBUILD | 91 +++++++++++++++++++++++++++ rxvt-unicode-sgr/urxvt-sgr.patch | 90 ++++++++++++++++++++++++++ rxvt-unicode-sgr/urxvt-tabbed.desktop | 9 +++ rxvt-unicode-sgr/urxvt.desktop | 9 +++ rxvt-unicode-sgr/urxvtc.desktop | 9 +++ 5 files changed, 208 insertions(+) create mode 100644 rxvt-unicode-sgr/PKGBUILD create mode 100644 rxvt-unicode-sgr/urxvt-sgr.patch create mode 100644 rxvt-unicode-sgr/urxvt-tabbed.desktop create mode 100644 rxvt-unicode-sgr/urxvt.desktop create mode 100644 rxvt-unicode-sgr/urxvtc.desktop diff --git a/rxvt-unicode-sgr/PKGBUILD b/rxvt-unicode-sgr/PKGBUILD new file mode 100644 index 0000000..41417f1 --- /dev/null +++ b/rxvt-unicode-sgr/PKGBUILD @@ -0,0 +1,91 @@ +# $Id$ +# Maintainer: Sébastien Luttringer +# Contributor: Angel Velasquez +# Contributor: tobias +# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org + +pkgbase=rxvt-unicode +pkgname=('rxvt-unicode-sgr' 'rxvt-unicode-terminfo') +pkgver=9.22 +pkgrel=2 +arch=('i686' 'x86_64') +url='http://software.schmorp.de/pkg/rxvt-unicode.html' +license=('GPL') +makedepends=('libxft' 'perl' 'startup-notification') +source=( + "http://dist.schmorp.de/rxvt-unicode/$pkgname-$pkgver.tar.bz2" + 'urxvt.desktop' + 'urxvtc.desktop' + 'urxvt-tabbed.desktop' + 'urxvt-sgr.patch' +) +md5sums=('93782dec27494eb079467dacf6e48185' + 'fec94dc986fa37ec380079d81de3e0b2' + 'fac55f0a8404c86dad3e702146762332' + '8a5599197568c63720e282b9722a7990' + 'f8325b0a33999db4d5d1eeac4f320156') + +build() { + cd $pkgname-$pkgver + patch -p0 < ../urxvt-sgr.patch + # we disable smart-resize (FS#34807) + # do not specify --with-terminfo (FS#46424) + ./configure \ + --prefix=/usr \ + --enable-256-color \ + --enable-combining \ + --enable-fading \ + --enable-font-styles \ + --enable-iso14755 \ + --enable-keepscrolling \ + --enable-lastlog \ + --enable-mousewheel \ + --enable-next-scroll \ + --enable-perl \ + --enable-pointer-blank \ + --enable-rxvt-scroll \ + --enable-selectionscrolling \ + --enable-slipwheeling \ + --disable-smart-resize \ + --enable-startup-notification \ + --enable-transparency \ + --enable-unicode3 \ + --enable-utmp \ + --enable-wtmp \ + --enable-xft \ + --enable-xim \ + --enable-xterm-scroll \ + --disable-pixbuf \ + --disable-frills + make +} + +package_rxvt-unicode() { + pkgdesc='A unicode enabled rxvt-clone terminal emulator (urxvt)' + provides='rxvt-unicode' + conflicts='rxvt-unicode' + depends=('rxvt-unicode-terminfo' 'libxft' 'perl' 'startup-notification') + optdepends=('gtk2-perl: to use the urxvt-tabbed') + + # install freedesktop menu + for _f in urxvt urxvtc urxvt-tabbed; do + install -Dm644 $_f.desktop "$pkgdir/usr/share/applications/$_f.desktop" + done + cd $pkgname-$pkgver + # workaround terminfo installation + export TERMINFO="$srcdir/terminfo" + install -d "$TERMINFO" + make DESTDIR="$pkgdir" install + # install the tabbing wrapper ( requires gtk2-perl! ) + sed -i 's/\"rxvt\"/"urxvt"/' doc/rxvt-tabbed + install -Dm 755 doc/rxvt-tabbed "$pkgdir/usr/bin/urxvt-tabbed" +} + +package_rxvt-unicode-terminfo() { + pkgdesc='Terminfo files for urxvt' + conflict=('rxvt-unicode<=9.18-6') + install -dm 755 "$pkgdir/usr/share/" + mv terminfo "$pkgdir/usr/share/" +} + +# vim:set ts=2 sw=2 et: diff --git a/rxvt-unicode-sgr/urxvt-sgr.patch b/rxvt-unicode-sgr/urxvt-sgr.patch new file mode 100644 index 0000000..186e8fd --- /dev/null +++ b/rxvt-unicode-sgr/urxvt-sgr.patch @@ -0,0 +1,90 @@ +--- src/command.C 2014-12-13 13:22:09.000000000 +0100 ++++ src/command.C 2016-01-13 04:50:39.161862513 +0100 +@@ -1280,6 +1280,8 @@ + int x, y; + int code = 32; + ++ if (priv_modes & PrivMode_ExtMouseSgr) code = 0; ++ + x = Pixel2Col (ev.x) + 1; + y = Pixel2Row (ev.y) + 1; + +@@ -1293,11 +1295,18 @@ + code += 32; + } + +- if (MEvent.button == AnyButton) ++ if (!(priv_modes & PrivMode_ExtMouseSgr) && 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; +@@ -1347,16 +1356,22 @@ + #endif + + #if ENABLE_FRILLS ++ if (priv_modes & PrivMode_ExtMouseSgr) ++ tt_printf ("\033[<%d;%d;%d%c", ++ code + button_number + key_state, ++ x, ++ y, ++ (ev.type == ButtonRelease ? 'm' : 'M')); +- if (priv_modes & PrivMode_ExtMouseRight) ++ else if (priv_modes & PrivMode_ExtMouseRight) + tt_printf ("\033[%d;%d;%dM", + code + button_number + key_state, + x, + y); + else if (priv_modes & PrivMode_ExtModeMouse) + tt_printf ("\033[M%c%lc%lc", + code + button_number + key_state, + wint_t (32 + x), + wint_t (32 + y)); + else + #endif + tt_printf ("\033[M%c%c%c", +@@ -2908,7 +2913,7 @@ + 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); +@@ -3713,13 +3718,14 @@ + { 1002, PrivMode_MouseBtnEvent }, + { 1003, PrivMode_MouseAnyEvent }, + #if ENABLE_FRILLS + { 1005, PrivMode_ExtModeMouse }, ++ { 1006, PrivMode_ExtMouseSgr }, + #endif + { 1010, PrivMode_TtyOutputInh }, // rxvt extension + { 1011, PrivMode_Keypress }, // rxvt extension + #if ENABLE_FRILLS + { 1015, PrivMode_ExtMouseRight }, // urxvt extension of 1005 + #endif + // 1035 enable modifiers for alt, numlock NYI + // 1036 send ESC for meta keys NYI + // 1037 send DEL for keypad delete NYI +--- src/rxvt.h 2014-12-17 16:33:08.000000000 +0100 ++++ src/rxvt.h 2016-01-13 03:42:31.508911380 +0100 +@@ -644,6 +644,7 @@ + #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<<26) // sgr mouse extension + + #define PrivMode_mouse_report (PrivMode_MouseX10|PrivMode_MouseX11|PrivMode_MouseBtnEvent|PrivMode_MouseAnyEvent) + diff --git a/rxvt-unicode-sgr/urxvt-tabbed.desktop b/rxvt-unicode-sgr/urxvt-tabbed.desktop new file mode 100644 index 0000000..172006b --- /dev/null +++ b/rxvt-unicode-sgr/urxvt-tabbed.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=urxvt (tabbed) +Comment=An unicode capable and tabbed rxvt clone +Exec=urxvt-tabbed +Icon=utilities-terminal +Terminal=false +Type=Application +Categories=System;TerminalEmulator; diff --git a/rxvt-unicode-sgr/urxvt.desktop b/rxvt-unicode-sgr/urxvt.desktop new file mode 100644 index 0000000..7622918 --- /dev/null +++ b/rxvt-unicode-sgr/urxvt.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=urxvt +Comment=An unicode capable rxvt clone +Exec=urxvt +Icon=utilities-terminal +Terminal=false +Type=Application +Categories=System;TerminalEmulator; diff --git a/rxvt-unicode-sgr/urxvtc.desktop b/rxvt-unicode-sgr/urxvtc.desktop new file mode 100644 index 0000000..3a2df41 --- /dev/null +++ b/rxvt-unicode-sgr/urxvtc.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=urxvt (client) +Comment=An unicode capable rxvt clone client for urxvtd +Exec=urxvtc +Icon=utilities-terminal +Terminal=false +Type=Application +Categories=System;TerminalEmulator;