Mail Archives: cygwin/2007/08/27/22:04:01
Lapo Luchini wrote:
> Just a quick comment of the new package...
>
> a) I guess the font system has changed, as it now both looks nicer and
> kindly ignore my previously working .Xsession line
Yeesh. you beat me to the announcement...
Short version: there is now an /etc/X11/app-defaults/Rxvt file. You can
edit in-place for persistent global defaults, create a ~/.Xdefaults file
for per-user overrides -- and command line options always take
precedence. I'm not sure why .Xsession ever worked: rxvt, even in X11
mode, never asks the Xserver for resources; it parses the ~/.X* files
itself.
> b) alt-backspace deletes TWO words instead of one in both bash and zsh
Confirmed -- and windows-only (in X11 mode, I don't see this behavior).
This is probably related to Corinna's patch that added some additional
Alt- related keyevents to the main handling loop in the "W11" library:
case WM_SYSKEYDOWN: /* some alt-keys go here */
maybe this causes the Alt-BS to get sent to the application twice?
However, it doesn't happen on ALL alt-key combos. Adding the following
"\e\e[D":backward-word
"\e\e[C":forward-word
to my .inputrc, and I was able to get word skip behavior with
alt-left/alt-right. So I'm reluctant to entirely remove Corinna's
patch, because this wasn't possible before.
However, I think I found the problem. Most of the time, W11 passes
virtualkey events to the w32api TranslateMessate() -- which in turn
inserts the translated char BACK into the message queue.
However, certain key events need to bypass this:
shift-KP-plus and shift-KP-minus: are supposed to be intercepted
by rxvt and used to increase/decrease the font size. This
doesn't really work.
backspace -- regardless of shift/alt/ctrl -- is handled by rxvt
itself, and (possible) translated to ^? or ^H depending on
rxvt's settings.
This bypassing is handled here:
static void
doTranslateMessage(MSG *m)
{
if ((m->message == WM_KEYDOWN) &&
((m->wParam == VK_BACK) ||
(((m->wParam == VK_ADD) || (m->wParam == VK_SUBTRACT)) &&
(GetKeyState(VK_SHIFT) & 0x8000))))
return;
TranslateMessage(m);
}
With Corinna's patch, we now hit this function with WM_SYSKEYDOWN and
not just WM_KEYDOWN. The following change seems to fix it:
static void
doTranslateMessage(MSG *m)
{
if (((m->message == WM_KEYDOWN) || (m->message == WM_SYSKEYDOWN)) &&
((m->wParam == VK_BACK) ||
(((m->wParam == VK_ADD) || (m->wParam == VK_SUBTRACT)) &&
(GetKeyState(VK_SHIFT) & 0x8000))))
return;
TranslateMessage(m);
}
Look for rxvt-20050409-7 soon, and thanks for the report.
--
Chuck
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -