GNU bug report logs - #37530
26.1; Tack characters translated incorrectly

Previous Next

Package: emacs;

Reported by: Axel Svensson <mail <at> axelsvensson.com>

Date: Thu, 26 Sep 2019 21:33:02 UTC

Severity: normal

Merged with 40240

Found in versions 26.1, 26.3

Fixed in version 27.1

Done: Robert Pluim <rpluim <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: mail <at> axelsvensson.com, 37530 <at> debbugs.gnu.org
Subject: bug#37530: 26.1; Tack characters translated incorrectly
Date: Fri, 27 Sep 2019 16:44:52 +0300
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Cc: Axel Svensson <mail <at> axelsvensson.com>,  37530 <at> debbugs.gnu.org
> Date: Fri, 27 Sep 2019 15:32:30 +0200
> 
> The following patch updates out map with the data from the .h file:
> 
> (setq map
>       (let ((map nil))
> 	(with-temp-buffer
> 	  (insert-file-contents "/usr/include/xkbcommon/xkbcommon-keysyms.h")
> 	  (while (re-search-forward "#define +XKB_KEY.*0x\\([a-fA-Z0-9]+\\).*U\\+\\([a-fA-Z0-9]+\\)" nil t)
> 	    (push (cons (string-to-number (match-string 1) 16)
> 			(string-to-number (match-string 2) 16))
> 		  map)))
> 	(nreverse map)))
> 
> Does this look OK to everybody?

Sorry, this is not enough.  We cannot blindly use some alternative
source, especially as the other source was determined to be
inaccurate.  How do we know that header file is accurate?  (And what
is the license of that file, btw?)

I'd like someone to do the research and find out why Markus Kuhn's
suggestions were changed.  I'd like also to state the source of the
data and the information about the change reason(s) in x-win.el, where
we have the mapping.

> In addition, there's a huge number of keysyms in that file that we do
> not do mappings to characters for.  Hm...  but those are all over
> #x1000174, so I guess they're mapped to Unicode code points directly?
> 
> 	  /* Keysyms directly mapped to Unicode characters.  */
> 	  if (keysym >= 0x01000000 && keysym <= 0x0110FFFF)

To answer the question, one needs to compare the keysyms with the
corresponding codepoints.  If they are identical, then the mapping is
trivial.

Thanks.




This bug report was last modified 5 years and 141 days ago.

Previous Next


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