Hello community, here is the log from the commit of package xterm for openSUSE:Factory checked in at 2012-12-05 14:10:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xterm (Old) and /work/SRC/openSUSE:Factory/.xterm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xterm", Maintainer is "meiss...@suse.com" Changes: -------- --- /work/SRC/openSUSE:Factory/xterm/xterm.changes 2012-10-31 14:06:17.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.xterm.new/xterm.changes 2012-12-05 14:10:38.000000000 +0100 @@ -1,0 +2,44 @@ +Tue Nov 27 20:03:03 CET 2012 - sbra...@suse.cz + +- Verify GPG signatures. + +------------------------------------------------------------------- +Mon Nov 26 15:00:14 UTC 2012 - meiss...@suse.com + +- Patch #287 - 2012/11/25 + * fix a case where in_put() loop could continue when it has found an + X event rather than the pty, causing the pty-read to be delayed + (patch by Balazs Kezes). + * add option to pointerMode resource and corresponding control + sequences to allow text-cursor to remain hidden if the pointer + leaves/enters the window via accelerator keys. Ordinary motion + within the window restores the pointer (prompted by patch by Balazs + Kezes). + * remove special case of modifiers for the Mode_switch and + XK_ISO_Level3_Shift from patch #223. Verified that the conflict + which this was intended to resolve does not happen for normal + compose- or modeswitch-handling (prompted by patch by Balazs Kezes, + Debian #638694). + * modify the handling of focus-change events to ignore those whose + detail is NotifyPointer, since those are sent in addition to + focus-change events directed to the old/new windows having focus + (prompted by patch by Balazs Kezes to prevent the urgency-hint from + being reset in this scenario). + * modify description of iconName in manpage to make it clearer that + this resource does not specify the filename of an icon (discussion + with Ian Collier). * modify iconHint resource to allow suppressing + the built-in icon by setting this to "none" (discussion with Ian + Collier). + * make -iconic option work with the toolbar configuration. + * correct initialization of window manager hints used to set the + icon-pixmap. That detail from patch #282 overwrote state used to + control the -iconic command-line option (report by Ian Collier). + * fix paste64 feature for the case where the selection comes from the + current terminal. The selection callback can happen after the reply + is partly built, making it necessary to flush the reply-buffer to + keep things in the proper order (report by Ailin Nemui). + * reject command-line options which are longer than the options in + xterm's table, to avoid mismatches (Redhat #875305). + * correct attribution for patch #282 changes. + +------------------------------------------------------------------- Old: ---- xterm-286.tgz xterm-286.tgz.asc New: ---- xterm-287.tgz xterm-287.tgz.asc xterm.keyring ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xterm.spec ++++++ --- /var/tmp/diff_new_pack.A7wtdZ/_old 2012-12-05 14:10:40.000000000 +0100 +++ /var/tmp/diff_new_pack.A7wtdZ/_new 2012-12-05 14:10:40.000000000 +0100 @@ -21,6 +21,7 @@ BuildRequires: fontpackages-devel %endif BuildRequires: freetype2-devel +BuildRequires: gpg-offline BuildRequires: ncurses-devel BuildRequires: update-desktop-files %if 0%{?suse_version} > 1130 @@ -47,7 +48,7 @@ %if 0%{?suse_version} > 1210 Requires: luit %endif -Version: 286 +Version: 287 Release: 0 Summary: The basic X terminal program License: MIT @@ -62,6 +63,7 @@ %define vttest_version 20120506 Source7: ftp://invisible-island.net/vttest/vttest-%vttest_version.tgz Source10: ftp://invisible-island.net/vttest/vttest-%vttest_version.tgz.asc +Source11: %name.keyring Source8: 20x20ja.bdf.bz2 Source9: 20x20ko.bdf.bz2 # Snoop for the escape sequence assignment of the keypad @@ -82,6 +84,7 @@ This package contains the basic X.Org terminal program. %prep +%gpg_verify %{S:2} %{S:10} %setup -q -b7 %patch1 -p1 -b .xterm-settings %patch2 -p0 -b .xterm-sigwinch ++++++ xterm-286.tgz -> xterm-287.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/MANIFEST new/xterm-287/MANIFEST --- old/xterm-286/MANIFEST 2012-10-25 12:53:12.000000000 +0200 +++ new/xterm-287/MANIFEST 2012-11-19 10:54:44.000000000 +0100 @@ -1,4 +1,4 @@ -MANIFEST for xterm-286, version xterm-286 +MANIFEST for xterm-287, version xterm-287 -------------------------------------------------------------------------------- MANIFEST this file 256colres.h resource-definitions for 256-color mode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/THANKS new/xterm-287/THANKS --- old/xterm-286/THANKS 2012-08-21 00:21:54.000000000 +0200 +++ new/xterm-287/THANKS 2012-11-22 00:47:03.000000000 +0100 @@ -1,4 +1,4 @@ --- $XTermId: THANKS,v 1.6 2012/08/20 22:21:54 tom Exp $ +-- $XTermId: THANKS,v 1.8 2012/11/21 23:47:03 tom Exp $ -- vile:txtmode fk=8bit There's no AUTHORS file in this distribution; it would be redundant since I (Thomas E. Dickey) have done more than 80% of the work on xterm since 1996. @@ -24,6 +24,7 @@ Andrew Tipton Andries E Brouwer Anton Kovalenko +Balazs Kezes Ben Yoshino Bernhard R Link Bernhard Rosenkraenzer @@ -101,6 +102,7 @@ Keith Packard Ken Martin Kevin Buhr +Kevin Ryde Kevin Schoedel Kiyokazu Suto Larry Riedel @@ -131,9 +133,11 @@ N�meth M�rton Nicolas George Ovidiu Gheorghioiu +Paul Bolle Paul Gilmartin Paul Giordano Paul Lampert +Paul Maier Paul Vojta Paul Williams Pavel Roskin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/button.c new/xterm-287/button.c --- old/xterm-286/button.c 2012-05-10 13:06:10.000000000 +0200 +++ new/xterm-287/button.c 2012-11-20 02:15:57.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: button.c,v 1.434 2012/05/10 11:06:10 tom Exp $ */ +/* $XTermId: button.c,v 1.435 2012/11/20 01:15:57 tom Exp $ */ /* * Copyright 1999-2011,2012 by Thomas E. Dickey @@ -1819,14 +1819,25 @@ #endif /* OPT_PASTE64 */ static void -_qWriteSelectionData(TScreen * screen, Char * lag, unsigned length) +_qWriteSelectionData(XtermWidget xw, Char * lag, unsigned length) { + TScreen *screen = TScreenOf(xw); + #if OPT_PASTE64 if (screen->base64_paste) { /* Send data as base64 */ Char *p = lag; Char buf[64]; unsigned x = 0; + + /* + * Handle the case where the selection is from _this_ xterm, which + * puts part of the reply in the buffer before the selection callback + * happens. + */ + if (screen->base64_paste && screen->unparse_len) { + unparse_end(xw); + } while (length--) { switch (screen->base64_count) { case 0: @@ -1876,12 +1887,13 @@ } static void -_WriteSelectionData(TScreen * screen, Char * line, size_t length) +_WriteSelectionData(XtermWidget xw, Char * line, size_t length) { /* Write data to pty a line at a time. */ /* Doing this one line at a time may no longer be necessary because v_write has been re-written. */ + TScreen *screen = TScreenOf(xw); Char *lag, *end; /* in the VMS version, if tt_pasting isn't set to True then qio @@ -1897,7 +1909,7 @@ #if OPT_PASTE64 if (screen->base64_paste) { - _qWriteSelectionData(screen, lag, (unsigned) (end - lag)); + _qWriteSelectionData(xw, lag, (unsigned) (end - lag)); base64_flush(screen); } else #endif @@ -1907,14 +1919,14 @@ for (cp = line; cp != end; cp++) { if (*cp == '\n') { *cp = '\r'; - _qWriteSelectionData(screen, lag, (unsigned) (cp - lag + 1)); + _qWriteSelectionData(xw, lag, (unsigned) (cp - lag + 1)); lag = cp + 1; } } } if (lag != end) { - _qWriteSelectionData(screen, lag, (unsigned) (end - lag)); + _qWriteSelectionData(xw, lag, (unsigned) (end - lag)); } } #ifdef VMS @@ -2061,7 +2073,7 @@ screen->internal_select = buffer; } } else { - _WriteSelectionData(screen, (Char *) text_list[i], len); + _WriteSelectionData(xw, (Char *) text_list[i], len); } } #if OPT_PASTE64 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/charproc.c new/xterm-287/charproc.c --- old/xterm-286/charproc.c 2012-10-29 01:50:03.000000000 +0100 +++ new/xterm-287/charproc.c 2012-11-25 20:25:10.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: charproc.c,v 1.1268 2012/10/29 00:50:03 tom Exp $ */ +/* $XTermId: charproc.c,v 1.1270 2012/11/25 19:25:10 Balazs.Kezes Exp $ */ /* * Copyright 1999-2011,2012 by Thomas E. Dickey @@ -4257,7 +4257,7 @@ select_timeout.tv_sec = 0; i = Select(max_plus1, &select_mask, &write_mask, 0, &select_timeout); - if (i > 0) + if (i > 0 && FD_ISSET(screen->respond, &select_mask)) continue; else break; @@ -4273,7 +4273,7 @@ select_timeout.tv_sec = 0; i = Select(max_plus1, &select_mask, &write_mask, 0, &select_timeout); - if (i > 0) { + if (i > 0 && FD_ISSET(screen->respond, &select_mask)) { sched_yield(); } else break; @@ -8303,6 +8303,26 @@ TRACE(("VTRealize\n")); +#if OPT_TOOLBAR + /* + * Layout for the toolbar confuses the Shell widget. Remind it that we + * would like to be iconified if the corresponding resource was set. + */ + if (XtIsRealized(toplevel)) { + Boolean iconic = 0; + + XtVaGetValues(toplevel, + XtNiconic, &iconic, + (XtPointer) 0); + + if (iconic) { + XIconifyWindow(XtDisplay(toplevel), + XtWindow(toplevel), + DefaultScreen(XtDisplay(toplevel))); + } + } +#endif + TabReset(xw->tabs); if (screen->menu_font_number == fontMenu_default) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/ctlseqs.ms new/xterm-287/ctlseqs.ms --- old/xterm-286/ctlseqs.ms 2012-09-26 10:51:31.000000000 +0200 +++ new/xterm-287/ctlseqs.ms 2012-11-25 17:23:14.000000000 +0100 @@ -1,6 +1,6 @@ .\"#! troff -ms $1 -*- Nroff -*- .\" "Xterm Control Sequences" document -.\" $XTermId: ctlseqs.ms,v 1.274 2012/09/26 08:51:31 tom Exp $ +.\" $XTermId: ctlseqs.ms,v 1.276 2012/11/25 16:23:14 tom Exp $ .\" .\" .\" Copyright 1996-2011,2012 by Thomas E. Dickey @@ -67,6 +67,11 @@ .\" .\" Run this file through troff and use the -ms macro package. .\" +.ds XT XTerm +.ds xt xterm +.ds LF Patch #287 +.ds RF 2012/11/25 +.\" .if n .pl 9999v \" no page breaks in nroff .ND .\" Start a list of controls @@ -108,7 +113,7 @@ .B .. .ds CH \" as nothing -.ds LH Xterm Control Sequences +.ds LH \*(XT Control Sequences .nr s 6*\n(PS/10 .ds L \s\nsBEL\s0 .ds E \s\nsESC\s0 @@ -306,7 +311,7 @@ .el .nr LL 72m .if n .na .TL -Xterm Control Sequences +\*(XT Control Sequences .AU Edward Moy .AI @@ -322,6 +327,7 @@ .AI XFree86 Project (1996-2006) invisible-island.net (2006-2012) +updated for \*(XT \*(LF (\*(RF) .AU . .am BT \" add page numbers after first page @@ -656,7 +662,7 @@ \fIxterm\fP responds with \*(Dc\*1\*+\*r\*(Pt\*s\*(ST for valid requests, adding to \*(Pt an \*=, -and the value of the corresponding string that xterm would send, +and the value of the corresponding string that \*(xt would send, or \*(Dc\*0\*+\*r\*(Pt\*s\*(ST for invalid requests. @@ -1169,7 +1175,8 @@ Valid values for the parameter: \*(Ps = \*0 \(-> never hide the pointer. \*(Ps = \*1 \(-> hide if the mouse tracking mode is not enabled. - \*(Ps = \*2 \(-> always hide the pointer. + \*(Ps = \*2 \(-> always hide the pointer, except when leaving the window. + \*(Ps = \*3 \(-> always hide the pointer, even if leaving/entering the window. If no parameter is given, \fIxterm\fP uses the default, which is \*1. . @@ -1435,7 +1442,7 @@ Valid values for the parameter are: \*(Ps = \*0, 1 or omitted \(-> transmit a single DECLRP locator report. .sP -If Locator Reporting has been enabled by a DECELR, xterm will respond +If Locator Reporting has been enabled by a DECELR, \*(xt will respond with a DECLRP Locator Report. This report is also generated on button up and down events if they have been enabled with a DECSLE, or when @@ -1448,7 +1455,7 @@ .br Valid values for the event: \*(Pe = \*0 \(-> locator unavailable - no other parameters sent. - \*(Pe = \*1 \(-> request - xterm received a DECRQLP. + \*(Pe = \*1 \(-> request - \*(xt received a DECRQLP. \*(Pe = \*2 \(-> left button down. \*(Pe = \*3 \(-> left button up. \*(Pe = \*4 \(-> middle button down. @@ -1467,9 +1474,9 @@ \*(Pb & \*8 \(<- M4 button down. .br ``row'' and ``column'' parameters are the coordinates of the locator -position in the xterm window, encoded as ASCII decimal. +position in the \*(xt window, encoded as ASCII decimal. .br -The ``page'' parameter is not used by xterm, and will be omitted. +The ``page'' parameter is not used by \*(xt, and will be omitted. . .IP \\*(Cs\\*(Pm\\*s\\*(Sp\\*} Insert \*(Ps Column(s) (default = 1) (DECIC), VT420 and up. @@ -1506,7 +1513,7 @@ and if supported, the remainder of the 88-color or 256-color table. .sP If a "?" is given rather than a name or RGB specification, -xterm replies with a control sequence of the same form which can be used +\*(xt replies with a control sequence of the same form which can be used to set the corresponding color. Because more than one pair of color number and specification can be given in one control sequence, \fIxterm\fR can make more than one reply. @@ -1536,7 +1543,7 @@ The colors are specified by name or RGB specification as per \fIXParseColor\fP. .sP If a "?" is given rather than a name or RGB specification, -xterm replies with a control sequence of the same form which can be used +\*(xt replies with a control sequence of the same form which can be used to set the corresponding dynamic color. Because more than one pair of color number and specification can be given in one control sequence, \fIxterm\fR can make more than one reply. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/ctlseqs.txt new/xterm-287/ctlseqs.txt --- old/xterm-286/ctlseqs.txt 2012-09-26 10:51:59.000000000 +0200 +++ new/xterm-287/ctlseqs.txt 2012-11-25 17:23:17.000000000 +0100 @@ -7,7 +7,7 @@ - Xterm Control Sequences + XTerm Control Sequences Edward Moy @@ -21,6 +21,7 @@ Thomas Dickey XFree86 Project (1996-2006) invisible-island.net (2006-2012) + updated for XTerm Patch #287 (2012/11/25) @@ -657,8 +658,11 @@ Valid values for the parameter: Ps = 0 -> never hide the pointer. Ps = 1 -> hide if the mouse tracking mode is not enabled. - Ps = 2 -> always hide the pointer. If no parameter is - given, xterm uses the default, which is 1 . + Ps = 2 -> always hide the pointer, except when leaving the + window. + Ps = 3 -> always hide the pointer, even if leaving/entering + the window. If no parameter is given, xterm uses the default, + which is 1 . CSI ! p Soft terminal reset (DECSTR). CSI Ps $ p Request ANSI mode (DECRQM). For VT300 and up, reply is diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/input.c new/xterm-287/input.c --- old/xterm-286/input.c 2012-10-22 22:57:52.000000000 +0200 +++ new/xterm-287/input.c 2012-11-23 19:43:35.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: input.c,v 1.342 2012/10/22 20:57:52 tom Exp $ */ +/* $XTermId: input.c,v 1.344 2012/11/23 18:43:35 tom Exp $ */ /* * Copyright 1999-2011,2012 by Thomas E. Dickey @@ -415,11 +415,7 @@ { unsigned result = 0; #if OPT_NUM_LOCK - if (param > MOD_NONE - && ((ShiftMask - | ControlMask - | xw->work.alt_mods - | xw->work.meta_mods) & xw->work.other_mods) == 0) { + if (param > MOD_NONE) { if ((param - MOD_NONE) & MOD_SHIFT) UIntSet(result, ShiftMask); if ((param - MOD_NONE) & MOD_CTRL) @@ -449,23 +445,21 @@ TRACE(("xtermStateToParam %#x\n", state)); #if OPT_NUM_LOCK - if ((state & xw->work.other_mods) == 0) { - if (state & ShiftMask) { - modify_parm += MOD_SHIFT; - UIntClr(state, ShiftMask); - } - if (state & ControlMask) { - modify_parm += MOD_CTRL; - UIntClr(state, ControlMask); - } - if ((state & xw->work.alt_mods) != 0) { - modify_parm += MOD_ALT; - UIntClr(state, xw->work.alt_mods); - } - if ((state & xw->work.meta_mods) != 0) { - modify_parm += MOD_META; - UIntClr(state, xw->work.meta_mods); - } + if (state & ShiftMask) { + modify_parm += MOD_SHIFT; + UIntClr(state, ShiftMask); + } + if (state & ControlMask) { + modify_parm += MOD_CTRL; + UIntClr(state, ControlMask); + } + if ((state & xw->work.alt_mods) != 0) { + modify_parm += MOD_ALT; + UIntClr(state, xw->work.alt_mods); + } + if ((state & xw->work.meta_mods) != 0) { + modify_parm += MOD_META; + UIntClr(state, xw->work.meta_mods); } if (modify_parm == MOD_NONE) modify_parm = 0; @@ -605,11 +599,7 @@ || IsCursorKey(kd->keysym) || IsPFKey(kd->keysym) || IsMiscFunctionKey(kd->keysym) - || IsPrivateKeypadKey(kd->keysym) -#if OPT_NUM_LOCK - || (state & xw->work.other_mods) != 0 -#endif - ) { + || IsPrivateKeypadKey(kd->keysym)) { result = False; } else if (modify_parm != 0) { if (IsBackarrowToggle(keyboard, kd->keysym, state)) { @@ -856,42 +846,27 @@ return result; } -void -Input(XtermWidget xw, - XKeyEvent * event, - Bool eightbit) +static Boolean +lookupKeyData(KEY_DATA * kd, XtermWidget xw, XKeyEvent * event) { - Char *string; - - TKeyboard *keyboard = &(xw->keyboard); TScreen *screen = TScreenOf(xw); + TKeyboard *keyboard = &(xw->keyboard); + Boolean result = True; - int j; - int key = False; - ANSI reply; - int dec_code; - unsigned modify_parm = 0; - int keypad_mode = ((keyboard->flags & MODE_DECKPAM) != 0); - unsigned evt_state = event->state; - unsigned mod_state; - KEY_DATA kd; - - /* Ignore characters typed at the keyboard */ - if (keyboard->flags & MODE_KAM) - return; + TRACE(("%s %#x\n", visibleEventType(event->type), event->keycode)); - kd.keysym = 0; - kd.is_fkey = False; + kd->keysym = 0; + kd->is_fkey = False; #if OPT_TCAP_QUERY if (screen->tc_query_code >= 0) { - kd.keysym = (KeySym) screen->tc_query_code; - kd.is_fkey = screen->tc_query_fkey; - if (kd.keysym != XK_BackSpace) { - kd.nbytes = 0; - kd.strbuf[0] = 0; + kd->keysym = (KeySym) screen->tc_query_code; + kd->is_fkey = screen->tc_query_fkey; + if (kd->keysym != XK_BackSpace) { + kd->nbytes = 0; + kd->strbuf[0] = 0; } else { - kd.nbytes = 1; - kd.strbuf[0] = 8; + kd->nbytes = 1; + kd->strbuf[0] = 8; } } else #endif @@ -902,27 +877,27 @@ Status status_return; #if OPT_WIDE_CHARS if (screen->utf8_mode) { - kd.nbytes = Xutf8LookupString(input->xic, event, - kd.strbuf, (int) sizeof(kd.strbuf), - &kd.keysym, &status_return); + kd->nbytes = Xutf8LookupString(input->xic, event, + kd->strbuf, (int) sizeof(kd->strbuf), + &(kd->keysym), &status_return); } else #endif { - kd.nbytes = XmbLookupString(input->xic, event, - kd.strbuf, (int) sizeof(kd.strbuf), - &kd.keysym, &status_return); + kd->nbytes = XmbLookupString(input->xic, event, + kd->strbuf, (int) sizeof(kd->strbuf), + &(kd->keysym), &status_return); } #if OPT_MOD_FKEYS /* * Fill-in some code useful with IsControlAlias(): */ if (status_return == XLookupBoth - && kd.nbytes <= 1 - && !IsPredefinedKey(kd.keysym) + && kd->nbytes <= 1 + && !IsPredefinedKey(kd->keysym) && (keyboard->modify_now.other_keys > 1) - && !IsControlInput(&kd)) { - kd.nbytes = 1; - kd.strbuf[0] = (char) kd.keysym; + && !IsControlInput(kd)) { + kd->nbytes = 1; + kd->strbuf[0] = (char) kd->keysym; } #endif /* OPT_MOD_FKEYS */ } else @@ -930,11 +905,40 @@ { static XComposeStatus compose_status = {NULL, 0}; - kd.nbytes = XLookupString(event, kd.strbuf, (int) sizeof(kd.strbuf), - &kd.keysym, &compose_status); + kd->nbytes = XLookupString(event, + kd->strbuf, (int) sizeof(kd->strbuf), + &(kd->keysym), &compose_status); } - kd.is_fkey = IsFunctionKey(kd.keysym); + kd->is_fkey = IsFunctionKey(kd->keysym); } + return result; +} + +void +Input(XtermWidget xw, + XKeyEvent * event, + Bool eightbit) +{ + Char *string; + + TKeyboard *keyboard = &(xw->keyboard); + TScreen *screen = TScreenOf(xw); + + int j; + int key = False; + ANSI reply; + int dec_code; + unsigned modify_parm = 0; + int keypad_mode = ((keyboard->flags & MODE_DECKPAM) != 0); + unsigned evt_state = event->state; + unsigned mod_state; + KEY_DATA kd; + + /* Ignore characters typed at the keyboard */ + if (keyboard->flags & MODE_KAM) + return; + + lookupKeyData(&kd, xw, event); memset(&reply, 0, sizeof(reply)); @@ -2075,23 +2079,6 @@ SaveMask(alt_mods); } else if (keysym == XK_Meta_L || keysym == XK_Meta_R) { SaveMask(meta_mods); - } else if (mask == ShiftMask - && (keysym == XK_Shift_L - || keysym == XK_Shift_R)) { - /* EMPTY */ ; - } else if (mask == ControlMask - && (keysym == XK_Control_L - || keysym == XK_Control_R)) { - /* EMPTY */ ; - } else if (mask == LockMask - && (keysym == XK_Caps_Lock)) { - /* EMPTY */ ; - } else if (keysym == XK_Mode_switch -#ifdef XK_ISO_Level3_Shift - || keysym == XK_ISO_Level3_Shift -#endif - ) { - SaveMask(other_mods); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/main.c new/xterm-287/main.c --- old/xterm-286/main.c 2012-10-14 20:55:00.000000000 +0200 +++ new/xterm-287/main.c 2012-11-19 11:33:33.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: main.c,v 1.688 2012/10/14 18:55:00 tom Exp $ */ +/* $XTermId: main.c,v 1.689 2012/11/19 10:33:33 tom Exp $ */ /* * Copyright 2002-2011,2012 by Thomas E. Dickey @@ -1521,26 +1521,31 @@ *valuep = 0; if (atbest >= 0) { - if (!exact && ambiguous1 >= 0 && ambiguous2 >= 0) { - xtermWarning( - "ambiguous option \"%s\" vs \"%s\"\n", - ITEM(ambiguous1)->option, - ITEM(ambiguous2)->option); - } result = ITEM(atbest); - TRACE(("...result %s\n", result->option)); - /* expand abbreviations */ - if (result->argKind != XrmoptionStickyArg - && strcmp(argv[*num], x_strdup(result->option))) { - argv[*num] = x_strdup(result->option); + if (!exact) { + if (ambiguous1 >= 0 && ambiguous2 >= 0) { + xtermWarning("ambiguous option \"%s\" vs \"%s\"\n", + ITEM(ambiguous1)->option, + ITEM(ambiguous2)->option); + } else if (strlen(option) > strlen(result->option)) { + result = 0; + } } + if (result != 0) { + TRACE(("...result %s\n", result->option)); + /* expand abbreviations */ + if (result->argKind != XrmoptionStickyArg + && strcmp(argv[*num], x_strdup(result->option))) { + argv[*num] = x_strdup(result->option); + } - /* adjust (*num) to skip option value */ - (*num) += countArg(result); - TRACE(("...next %s\n", NonNull(argv[*num]))); - if (result->argKind == XrmoptionSkipArg) { - *valuep = argv[*num]; - TRACE(("...parameter %s\n", NonNull(*valuep))); + /* adjust (*num) to skip option value */ + (*num) += countArg(result); + TRACE(("...next %s\n", NonNull(argv[*num]))); + if (result->argKind == XrmoptionSkipArg) { + *valuep = argv[*num]; + TRACE(("...parameter %s\n", NonNull(*valuep))); + } } } #undef ITEM diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/misc.c new/xterm-287/misc.c --- old/xterm-286/misc.c 2012-10-29 00:09:35.000000000 +0100 +++ new/xterm-287/misc.c 2012-11-25 17:05:51.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: misc.c,v 1.627 2012/10/28 23:09:35 tom Exp $ */ +/* $XTermId: misc.c,v 1.631 2012/11/25 16:05:51 tom Exp $ */ /* * Copyright 1999-2011,2012 by Thomas E. Dickey @@ -204,7 +204,7 @@ TRACE(("unselectwindow(%d) flag=%d\n", screen->select, flag)); - if (screen->hide_pointer) { + if (screen->hide_pointer && screen->pointer_mode < pFocused) { screen->hide_pointer = False; xtermDisplayCursor(xw); } @@ -344,6 +344,7 @@ enable = True; break; case pAlways: + case pFocused: break; } } @@ -618,20 +619,28 @@ * mouse pointer back on. */ if (screen->hide_pointer) { - switch (event.xany.type) { - case KeyPress: - case KeyRelease: - case ButtonPress: - case ButtonRelease: - /* also these... */ - case Expose: - case NoExpose: - case PropertyNotify: - case ClientMessage: - break; - default: - xtermShowPointer(xw, True); - break; + if (screen->pointer_mode >= pFocused) { + switch (event.xany.type) { + case MotionNotify: + xtermShowPointer(xw, True); + break; + } + } else { + switch (event.xany.type) { + case KeyPress: + case KeyRelease: + case ButtonPress: + case ButtonRelease: + /* also these... */ + case Expose: + case NoExpose: + case PropertyNotify: + case ClientMessage: + break; + default: + xtermShowPointer(xw, True); + break; + } } } @@ -915,15 +924,22 @@ XtermWidget xw = term; TScreen *screen = TScreenOf(xw); - TRACE(("HandleFocusChange type=%s, mode=%d, detail=%d\n", + TRACE(("HandleFocusChange type=%s, mode=%s, detail=%s\n", visibleEventType(event->type), - event->mode, - event->detail)); + visibleNotifyMode(event->mode), + visibleNotifyDetail(event->detail))); TRACE_FOCUS(xw, event); if (screen->quiet_grab && (event->mode == NotifyGrab || event->mode == NotifyUngrab)) { /* EMPTY */ ; + } else if ((event->type == FocusIn || event->type == FocusOut) + && event->detail == NotifyPointer) { + /* + * NotifyPointer is sent to the window where the pointer is, and is + * in addition to events sent to the old/new focus-windows. + */ + /* EMPTY */ ; } else if (event->type == FocusIn) { setXUrgency(xw, False); @@ -4369,6 +4385,26 @@ return result; } #endif /* OPT_BUILTIN_XPMS */ + +typedef enum { + eHintDefault = 0 /* use the largest builtin-icon */ + ,eHintNone + ,eHintSearch +} ICON_HINT; + +static ICON_HINT +which_icon_hint(void) +{ + ICON_HINT result = eHintDefault; + if (!IsEmpty(resource.icon_hint)) { + if (!x_strcasecmp(resource.icon_hint, "none")) { + result = eHintNone; + } else { + result = eHintSearch; + } + } + return result; +} #endif /* HAVE_LIBXPM */ int @@ -4403,6 +4439,7 @@ Pixmap myIcon = 0; Pixmap myMask = 0; char *workname = 0; + ICON_HINT hint = which_icon_hint(); #if OPT_BUILTIN_XPMS #include <icons/mini.xterm.xpms> #include <icons/filled-xterm.xpms> @@ -4414,7 +4451,7 @@ TRACE(("xtermLoadIcon %p:%s\n", (void *) xw, NonNull(resource.icon_hint))); - if (!IsEmpty(resource.icon_hint)) { + if (hint == eHintSearch) { int state = 0; while (x_find_icon(&workname, &state, ".xpm") != 0) { Pixmap resIcon = 0; @@ -4442,7 +4479,7 @@ * If no external file was found, look for the name in the built-in table. * If that fails, just use the biggest mini-icon. */ - if (myIcon == 0) { + if (myIcon == 0 && hint != eHintNone) { char **data; #if OPT_BUILTIN_XPMS const XPM_DATA *myData = 0; @@ -4474,7 +4511,7 @@ hints = XAllocWMHints(); if (hints) { - hints->flags = IconPixmapHint; + hints->flags |= IconPixmapHint; hints->icon_pixmap = myIcon; if (myMask) { hints->flags |= IconMaskHint; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/package/debian/changelog new/xterm-287/package/debian/changelog --- old/xterm-286/package/debian/changelog 2012-10-25 12:56:37.000000000 +0200 +++ new/xterm-287/package/debian/changelog 2012-11-19 11:36:06.000000000 +0100 @@ -1,3 +1,10 @@ +xterm-dev (287) unstable; urgency=low + + * Miscellaneous fixes. + * Redhat #874327, #875305. + + -- Thomas E. Dickey <dic...@invisible-island.net> Mon, 19 Nov 2012 04:53:39 -0500 + xterm-dev (286) unstable; urgency=low * Redhat #869959 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/package/xterm.spec new/xterm-287/package/xterm.spec --- old/xterm-286/package/xterm.spec 2012-10-25 12:55:22.000000000 +0200 +++ new/xterm-287/package/xterm.spec 2012-11-19 10:53:15.000000000 +0100 @@ -1,7 +1,7 @@ -# $XTermId: xterm.spec,v 1.39 2012/10/25 10:55:22 tom Exp $ +# $XTermId: xterm.spec,v 1.40 2012/11/19 09:53:15 tom Exp $ Summary: X terminal emulator (development version) Name: xterm-dev -Version: 286 +Version: 287 Release: 1 License: X11 Group: User Interface/X diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/ptyx.h new/xterm-287/ptyx.h --- old/xterm-286/ptyx.h 2012-10-29 01:48:16.000000000 +0100 +++ new/xterm-287/ptyx.h 2012-11-25 17:05:51.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: ptyx.h,v 1.757 2012/10/29 00:48:16 tom Exp $ */ +/* $XTermId: ptyx.h,v 1.759 2012/11/25 16:05:51 tom Exp $ */ /* * Copyright 1999-2011,2012 by Thomas E. Dickey @@ -2227,9 +2227,10 @@ } xtermKeyboardType; typedef enum { /* legal values for screen.pointer_mode */ - pNever = 0, - pNoMouse = 1, - pAlways = 2 + pNever = 0 + , pNoMouse = 1 + , pAlways = 2 + , pFocused = 3 } pointerModeTypes; typedef enum { /* legal values for screen.utf8_mode */ @@ -2421,7 +2422,6 @@ unsigned num_lock; /* modifier for Num_Lock */ unsigned alt_mods; /* modifier for Alt_L or Alt_R */ unsigned meta_mods; /* modifier for Meta_L or Meta_R */ - unsigned other_mods; /* conflicting modifiers, e.g., Mode_Switch */ #endif #if OPT_RENDERFONT Boolean render_font; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/trace.c new/xterm-287/trace.c --- old/xterm-286/trace.c 2012-10-14 20:54:05.000000000 +0200 +++ new/xterm-287/trace.c 2012-11-22 21:19:54.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: trace.c,v 1.141 2012/10/14 18:54:05 tom Exp $ */ +/* $XTermId: trace.c,v 1.142 2012/11/22 20:19:54 tom Exp $ */ /* * Copyright 1997-2011,2012 by Thomas E. Dickey @@ -375,6 +375,19 @@ } const char * +visibleNotifyMode(int code) +{ + const char *result = "?"; + switch (code) { + CASETYPE(NotifyNormal); + CASETYPE(NotifyGrab); + CASETYPE(NotifyUngrab); + CASETYPE(NotifyWhileGrabbed); + } + return result; +} + +const char * visibleNotifyDetail(int code) { const char *result = "?"; @@ -585,7 +598,7 @@ { XFocusChangeEvent *event = (XFocusChangeEvent *) ev; TRACE(("\tdetail: %s\n", visibleNotifyDetail(event->detail))); - TRACE(("\tmode: %d\n", event->mode)); + TRACE(("\tmode: %s\n", visibleNotifyMode(event->mode))); TRACE(("\twindow: %#lx\n", event->window)); } break; @@ -594,7 +607,7 @@ { XCrossingEvent *event = (XCrossingEvent *) ev; TRACE(("\tdetail: %s\n", visibleNotifyDetail(event->detail))); - TRACE(("\tmode: %d\n", event->mode)); + TRACE(("\tmode: %s\n", visibleNotifyMode(event->mode))); TRACE(("\twindow: %#lx\n", event->window)); TRACE(("\tfocus: %d\n", event->focus)); TRACE(("\troot: %#lx\n", event->root)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/trace.h new/xterm-287/trace.h --- old/xterm-286/trace.h 2012-06-10 18:53:59.000000000 +0200 +++ new/xterm-287/trace.h 2012-11-22 21:22:15.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: trace.h,v 1.66 2012/06/10 16:53:59 tom Exp $ */ +/* $XTermId: trace.h,v 1.67 2012/11/22 20:22:15 tom Exp $ */ /* * Copyright 1997-2011,2012 by Thomas E. Dickey @@ -61,6 +61,7 @@ extern const char * visibleChrsetName(unsigned /* chrset */); extern const char * visibleEventType (int); extern const char * visibleNotifyDetail(int /* code */); +extern const char * visibleNotifyMode (int /* code */); extern const char * visibleSelectionTarget(Display * /* d */, Atom /* a */); extern const char * visibleXError (int /* code */); @@ -168,4 +169,4 @@ /* *INDENT-ON* */ -#endif /* included_trace_h */ +#endif /* included_trace_h */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/version.h new/xterm-287/version.h --- old/xterm-286/version.h 2012-10-30 00:24:31.000000000 +0100 +++ new/xterm-287/version.h 2012-11-26 02:07:33.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: version.h,v 1.350 2012/10/29 23:24:31 tom Exp $ */ +/* $XTermId: version.h,v 1.352 2012/11/26 01:07:33 tom Exp $ */ /* * Copyright 1998-2011,2012 by Thomas E. Dickey @@ -36,8 +36,8 @@ * version of X to which this version of xterm has been built. The number in * parentheses is my patch number (Thomas E. Dickey). */ -#define XTERM_PATCH 286 -#define XTERM_DATE 2012-10-29 +#define XTERM_PATCH 287 +#define XTERM_DATE 2012-11-25 #ifndef __vendorversion__ #define __vendorversion__ "XTerm" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/xterm.log.html new/xterm-287/xterm.log.html --- old/xterm-286/xterm.log.html 2012-10-30 00:24:00.000000000 +0100 +++ new/xterm-287/xterm.log.html 2012-11-26 01:52:40.000000000 +0100 @@ -31,7 +31,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * ***************************************************************************** - $XTermId: xterm.log.html,v 1.1265 2012/10/29 23:24:00 tom Exp $ + $XTermId: xterm.log.html,v 1.1282 2012/11/26 00:52:40 tom Exp $ --> <html> @@ -70,6 +70,8 @@ the latest version of this file.</p> <ul> + <li><a href="#xterm_287">Patch #287 - 2012/11/25</a></li> + <li><a href="#xterm_286">Patch #286 - 2012/10/29</a></li> <li><a href="#xterm_285">Patch #285 - 2012/10/23</a></li> @@ -855,6 +857,65 @@ <li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li> </ul> + <h1><a name="xterm_287" id="xterm_287">Patch #287 - + 2012/11/25</a></h1> + + <ul> + <li>fix a case where in_put() loop could continue when it has + found an X event rather than the pty, causing the pty-read to + be delayed (patch by Balazs Kezes).</li> + + <li>add option to <code>pointerMode</code> resource and + corresponding control sequences to allow text-cursor to remain + hidden if the pointer leaves/enters the window via accelerator + keys. Ordinary motion within the window restores the pointer + (prompted by patch by Balazs Kezes).</li> + + <li>remove special case of modifiers for the + <code>Mode_switch</code> and <code>XK_ISO_Level3_Shift</code> + from <a href="#xterm_223">patch #223</a>. Verified that the + conflict which this was intended to resolve does not happen for + normal compose- or modeswitch-handling (prompted by patch by + Balazs Kezes, Debian #638694).</li> + + <li>modify the handling of focus-change events to ignore those + whose detail is <code>NotifyPointer</code>, since those are + sent in addition to focus-change events directed to the old/new + windows having focus (prompted by patch by Balazs Kezes to + prevent the urgency-hint from being reset in this + scenario).</li> + + <li>modify description of <code>iconName</code> in manpage to + make it clearer that this resource does not specify the + filename of an icon (discussion with Ian Collier).</li> + + <li>modify <code>iconHint</code> resource to allow suppressing + the built-in icon by setting this to "none" (discussion with + Ian Collier).</li> + + <li>make <code>-iconic</code> option work with the toolbar + configuration.</li> + + <li>correct initialization of window manager hints used to set + the icon-pixmap. That detail from <a href="#xterm_282">patch + #282</a> overwrote state used to control the + <code>-iconic</code> command-line option (report by Ian + Collier).</li> + + <li>fix paste64 feature for the case where the selection comes + from the current terminal. The selection callback can happen + after the reply is partly built, making it necessary to flush + the reply-buffer to keep things in the proper order (report by + Ailin Nemui).</li> + + <li>reject command-line options which are longer than the + options in xterm's table, to avoid mismatches (Redhat + #875305).</li> + + <li>correct attribution for <a href="#xterm_282">patch #282</a> + changes.</li> + </ul> + <h1><a name="xterm_286" id="xterm_286">Patch #286 - 2012/10/29</a></h1> @@ -1003,11 +1064,11 @@ <li>add feature to optionally scroll current page before clearing, controlled by resource setting - <code>cdXtraScroll</code> (prompted by patch by Richard - Wagenblast):</li> + <code>cdXtraScroll</code> (prompted by patch by Balazs + Kezes):</li> <li>integrated patches from Arch Linux forum posting (patches - by Richard Wagenblast): + by Balazs Kezes): <ul> <li>modify reallocation limit of line-data when resizing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xterm-286/xterm.man new/xterm-287/xterm.man --- old/xterm-286/xterm.man 2012-10-26 01:25:26.000000000 +0200 +++ new/xterm-287/xterm.man 2012-11-22 19:42:30.000000000 +0100 @@ -1,5 +1,5 @@ '\" t -.\" $XTermId: xterm.man,v 1.550 2012/10/25 23:25:26 tom Exp $ +.\" $XTermId: xterm.man,v 1.554 2012/11/22 18:42:30 tom Exp $ .\" .\" Copyright 1996-2011,2012 by Thomas E. Dickey .\" @@ -74,7 +74,6 @@ .de NE .fi .ft P -.sp .in -4 .. .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -260,6 +259,7 @@ .NS \fB\*n \-z\fP .NE +.PP If the logic for a particular option such as logging is not compiled into \fI\*n\fP, the help text for that option also is not displayed by the \fB\-help\fP option. @@ -609,7 +609,7 @@ octal or decimal according to whether it begins with "0x", "0" or neither), \fI\*n\fP will reparent its top-level shell widget to that window. This is used to embed \fI\*n\fP within other applications. -.PP +.IP For instance, there are scripts for Tcl/Tk and Gtk which can be used to demonstrate the feature. When using Gtk, there is a limitation of that toolkit which requires @@ -734,6 +734,7 @@ .NS 15 \*n \-e /bin/bash \-l \-c "my command here" .NE +.IP Finally, \fB\-ls\fP is not completely ignored, because \fI\*n\ \-ls\ \-e\fP does write a \fI/etc/wtmp\fP entry (if configured to do so), @@ -1115,11 +1116,13 @@ -S123/45 -Sab34 .NE +.IP Note that \fI\*n\fP does not close any file descriptor which it did not open for its own use. It is possible (though probably not portable) to have an application which passes an open file descriptor down to \fI\*n\fP past the initialization or the \fB\-S\fP option to a process running in the \fI\*n\fP. +.SS OLD OPTIONS .PP The following command line arguments are provided for compatibility with older versions. @@ -1156,6 +1159,7 @@ This option specifies the width in pixels of the border surrounding the window. It is equivalent to \fB\-borderwidth\fP or \fB\-bw\fP. . +.SS X TOOLKIT OPTIONS .PP The following standard X Toolkit command line arguments are commonly used with \fI\*n\fP: @@ -1295,6 +1299,9 @@ Specifies a icon which will be added to the window manager hints. \fI\*n\fP provides no default value. .IP +Set this resource to \*(``none\*('' to omit the hint entirely, +using whatever the window manager may decide. +.IP If the \fBiconHint\fP resource is given (or is set via the \fB\-n\fP option) \fI\*n\fP searches for a pixmap file with that name, in the current directory as well as in __pixmapsdir__. @@ -1329,7 +1336,7 @@ largest of the pixmaps as a default. That is, \*(``mini.\*n\*('' is the same as \*(``mini.\*n_48x48\*(''. .IP -If no \fBiconHint\fP resource is given +If no explicit \fBiconHint\fP resource is given (or if none of the compiled-in names matches), \*n uses \*(``mini.\*n\*('' (which is always compiled-in). .IP @@ -1340,13 +1347,13 @@ The more capable desktop systems allow changing the icon on a per-user basis. .TP 8 .B "iconName (\fPclass\fB IconName)" -Specifies the icon name. +Specifies a label for \fI\*n\fP when iconified. \fI\*n\fP provides no default value; some window managers may assume the application name, e.g., \*(``\*n\*(''. .IP -Setting the \fBiconName\fP resource sets the window title +Setting the \fBiconName\fP resource sets the icon label unless overridden by \fBzIconBeep\fP -or the control sequences which change the window title. +or the control sequences which change the window and icon labels. .TP 8 .B "keyboardType (\fPclass\fB KeyboardType)" Enables one (or none) of the various keyboard-type resources: @@ -1390,7 +1397,7 @@ See .BR mesg (1). The default is \*(``true\*(''. -.TP 9 +.TP 8 .B "menuLocale (\fPclass\fB MenuLocale)" Specify the locale used for character-set computations when loading the popup menus. @@ -1678,6 +1685,7 @@ support active icons, but do not support the extensions which allow \fI\*n\fP to identify the window manager. +.RE .TP 8 .B "allowBoldFonts (\fPclass\fB AllowBoldFonts)" When set to \*(``false\*('', \fI\*n\fP will not use bold fonts. @@ -1970,10 +1978,12 @@ .NS FontPath "/usr/lib/X11/fonts/misc/" .NE +.IP would become .NS FontPath "/usr/lib/X11/fonts/misc/:unscaled" .NE +.IP Depending on your configuration, the font server may have its own configuration file. The same \*(``:unscaled\*('' can be added to its configuration file at the @@ -2617,6 +2627,7 @@ \&FONT=`xfontsel -print` \&test -n "$FONT" && xfd -fn "$FONT" .NE +.IP However (even though \fIxfd\fP accepts a \*(``\fB\-fa\fP\*('' option to denote FreeType fonts), \fIxfontsel\fP has not been similarly extended. @@ -2624,6 +2635,7 @@ .NS fc-list :scalable=true:spacing=mono: family .NE +.IP to find a list of scalable fixed-pitch fonts which may be used for the \fBfaceName\fP resource value. .TP 8 @@ -2695,14 +2707,17 @@ .NS *font: fixed .NE +.IP which are overly broad, affecting both .NS xterm.vt100.font .NE +.IP and .NS xterm.vt100.utf8Fonts.font .NE +.IP which is probably not what you intended. .TP 8 .B "fastScroll (\fPclass\fB FastScroll)" @@ -3054,6 +3069,7 @@ .NS *localeFilter: xterm-filter -p .NE +.IP Alternatively, you may put those parameter within a shell script to execute the converter, and set this resource to point to the shell script. @@ -4322,7 +4338,6 @@ The selected text is highlighted and is saved in the global cut buffer and made the PRIMARY selection when the button is released. Normally (but see the discussion of \fBon2Clicks\fP, etc): -.RS .bP Double-clicking selects by words. .bP @@ -4330,7 +4345,6 @@ selects by lines. .bP Quadruple-clicking goes back to characters, etc. -.RE .PP Multiple-click is determined by the time from button up to button down, so you can change the selection unit in the middle of a selection. @@ -5046,6 +5060,7 @@ u\*n -class __default_class__ .NE .RE +.IP The fourth section allows you to enable or disable special operations which can be controlled by writing escape sequences to the terminal. These are disabled if the SendEvents feature is enabled: @@ -5290,6 +5305,7 @@ /\(** o/ u` u\*(AQ u^ u: y\*(AQ P y: */ 48, 48, 48, 48, 48, 48, 48, 48}; .NE +.IP For example, the string \*(``33:48,37:48,45\-47:48,38:48\*('' indicates that the exclamation mark, percent sign, dash, period, slash, and ampersand characters should be treated the same way as characters and numbers. @@ -5297,13 +5313,15 @@ for cutting and pasting electronic mailing addresses and filenames. . . -.SH ACTIONS +.SH KEY BINDINGS +.PP It is possible to rebind keys (or sequences of keys) to arbitrary strings for input, by changing the \fBtranslations\fP resources for the vt100 or tek4014 widgets. Changing the \fBtranslations\fP resource for events other than key and button events is not expected, and will cause unpredictable behavior. +.SS ACTIONS The following actions are provided for use within the \fIvt100\fP or \fItek4014\fP \fBtranslations\fP resources: @@ -6013,6 +6031,7 @@ .B "gin-press(\fIl/L/m/M/r/R\fP)" This action sends the indicated graphics input code. . +.SS DEFAULT KEY BINDINGS .PP The default bindings in the VT102 window use the SELECT token, which is set by the \fBselectToClipboard\fP resource: @@ -6062,6 +6081,7 @@ <BtnUp>:select-end(SELECT, CUT_BUFFER0) \\n\\\& <BtnDown>:ignore() .NE +.PP The default bindings for the scrollbar widget are separate from the VT100 widget: .NS @@ -6074,6 +6094,7 @@ <Btn2Motion>: MoveThumb() NotifyThumb() \\n\\\& <BtnUp>: NotifyScroll(Proportional) EndScroll() .NE +.PP The default bindings in the Tektronix window are: .NS .ta 2.5i @@ -6094,6 +6115,7 @@ Shift ~Meta<Btn3Down>: gin-press(R) \\n\\\& ~Meta<Btn3Down>: gin-press(r) .NE +.PP Here is an example which uses shifted select/paste to copy to the clipboard, and unshifted select/paste for the primary selection. In each case, a (different) cut buffer is @@ -6112,6 +6134,7 @@ ~Shift<BtnUp>: select-end(PRIMARY, CUT_BUFFER0) \\n\\\& Shift<BtnUp>: select-end(CLIPBOARD, CUT_BUFFER1) .NE +.PP Below is a sample of how the \fBkeymap()\fP action is used to add special keys for entering commonly-typed works: .NS @@ -6124,6 +6147,7 @@ <Key>F19: string("continue") string(0x0d) \\n\\\& <Key>F20: string("print ") insert-selection(PRIMARY, CUT_BUFFER0) .NE +.PP Some people prefer using the left pointer button for dragging the scrollbar thumb. That can be setup by altering the translations resource, e.g., ++++++ xterm.keyring ++++++ pub 1024D/F7E48EDB 2004-01-05 uid Thomas Dickey <dic...@invisible-island.net> sub 1024g/E4374AE1 2004-01-05 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.19 (GNU/Linux) mQGiBD/4r7IRBADFuacEqf9fye+NQSm7xjNP705aq75VrUd2hJyPmSiFUIyQEfc4 4GQXGdFg+/Apq4iq/50/8pR8YXOKwP5OE69emEp7IxjST41orGUk5ZwcnlSkaruN WLTe/lN3e0oOIVbYig1lUbU5IxZu03KfNg2DZ9JiZdNBlzlqx1+oFlWFLwCg3awg EfOUfbe4kVxNrsnxaCJYJ38EAMRVyUOfhkm9l0YuiC4ebOHrdmn9jFVW+XZPZDeb 8DcyTBNrgvVTnEmrNzVJgOyZIW+uraBVitak+No1kwXvC/i0kZEzYqfG87EdJSfe OV7axIRisiTrcbZdRJ3CBDtGvLqJ9OuGFHPQmntnZfhiwJTR79hepndEQYyV5eQb oQ+aA/0bI+/odyRDefc9HF1EhOcz8E76QP+VlvUfIDUJrmwv/3gLZ968HACOe0DE +bcUockLJxoNwQFwCQPjm5S2+Ba2uY4hRhOA+MResZWlPouoosay2ADfiU7pdBCx nbcLAuezgnZg4jcXvLl1QiAihxaEI2jqgZBnnierWzqRzRZM4LQrVGhvbWFzIERp Y2tleSA8ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0PoheBBMRAgAeBQI/+K+y AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEHAjU+D35I7bejEAnRYLqlswwk+F +pWcppXLnsskhTfSAKCrg23hTwzaaW9mlbmDavid+QQu3bkBDQQ/+K+0EAQAjTl1 EeUt5EUq8tiGBq+KtFo3TxIdJKBtVFQ4btETdF23dkZ1o1642GmF7JJgn6PKUcJD UlHhUO4IEcpHABAiU4HweoWh8yT/yaA9AXqRKcJpMQ5bEGoooHBIg0Uh8ahG6Q1c HzgsGOaOK9YzFSvSIRXryMlrh1oITzvwEkXRfOcAAwcD/iRaNtGYaS05FwaaVvm0 Eexhhw2JzSaRP6PY3r/BGmgPVG9Uk9huk+Yk/pdW9Pa3KRj37ANK2svfwHx9A077 Ma9GoupZ/rjP01WO0ur8tzC7KsqCep9m33K9kdAeJZ0Ud+AwsnAEy/Q1XZin/jUU 5L1lzko010LXY9CqdrmCXhaqiEkEGBECAAkFAj/4r7QCGwwACgkQcCNT4Pfkjtuu ngCg2es41JEYaarCcT+gFpyM0WCqAU8An3L0pkO4wtZ8SejpHa7WSR9M54xd =VWbi -----END PGP PUBLIC KEY BLOCK----- -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org