Mercurial > hg > xemacs-beta
diff lisp/x-win-xfree86.el @ 5639:1d1f385c9149
Call XKeysymToString() much less, it leaks.
src/ChangeLog addition:
2012-01-08 Aidan Kehoe <kehoea@parhasard.net>
* device-x.c:
* device-x.c (syms_of_device_x):
Move #'x-keysym-on-keyboard{,-sans-modifiers}-p to Lisp, the hash
table no longer stores the X keysyms, so we need to manipulate any
strings we have been handed.
* event-Xt.c (x_has_keysym):
Don't call XKeysymToString() here, it leaks; trust
x_keysym_to_emacs_keysym() instead.
* event-Xt.c (x_keysym_to_emacs_keysym):
No longer leak when looking up the strings for keysyms of the form
UABCD.
lisp/ChangeLog addition:
2012-01-08 Aidan Kehoe <kehoea@parhasard.net>
* x-init.el:
* x-init.el (pseudo-canonicalize-keysym): New.
* x-init.el: Move #'x-keysym-on-keyboard-sans-modifiers-p,
#'x-keysym-on-keyboard-p here from device-x.c, some string
manipulation it now needs to do is far easier in Lisp.
* x-win-xfree86.el:
* x-win-xfree86.el (x-win-init-xfree86):
No longer call #'x-keysym-on-keyboard{,-sans-modifiers}-p,
implement it ourselves cheaply.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 08 Jan 2012 20:41:37 +0000 |
parents | 8861440b1aa4 |
children |
line wrap: on
line diff
--- a/lisp/x-win-xfree86.el Fri Jan 06 16:35:07 2012 +0000 +++ b/lisp/x-win-xfree86.el Sun Jan 08 20:41:37 2012 +0000 @@ -39,9 +39,6 @@ ;;; Code: -(globally-declare-fboundp - '(x-keysym-on-keyboard-p x-keysym-on-keyboard-sans-modifiers-p)) - (defun x-win-init-xfree86 (device) ;; We know this keyboard is an XFree86 keyboard. As such, we can predict @@ -74,9 +71,6 @@ nil nil nil nil nil ?/ nil nil nil nil nil nil nil nil nil nil nil nil nil ?=]) - (when (x-keysym-on-keyboard-p 'iso-left-tab device) - (define-key function-key-map 'iso-left-tab [(shift tab)])) - (loop for (key sane-key) in '((f13 f1) (f14 f2) @@ -94,13 +88,17 @@ with function-key-map = (symbol-value-in-console 'function-key-map (device-console device) function-key-map) + with x-keysym-hash-table = (x-keysym-hash-table device) + + initially + (when (gethash 'iso-left-tab x-keysym-hash-table) + (define-key function-key-map 'iso-left-tab [(shift tab)])) do - (when (and (x-keysym-on-keyboard-p key device) - (not (x-keysym-on-keyboard-sans-modifiers-p key device))) + (when (not (memq (gethash key x-keysym-hash-table) '(nil sans-modifiers))) ;; define also the control, meta, and meta-control versions. (loop for mods in '(() (control) (meta) (meta control)) do - (define-key function-key-map `[(,@mods ,key)] `[(shift ,@mods ,sane-key)]) - )))) + (define-key function-key-map `[(,@mods ,key)] + `[(shift ,@mods ,sane-key)]))))) ;;; x-win-xfree86.el ends here