GNU bug report logs - #3792
23.1.50; other-window misbehaving with C-tab keybinding

Previous Next

Packages: emacs, ns;

Reported by: Ivan Andrus <IAndrus <at> omniture.com>

Date: Wed, 8 Jul 2009 19:55:05 UTC

Severity: normal

Done: Adrian Robert <adrian.b.robert <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 3792 in the body.
You can then email your comments to 3792 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3792; Package emacs. (Wed, 08 Jul 2009 19:55:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ivan Andrus <IAndrus <at> omniture.com>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Wed, 08 Jul 2009 19:55:05 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Ivan Andrus <IAndrus <at> omniture.com>
To: "emacs-pretest-bug <at> gnu.org" <emacs-pretest-bug <at> gnu.org>
Subject: 23.1.50; other-window misbehaving with C-tab keybinding
Date: Wed, 8 Jul 2009 13:29:45 -0600
I only see this problem in the NextStep (Cocoa actually) version (i.e. not
X-windows) that I build from CVS.
I did the following:

nextstep/Emacs.app/Contents/MacOS/Emacs -q

(global-set-key [(control tab)] 'other-window)
C-x 2 ; to create a new window
C-tab ; switches to the other window, then back when I release tab.  If I
release control first then it does not change back to the other window.  It
should not switch back to the other window.



In GNU Emacs 23.1.50.2 (i386-apple-darwin9.7.0, NS apple-appkit-949.46)
 of 2009-07-06 on ivan-andruss-macbook-pro.local
Windowing system distributor `Apple', version 10.3.949
configured using `configure  '--with-ns''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: en_US.UTF-8
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_MONETARY: en_US.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LC_TIME: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<down-mouse-1> <mouse-1> <help-echo> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1>
s-w <down-mouse-1> <mouse-1> s-x C-g C-x b <return>
<down-mouse-1> <mouse-1> d <backspace> s-( s-( ( c
l <backspace> <backspace> g l o b a l - s e t - k e
y SPC " C - T a b " SPC ' o t h e r - w i n d o w )
C-j q <up> <right> <right> <right> <right> <right>
<right> <right> <right> <right> <right> <right> <right>
<right> <right> <right> <right> C-y C-d C-d C-d C-d
C-d C-d C-d C-e C-x C-e C-x 2 <C-tab> <C-tab> <C-tab>
<C-tab> <C-tab> <C-tab> <C-tab> <C-tab> <C-tab> <C-tab>
<C-tab> <C-tab> <C-tab> <C-tab> <down-mouse-1> <mouse-1>
<help-echo> <down-mouse-1> <mouse-1> s-x r e l <backspace>
<backspace> C-/ C-/ C-/ C-/ C-/ SPC C-/ C-/ <down>
<down> <return> <return> <return> <return> <escape>
x r e p o <tab> r <tab> <return>

Recent messages:
call-interactively: Attempt to delete the sole visible or iconified frame
kill-region: The mark is not set now, so there is no region
Quit
Entering debugger...
Back to top level.
Mark set
other-window
Undo! [6 times]
Redo!
Making completion list...





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3792; Package emacs. (Fri, 10 Jul 2009 15:20:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ivan Andrus <IAndrus <at> omniture.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Fri, 10 Jul 2009 15:20:05 GMT) Full text and rfc822 format available.

Message #10 received at 3792 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Ivan Andrus <IAndrus <at> omniture.com>
To: "3792 <at> debbugs.gnu.org" <3792 <at> debbugs.gnu.org>
Subject: #3792 - 23.1.50; other-window misbehaving with C-tab keybinding -
 Emacs bug report logs
Date: Fri, 10 Jul 2009 09:13:55 -0600
[Message part 1 (text/plain, inline)]
I noticed that view-lossage shows two <C-tab> for every time I press it.  In nsterm.m it specifically checks for control-tab and references
http://osdir.com/ml/editors.vim.mac/2007-10/msg00141.html
Which in turn references
https://bugzilla.mozilla.org/show_bug.cgi?id=374076#c12

Which makes me think that in Mac OS 10.4 the control-tab keyDown event isn't sent, but in 10.5 it is.  Or at the very least in the latest version of 10.5 (I'm running 10.5.7) it sends a keyDown event.

I have implemented what I think is a very simple fix (though it is probably not ideal).  It sets a flag if it recieves a C-tag keyDown, and if so does not send the corresponging keyUp.  I like this because then it works on keyDown like everything else if possible, but if not it should work on keyUp.  I don't have the facilities to test the latter assumption.

Also the patch almost certainly is less efficient than it could be.  For example it sets flags and code twice (I believe) to the same thing, but I'm not really familiar enough with the code to want to risk changing that (and it's only for the Cocoa port as well).  I believe it should be correct at least.

-Ivan Andrus
[Message part 2 (text/html, inline)]
[emacs.patch (application/octet-stream, attachment)]

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3792; Package emacs. (Sat, 11 Jul 2009 07:50:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to YAMAMOTO Mitsuharu <mituharu <at> math.s.chiba-u.ac.jp>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 11 Jul 2009 07:50:04 GMT) Full text and rfc822 format available.

Message #15 received at 3792 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: YAMAMOTO Mitsuharu <mituharu <at> math.s.chiba-u.ac.jp>
To: Ivan Andrus <IAndrus <at> omniture.com>, 3792 <at> debbugs.gnu.org
Subject: Re: bug#3792: 23.1.50; other-window misbehaving with C-tab keybinding
Date: Sat, 11 Jul 2009 16:44:47 +0900
>>>>> On Fri, 10 Jul 2009 09:13:55 -0600, Ivan Andrus <IAndrus <at> omniture.com> said:

> I noticed that view-lossage shows two <C-tab> for every time I press
> it.  In nsterm.m it specifically checks for control-tab and
> references
> http://osdir.com/ml/editors.vim.mac/2007-10/msg00141.html
> Which in turn references
> https://bugzilla.mozilla.org/show_bug.cgi?id=374076#c12

> Which makes me think that in Mac OS 10.4 the control-tab keyDown
> event isn't sent, but in 10.5 it is.  Or at the very least in the
> latest version of 10.5 (I'm running 10.5.7) it sends a keyDown
> event.

FWIW, the latest release of my Carbon+AppKit port (*), which also uses
Cocoa for GUI stuff, has the problem that it doesn't recognize
Control-Tab on Mac OS X 10.4 and earlier.  And I'm planning to add the
following change to the next release:

*: http://lists.gnu.org/archive/html/emacs-devel/2009-06/msg00532.html

*** ../../emacs-22.3-appkit-1.4/src/macappkit.m	2009-06-27 13:49:25.000000000 +0900
--- macappkit.m	2009-07-10 10:54:02.000000000 +0900
*************** static EventRef peek_if_next_event_activ
*** 747,753 ****
  	if (!(mac_mapped_modifiers (modifiers, [event keyCode])
  	      & ~(mac_pass_command_to_system ? cmdKey : 0)
  	      & ~(mac_pass_control_to_system ? controlKey : 0))
! 	    && ([NSApp keyWindow] || (flags & NSCommandKeyMask)))
  	  goto OTHER;
  
  	characters = [event characters];
--- 747,764 ----
  	if (!(mac_mapped_modifiers (modifiers, [event keyCode])
  	      & ~(mac_pass_command_to_system ? cmdKey : 0)
  	      & ~(mac_pass_control_to_system ? controlKey : 0))
! 	    && ([NSApp keyWindow] || (flags & NSCommandKeyMask))
! #if MAC_OS_X_VERSION_MIN_REQUIRED < 1050
! 	    /* This is a workaround for the problem that Control-Tab
! 	       is not recognized on Mac OS X 10.4 and earlier.  */
! 	    && !(floor (NSAppKitVersionNumber) <= NSAppKitVersionNumber10_4
! 		 && [[[NSApp keyWindow] firstResponder]
! 		      isMemberOfClass:[EmacsView class]]
! 		 && [event keyCode] == 0x30 /* kVK_Tab */
! 		 && ((flags & (NSControlKeyMask | NSCommandKeyMask))
! 		     == NSControlKeyMask))
! #endif
! 	    )
  	  goto OTHER;
  
  	characters = [event characters];

On Mac OS X 10.4 and earlier, the first responder object doesn't
receive the keyDown: message for Control-Tab.  But still NSApplication
and NSWindow objects can detect such NSKeyDown events via sendEvent:.

Processing key events at the timing of keyUp: gives a strange feeling
to the user because the command bound to the key is executed much
later than expected and auto-repeat does not work.

				     YAMAMOTO Mitsuharu
				mituharu <at> math.s.chiba-u.ac.jp



Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3792; Package emacs. (Sat, 11 Jul 2009 18:00:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Harald Maier <harald <at> maierh.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Sat, 11 Jul 2009 18:00:04 GMT) Full text and rfc822 format available.

Message #20 received at 3792 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Harald Maier <harald <at> maierh.de>
To: Ivan Andrus <IAndrus <at> omniture.com>
Cc: 3792 <at> debbugs.gnu.org
Subject: Re: bug#3792: #3792 - 23.1.50; other-window misbehaving with C-tab keybinding - Emacs bug report logs
Date: Sat, 11 Jul 2009 19:55:54 +0200
Ivan Andrus <IAndrus <at> omniture.com> writes:

> I noticed that view-lossage shows two <C-tab> for every time I press
> it.  In nsterm.m it specifically checks for control-tab and references
> http://osdir.com/ml/editors.vim.mac/2007-10/msg00141.html Which in
> turn references
> https://bugzilla.mozilla.org/show_bug.cgi?id=374076#c12
>
> Which makes me think that in Mac OS 10.4 the control-tab keyDown event
> isn't sent, but in 10.5 it is.  Or at the very least in the latest
> version of 10.5 (I'm running 10.5.7) it sends a keyDown event.
>
> I have implemented what I think is a very simple fix (though it is
> probably not ideal).  It sets a flag if it recieves a C-tag keyDown,
> and if so does not send the corresponging keyUp.  I like this because
> then it works on keyDown like everything else if possible, but if not
> it should work on keyUp.  I don't have the facilities to test the
> latter assumption.
>
> Also the patch almost certainly is less efficient than it could be.
> For example it sets flags and code twice (I believe) to the same
> thing, but I'm not really familiar enough with the code to want to
> risk changing that (and it's only for the Cocoa port as well).  I
> believe it should be correct at least.
>
> -Ivan Andrus

Works fine for me. Thanks!

Maybe you should resend the Patch. In line 3 at the end the two final
'@@' characters are missing.

IMHO, that workaround should be added to 23.1. In 2009-02-20 I too
reported the bug as #2402.

Harald



bug reassigned from package `emacs' to `emacs,ns'. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> emacsbugs.donarmstrong.com. (Sat, 11 Jul 2009 19:50:04 GMT) Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>, owner <at> emacsbugs.donarmstrong.com:
bug#3792; Package emacs,ns. (Mon, 13 Jul 2009 17:25:10 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ivan Andrus <IAndrus <at> omniture.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>, owner <at> emacsbugs.donarmstrong.com. (Mon, 13 Jul 2009 17:25:10 GMT) Full text and rfc822 format available.

Message #27 received at 3792 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Ivan Andrus <IAndrus <at> omniture.com>
To: "3792 <at> debbugs.gnu.org" <3792 <at> debbugs.gnu.org>
Subject: #3792 - 23.1.50; other-window misbehaving with C-tab keybinding -
 Emacs bug report logs
Date: Mon, 13 Jul 2009 11:17:45 -0600
[Message part 1 (text/plain, inline)]
Resending patch (properly formatted this time I hope).
[Message part 2 (text/html, inline)]
[emacs.patch (application/octet-stream, attachment)]

Reply sent to Adrian Robert <adrian.b.robert <at> gmail.com>:
You have taken responsibility. (Thu, 23 Jul 2009 12:00:04 GMT) Full text and rfc822 format available.

Notification sent to Ivan Andrus <IAndrus <at> omniture.com>:
bug acknowledged by developer. (Thu, 23 Jul 2009 12:00:04 GMT) Full text and rfc822 format available.

Message #32 received at 3792-done <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Adrian Robert <adrian.b.robert <at> gmail.com>
To: 3792-done <at> debbugs.gnu.org
Cc: Ivan Andrus <IAndrus <at> omniture.com>
Subject: Re: 23.1.50; other-window misbehaving with C-tab keybinding
Date: Thu, 23 Jul 2009 07:53:57 -0400
I checked in a fix to trunk and branch to simply not do the keyUp- 
detection on Leopard and above.  Tested on Tiger and Leopard.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> emacsbugs.donarmstrong.com. (Thu, 20 Aug 2009 14:24:12 GMT) Full text and rfc822 format available.

This bug report was last modified 15 years and 309 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.