From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: storm@cua.dk (Kim F. Storm) Newsgroups: gmane.emacs.devel Subject: Re: [Dan Nicolaescu] S-arrow_keys not working in cua-selection-mode anymore Date: Wed, 14 Nov 2007 12:45:29 +0100 Message-ID: <87d4uduk2u.fsf@kfs-lx.testafd.dk> References: <87fxzab4if.fsf@kfs-lx.testafd.dk> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1195040755 6521 80.91.229.12 (14 Nov 2007 11:45:55 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 14 Nov 2007 11:45:55 +0000 (UTC) Cc: Dan Nicolaescu , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Nov 14 12:45:57 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IsGgr-0007AV-EB for ged-emacs-devel@m.gmane.org; Wed, 14 Nov 2007 12:45:53 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IsGgf-00022M-1G for ged-emacs-devel@m.gmane.org; Wed, 14 Nov 2007 06:45:41 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IsGgc-000224-E0 for emacs-devel@gnu.org; Wed, 14 Nov 2007 06:45:38 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IsGgb-00021s-Si for emacs-devel@gnu.org; Wed, 14 Nov 2007 06:45:38 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IsGgb-00021i-Jx for emacs-devel@gnu.org; Wed, 14 Nov 2007 06:45:37 -0500 Original-Received: from mail-relay.sonofon.dk ([212.88.64.25]) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1IsGgb-0002lJ-4G for emacs-devel@gnu.org; Wed, 14 Nov 2007 06:45:37 -0500 Original-Received: (qmail 91853 invoked from network); 14 Nov 2007 11:45:35 -0000 Original-Received: from unknown (HELO kfs-lx.testafd.dk.cua.dk) (213.83.150.2) by 0 with SMTP; 14 Nov 2007 11:45:35 -0000 In-Reply-To: (Stefan Monnier's message of "Tue\, 13 Nov 2007 10\:20\:25 -0500") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) X-detected-kernel: by monty-python.gnu.org: FreeBSD 4.6-4.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:83185 Archived-At: Stefan Monnier writes: >> CUA normally works by looking for a shift modifier on the event, >> but it has special code to handle a non-windowing system: > >> ((if window-system >> (memq 'shift (event-modifiers >> (aref (this-single-command-raw-keys) 0))) >> (or >> (memq 'shift (event-modifiers >> (aref (this-single-command-keys) 0))) >> ;; See if raw escape sequence maps to a shifted event, e.g. S-up or C-S-home. >> (and (boundp 'local-function-key-map) >> local-function-key-map >> (let ((ev (lookup-key local-function-key-map >> (this-single-command-raw-keys)))) >> (and (vector ev) >> (symbolp (setq ev (aref ev 0))) >> (string-match "S-" (symbol-name ev))))))) > > > Oh, indeed, sorry for not catching this. It should use input-decode-map > rather than local-function-key-map. Ok. Could someone please make the change (trunk only!!). Thanks! > It may be even better to *also* > check local-function-key-map (after input-decode-map), but it shouldn't > be necessary. Huh? It may be better ... but not necessary ?? > This said, I'm not quite sure I understand enough of the above code: > why does it need to behave differently depending on window-system? The problem is to get around the implicit translation of "Shift-XXX" to "XXX" if "Shift-XXX" has no specific binding. On a window-system, this-single-command-raw-keys returns the untranslated keys, so I can use it to check directly if user pressed a shifted key. The problem is (or was??) how to test for a shifted function key on a non-window system. Suppose S-up sends "ESC A B" in xterm. Then this-single-command-raw-keys returns [27 65 66]. This is not useful. And this-single-command-keys returns [up]. This is not useful either. So the only way is to go back to the raw key sequence and look it up in the function key translation map to see if the result is a shifted key. If you have a better way of checking this, I'm listening :-) -- Kim F. Storm http://www.cua.dk