annotate src/event-xlike-inc.c @ 4792:95b04754ea8c

Make #'equalp more compatible with CL; add a compiler macro, test & doc it. lisp/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (cl-string-vector-equalp) (cl-bit-vector-vector-equalp, cl-vector-array-equalp) (cl-hash-table-contents-equalp): New functions, to implement equalp treating arrays with identical contents as equivalent, as specified by Common Lisp. (equalp): Revise this function to implement array equivalence, and the hash-table equalp behaviour specified by CL. * cl-macs.el (equalp): Add a compiler macro for this function, used when one of the arguments is constant, and as such, its type is known at compile time. man/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Equality Predicates): Document #'equalp here, as well as #'equal and #'eq. tests/ChangeLog addition: 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test much of the functionality of equalp; add a pointer to Paul Dietz' ANSI test suite for this function, converted to Emacs Lisp. Not including the tests themselves in XEmacs because who owns the copyright on the files is unclear and the GCL people didn't respond to my queries.
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 31 Dec 2009 15:09:41 +0000
parents 63c25d1cbecf
children b3ce27ca7647
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
1 /* Shared event code between X and GTK -- include file.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
2 Copyright (C) 1991-5, 1997 Free Software Foundation, Inc.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
3 Copyright (C) 1995 Sun Microsystems, Inc.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
4 Copyright (C) 1996, 2001, 2002, 2003 Ben Wing.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
5
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
6 This file is part of XEmacs.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
7
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
8 XEmacs is free software; you can redistribute it and/or modify it
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
11 later version.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
12
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
16 for more details.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
17
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
19 along with XEmacs; see the file COPYING. If not, write to
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
21 Boston, MA 02111-1307, USA. */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
22
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
23 /* Synched up with: Not in FSF. */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
24
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
25 /* For some code it's reasonable to have only one copy and conditionalize
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
26 at run-time. For other code it isn't. #### Perhaps all code should be
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
27 included here, not in event-xlike.c. However, event-xlike.c is always
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
28 X-specific, whereas the following code isn't, in the GTK case. */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
29
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
30 static int
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
31 #ifdef THIS_IS_GTK
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
32 emacs_gtk_event_pending_p (int how_many)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
33 #else
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
34 emacs_Xt_event_pending_p (int how_many)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
35 #endif
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
36 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
37 Lisp_Object event;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
38 int tick_count_val;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
39
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
40 /* If `how_many' is 0, then this function returns whether there are any
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
41 X, timeout, or fd events pending (that is, whether
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
42 emacs_Xt_next_event() would return immediately without blocking).
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
43
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
44 If `how_many' is > 0, then this function returns whether there are
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
45 that many *user generated* events available (keyboard, mouse click,
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
46 etc.). This also implies that emacs_Xt_next_event() would not block.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
47 */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
48
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
49 /* This function used to simply check whether there were any X events (or
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
50 if user_p was 1, it iterated over all the pending X events using
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
51 XCheckIfEvent(), looking for keystrokes and button events). That
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
52 worked in the old cheesoid event loop, which didn't go through
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
53 XtAppDispatchEvent(), but it doesn't work any more -- X events may not
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
54 result in anything. For example, a button press in a blank part of
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
55 the menubar appears as an X event but will not result in any Emacs
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
56 events (a button press that activates the menubar results in an Emacs
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
57 event through the stop_next_event mechanism).
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
58
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
59 The only accurate way of determining whether these X events translate
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
60 into Emacs events is to go ahead and dispatch them until there's
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
61 something on the dispatch queue. */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
62
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
63 if (!how_many)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
64 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
65 /* We're being asked for *ALL* events, not just user events. */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
66
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
67 /* (1) Any pending events in the dispatch queue? */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
68 if (!NILP (dispatch_event_queue))
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
69 return 1;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
70
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
71 /* (2) Any TTY or process input available?
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
72
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
73 Note that formerly we just checked the value of XtAppPending() to
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
74 determine if there was file-desc input. This doesn't work any
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
75 more with the signal_event_pipe; XtAppPending() will says "yes" in
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
76 this case but there isn't really any input. So instead we keep
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
77 track of the file descriptors, and call select() ourselves.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
78 Another way of fixing this problem is for the signal_event_pipe to
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
79 generate actual input in the form of an identity eval event or
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
80 something. (#### maybe this actually happens?) */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
81
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
82 if (poll_fds_for_input (non_fake_input_wait_mask))
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
83 return 1;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
84
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
85 #ifndef THIS_IS_GTK
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
86 /* (3) Any timeout input available? */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
87 if (XtAppPending (Xt_app_con) & XtIMTimer)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
88 return 1;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
89 #else
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
90 /* #### Is there any way to do this in Gtk? I don't think there
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
91 is a 'peek' for events */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
92 #endif
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
93 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
94 else
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
95 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
96 /* HOW_MANY > 0 */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
97 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
98 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
99 if (command_event_p (event))
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
100 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
101 how_many--;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
102 if (how_many <= 0)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
103 return 1;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
104 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
105 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
106 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
107
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
108 /* XtAppPending() can be super-slow, esp. over a network connection.
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
109 Quantify results have indicated that in some cases the call to
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
110 detect_input_pending() completely dominates the running time of
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
111 redisplay(). Fortunately, in a SIGIO world we can more quickly
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
112 determine whether there are any X events: if an event has happened
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
113 since the last time we checked, then a SIGIO will have happened. On a
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
114 machine with broken SIGIO, we'll still be in an OK state --
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
115 quit_check_signal_tick_count will get ticked at least every 1/4
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
116 second, so we'll be no more than that much behind reality. (In general
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
117 it's OK if we erroneously report no input pending when input is
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
118 actually pending() -- preemption is just a bit less efficient, that's
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
119 all. It's bad bad bad if you err the other way -- you've promised
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
120 that `next-event' won't block but it actually will, and some action
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
121 might get delayed until the next time you hit a key.)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
122 */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
123
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
124 if (!in_modal_loop)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
125 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
126 /* quit_check_signal_tick_count is volatile so try to avoid race
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
127 conditions by using a temporary variable */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
128 tick_count_val = quit_check_signal_tick_count;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
129 if (last_quit_check_signal_tick_count != tick_count_val
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
130 #if !defined (THIS_IS_GTK) && (!defined (SIGIO) || defined (CYGWIN))
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
131 || (XtIMXEvent & XtAppPending (Xt_app_con))
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
132 #endif
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
133 )
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
134 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
135 last_quit_check_signal_tick_count = tick_count_val;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
136
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
137 /* We need to drain the entire queue now -- if we only drain part of
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
138 it, we may later on end up with events actually pending but
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
139 detect_input_pending() returning false because there wasn't
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
140 another SIGIO. */
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
141 event_stream_drain_queue ();
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
142
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
143 if (!how_many)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
144 return !NILP (dispatch_event_queue);
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
145
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
146 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
147 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
148 if (command_event_p (event))
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
149 {
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
150 how_many--;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
151 if (how_many <= 0)
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
152 return 1;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
153 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
154 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
155
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
156 return 0;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
157 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
158 }
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
159
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
160 return 0;
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents:
diff changeset
161 }
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
162
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
163 #if defined(THIS_IS_X) || !defined(__GDK_KEYS_H__)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
164
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
165 /* Use an appropriate map to Unicode within x_keysym_to_character. Arguments
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
166 are evaluated multiple times.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
167
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
168 Breaks if an X11 keysym maps to zero in Unicode. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
169
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
170 #define USE_UNICODE_MAP(keysym, map) \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
171 if (keysym >= FIRST_KNOWN_##map \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
172 && (keysym < (FIRST_KNOWN_##map + countof(map))) \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
173 && map[keysym - FIRST_KNOWN_##map ]) do \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
174 { \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
175 keysym -= FIRST_KNOWN_##map ; \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
176 return Funicode_to_char(make_int(map[keysym]), Qnil); \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
177 } while (0)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
178
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
179 /* Maps to Unicode for X11 KeySyms, where we don't have a direct internal
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
180 mapping based on a Mule character set, or whatever. Taken from Markus
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
181 Kuhn's X11.keysyms--if you're ever comparing with that file, note the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
182 sequences of KeySyms often leave out entries, so you'll have to fill them
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
183 in. Doesn't include support for Hangul, which it should, if the X11
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
184 Hangul keysyms have ever been used anywhere.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
185
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
186 I'm not #ifdef'ing this based on wheter MULE is defined, because it's a
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
187 matter of 324 bytes in a stripped executable, and I want the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
188 testing. :-P */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
189
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
190 static UINT_16_BIT const TECHNICAL[] =
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
191 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
192 0x23B7, /* #x08A1 LEFT RADICAL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
193
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
194 #define FIRST_KNOWN_TECHNICAL 0x8A1
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
195
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
196 0x0, /* #x08A2 TOP LEFT RADICAL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
197 0x0, /* #x08A3 HORIZONTAL CONNECTOR Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
198 0x2320, /* #x08A4 TOP INTEGRAL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
199 0x2321, /* #x08A5 BOTTOM INTEGRAL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
200 0x0, /* #x08A6 VERTICAL CONNECTOR Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
201 0x23A1, /* #x08A7 TOP LEFT SQUARE BRACKET Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
202 0x23A3, /* #x08A8 BOTTOM LEFT SQUARE BRACKET Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
203 0x23A4, /* #x08A9 TOP RIGHT SQUARE BRACKET Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
204 0x23A6, /* #x08AA BOTTOM RIGHT SQUARE BRACKET Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
205 0x239B, /* #x08AB TOP LEFT PARENTHESIS Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
206 0x239D, /* #x08AC BOTTOM LEFT PARENTHESIS Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
207 0x239E, /* #x08AD TOP RIGHT PARENTHESIS Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
208 0x23A0, /* #x08AE BOTTOM RIGHT PARENTHESIS Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
209 0x23A8, /* #x08AF LEFT MIDDLE CURLY BRACE Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
210 0x23AC, /* #x08B0 RIGHT MIDDLE CURLY BRACE Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
211 0x0, /* #x08B1 TOP LEFT SUMMATION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
212 0x0, /* #x08B2 BOTTOM LEFT SUMMATION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
213 0x0, /* #x08B3 TOP VERTICAL SUMMATION CONNECTOR Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
214 0x0, /* #x08B4 BOTTOM VERTICAL SUMMATION CONNECTOR Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
215 0x0, /* #x08B5 TOP RIGHT SUMMATION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
216 0x0, /* #x08B6 BOTTOM RIGHT SUMMATION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
217 0x0, /* #x08B7 RIGHT MIDDLE SUMMATION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
218 0x0, /* #x08B8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
219 0x0, /* #x08B9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
220 0x0, /* #x08BA */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
221 0x0, /* #x08BB */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
222 0x2264, /* #x08BC LESS THAN OR EQUAL SIGN Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
223 0x2260, /* #x08BD NOT EQUAL SIGN Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
224 0x2265, /* #x08BE GREATER THAN OR EQUAL SIGN Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
225 0x222B, /* #x08BF INTEGRAL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
226 0x2234, /* #x08C0 THEREFORE Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
227 0x221D, /* #x08C1 VARIATION, PROPORTIONAL TO Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
228 0x221E, /* #x08C2 INFINITY Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
229 0x0, /* #x08C3 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
230 0x0, /* #x08C4 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
231 0x2207, /* #x08C5 NABLA, DEL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
232 0x0, /* #x08C6 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
233 0x0, /* #x08C7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
234 0x223C, /* #x08C8 IS APPROXIMATE TO Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
235 0x2243, /* #x08C9 SIMILAR OR EQUAL TO Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
236 0x0, /* #x08CA */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
237 0x0, /* #x08CB */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
238 0x0, /* #x08CC */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
239 0x21D4, /* #x08CD IF AND ONLY IF Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
240 0x21D2, /* #x08CE IMPLIES Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
241 0x2261, /* #x08CF IDENTICAL TO Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
242 0x0, /* #x08D0 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
243 0x0, /* #x08D1 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
244 0x0, /* #x08D2 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
245 0x0, /* #x08D3 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
246 0x0, /* #x08D4 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
247 0x0, /* #x08D5 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
248 0x221A, /* #x08D6 RADICAL Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
249 0x0, /* #x08D7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
250 0x0, /* #x08D8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
251 0x0, /* #x08D9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
252 0x2282, /* #x08DA IS INCLUDED IN Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
253 0x2283, /* #x08DB INCLUDES Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
254 0x2229, /* #x08DC INTERSECTION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
255 0x222A, /* #x08DD UNION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
256 0x2227, /* #x08DE LOGICAL AND Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
257 0x2228, /* #x08DF LOGICAL OR Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
258 0x0, /* #x08E0 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
259 0x0, /* #x08E1 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
260 0x0, /* #x08E2 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
261 0x0, /* #x08E3 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
262 0x0, /* #x08E4 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
263 0x0, /* #x08E5 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
264 0x0, /* #x08E6 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
265 0x0, /* #x08E7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
266 0x0, /* #x08E8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
267 0x0, /* #x08E9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
268 0x0, /* #x08Ea */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
269 0x0, /* #x08Eb */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
270 0x0, /* #x08Ec */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
271 0x0, /* #x08Ed */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
272 0x0, /* #x08Ee */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
273 0x2202, /* #x08EF PARTIAL DERIVATIVE Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
274 0x0, /* #x08F0 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
275 0x0, /* #x08F1 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
276 0x0, /* #x08F2 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
277 0x0, /* #x08F3 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
278 0x0, /* #x08F4 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
279 0x0, /* #x08F5 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
280 0x0192, /* #x08F6 FUNCTION Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
281 0x0, /* #x08F7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
282 0x0, /* #x08F8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
283 0x0, /* #x08F9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
284 0x0, /* #x08FA */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
285 0x2190, /* #x08FB LEFT ARROW Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
286 0x2191, /* #x08FC UPWARD ARROW Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
287 0x2192, /* #x08FD RIGHT ARROW Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
288 0x2193, /* #x08FE DOWNWARD ARROW Technical */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
289 };
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
290
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
291 static UINT_16_BIT const SPECIAL[] =
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
292 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
293 0x25C6, /* #x09E0 SOLID DIAMOND Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
294
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
295 #define FIRST_KNOWN_SPECIAL 0x9E0
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
296
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
297 0x2592, /* #x09E1 CHECKERBOARD Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
298 0x2409, /* #x09E2 ``HT'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
299 0x240C, /* #x09E3 ``FF'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
300 0x240D, /* #x09E4 ``CR'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
301 0x240A, /* #x09E5 ``LF'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
302 0x0, /* #x09E6 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
303 0x0, /* #x09E7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
304 0x2424, /* #x09E8 ``NL'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
305 0x240B, /* #x09E9 ``VT'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
306 0x2518, /* #x09EA LOWER-RIGHT CORNER Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
307 0x2510, /* #x09EB UPPER-RIGHT CORNER Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
308 0x250C, /* #x09EC UPPER-LEFT CORNER Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
309 0x2514, /* #x09ED LOWER-LEFT CORNER Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
310 0x253C, /* #x09EE CROSSING-LINES Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
311 0x23BA, /* #x09EF HORIZONTAL LINE, SCAN 1 Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
312 0x23BB, /* #x09F0 HORIZONTAL LINE, SCAN 3 Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
313 0x2500, /* #x09F1 HORIZONTAL LINE, SCAN 5 Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
314 0x23BC, /* #x09F2 HORIZONTAL LINE, SCAN 7 Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
315 0x23BD, /* #x09F3 HORIZONTAL LINE, SCAN 9 Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
316 0x251C, /* #x09F4 LEFT ``T'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
317 0x2524, /* #x09F5 RIGHT ``T'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
318 0x2534, /* #x09F6 BOTTOM ``T'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
319 0x252C, /* #x09F7 TOP ``T'' Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
320 0x2502 /* #x09F8 VERTICAL BAR Special */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
321 };
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
322
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
323 static UINT_16_BIT const PUBLISHING[] =
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
324 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
325 0x2003, /* #x0AA1 EM SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
326
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
327 #define FIRST_KNOWN_PUBLISHING 0xAA1
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
328
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
329 0x2002, /* #x0AA2 EN SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
330 0x2004, /* #x0AA3 3/EM SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
331 0x2005, /* #x0AA4 4/EM SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
332 0x2007, /* #x0AA5 DIGIT SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
333 0x2008, /* #x0AA6 PUNCTUATION SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
334 0x2009, /* #x0AA7 THIN SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
335 0x200A, /* #x0AA8 HAIR SPACE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
336 0x2014, /* #x0AA9 EM DASH Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
337 0x2013, /* #x0AAA EN DASH Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
338 0x0, /* #x0AAB */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
339 0x0, /* #x0AAC SIGNIFICANT BLANK SYMBOL Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
340 0x0, /* #x0AAD */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
341 0x2026, /* #x0AAE ELLIPSIS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
342 0x2025, /* #x0AAF DOUBLE BASELINE DOT Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
343 0x2153, /* #x0AB0 VULGAR FRACTION ONE THIRD Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
344 0x2154, /* #x0AB1 VULGAR FRACTION TWO THIRDS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
345 0x2155, /* #x0AB2 VULGAR FRACTION ONE FIFTH Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
346 0x2156, /* #x0AB3 VULGAR FRACTION TWO FIFTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
347 0x2157, /* #x0AB4 VULGAR FRACTION THREE FIFTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
348 0x2158, /* #x0AB5 VULGAR FRACTION FOUR FIFTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
349 0x2159, /* #x0AB6 VULGAR FRACTION ONE SIXTH Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
350 0x215A, /* #x0AB7 VULGAR FRACTION FIVE SIXTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
351 0x2105, /* #x0AB8 CARE OF Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
352 0x0, /* #x0AB9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
353 0x0, /* #x0ABA */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
354 0x2012, /* #x0ABB FIGURE DASH Publish */
3458
6139607b3fbf [xemacs-hg @ 2006-06-18 18:34:19 by aidan]
aidan
parents: 3439
diff changeset
355 0x3008, /* #x0ABC LEFT ANGLE BRACKET Publish */
6139607b3fbf [xemacs-hg @ 2006-06-18 18:34:19 by aidan]
aidan
parents: 3439
diff changeset
356 0x002E, /* #x0ABD DECIMAL POINT Publish */
6139607b3fbf [xemacs-hg @ 2006-06-18 18:34:19 by aidan]
aidan
parents: 3439
diff changeset
357 0x3009, /* #x0ABE RIGHT ANGLE BRACKET Publish */
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
358 0x0, /* #x0ABF MARKER Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
359 0x0, /* #x0AC0 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
360 0x0, /* #x0AC1 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
361 0x0, /* #x0AC2 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
362 0x215B, /* #x0AC3 VULGAR FRACTION ONE EIGHTH Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
363 0x215C, /* #x0AC4 VULGAR FRACTION THREE EIGHTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
364 0x215D, /* #x0AC5 VULGAR FRACTION FIVE EIGHTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
365 0x215E, /* #x0AC6 VULGAR FRACTION SEVEN EIGHTHS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
366 0x0, /* #x0AC7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
367 0x0, /* #x0AC8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
368 0x2122, /* #x0AC9 TRADEMARK SIGN Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
369 0x0, /* #x0ACA SIGNATURE MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
370 0x0, /* #x0ACB TRADEMARK SIGN IN CIRCLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
371 0x0, /* #x0ACC LEFT OPEN TRIANGLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
372 0x0, /* #x0ACD RIGHT OPEN TRIANGLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
373 0x0, /* #x0ACE EM OPEN CIRCLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
374 0x0, /* #x0ACF EM OPEN RECTANGLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
375 0x2018, /* #x0AD0 LEFT SINGLE QUOTATION MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
376 0x2019, /* #x0AD1 RIGHT SINGLE QUOTATION MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
377 0x201C, /* #x0AD2 LEFT DOUBLE QUOTATION MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
378 0x201D, /* #x0AD3 RIGHT DOUBLE QUOTATION MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
379 0x211E, /* #x0AD4 PRESCRIPTION, TAKE, RECIPE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
380 0x0, /* #x0AD5 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
381 0x2032, /* #x0AD6 MINUTES Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
382 0x2033, /* #x0AD7 SECONDS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
383 0x0, /* #x0AD8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
384 0x271D, /* #x0AD9 LATIN CROSS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
385 0x0, /* #x0ADA HEXAGRAM Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
386 0x0, /* #x0ADB FILLED RECTANGLE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
387 0x0, /* #x0ADC FILLED LEFT TRIANGLE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
388 0x0, /* #x0ADD FILLED RIGHT TRIANGLE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
389 0x0, /* #x0ADE EM FILLED CIRCLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
390 0x0, /* #x0ADF EM FILLED RECTANGLE Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
391 0x0, /* #x0AE0 EN OPEN CIRCLE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
392 0x0, /* #x0AE1 EN OPEN SQUARE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
393 0x0, /* #x0AE2 OPEN RECTANGULAR BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
394 0x0, /* #x0AE3 OPEN TRIANGULAR BULLET UP Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
395 0x0, /* #x0AE4 OPEN TRIANGULAR BULLET DOWN Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
396 0x0, /* #x0AE5 OPEN STAR Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
397 0x0, /* #x0AE6 EN FILLED CIRCLE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
398 0x0, /* #x0AE7 EN FILLED SQUARE BULLET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
399 0x0, /* #x0AE8 FILLED TRIANGULAR BULLET UP Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
400 0x0, /* #x0AE9 FILLED TRIANGULAR BULLET DOWN Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
401 0x0, /* #x0AEA LEFT POINTER Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
402 0x0, /* #x0AEB RIGHT POINTER Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
403 0x2663, /* #x0AEC CLUB Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
404 0x2666, /* #x0AED DIAMOND Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
405 0x2665, /* #x0AEE HEART Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
406 0x0, /* #x0AEF */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
407 0x2720, /* #x0AF0 MALTESE CROSS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
408 0x2020, /* #x0AF1 DAGGER Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
409 0x2021, /* #x0AF2 DOUBLE DAGGER Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
410 0x2713, /* #x0AF3 CHECK MARK, TICK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
411 0x2717, /* #x0AF4 BALLOT CROSS Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
412 0x266F, /* #x0AF5 MUSICAL SHARP Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
413 0x266D, /* #x0AF6 MUSICAL FLAT Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
414 0x2642, /* #x0AF7 MALE SYMBOL Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
415 0x2640, /* #x0AF8 FEMALE SYMBOL Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
416 0x260E, /* #x0AF9 TELEPHONE SYMBOL Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
417 0x2315, /* #x0AFA TELEPHONE RECORDER SYMBOL Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
418 0x2117, /* #x0AFB PHONOGRAPH COPYRIGHT SIGN Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
419 0x2038, /* #x0AFC CARET Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
420 0x201A, /* #x0AFD SINGLE LOW QUOTATION MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
421 0x201E, /* #x0AFE DOUBLE LOW QUOTATION MARK Publish */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
422 };
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
423
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
424 static UINT_16_BIT const APL[] =
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
425 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
426 0x22A5, /* #x0BC2 DOWN TACK APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
427 #define FIRST_KNOWN_APL 0xBC2
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
428 0x0, /* #x0BC3 UP SHOE (CAP) APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
429 0x230A, /* #x0BC4 DOWN STILE APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
430 0x0, /* #x0BC5 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
431 0x0, /* #x0BC6 UNDERBAR APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
432 0x0, /* #x0BC7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
433 0x0, /* #x0BC8 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
434 0x0, /* #x0BC9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
435 0x2218, /* #x0BCA JOT APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
436 0x0, /* #x0BCB */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
437 0x2395, /* #x0BCC QUAD APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
438 0x0, /* #x0BCD */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
439 0x22A4, /* #x0BCE UP TACK APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
440 0x25CB, /* #x0BCF CIRCLE APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
441 0x0, /* #x0BD0 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
442 0x0, /* #x0BD1 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
443 0x0, /* #x0BD2 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
444 0x2308, /* #x0BD3 UP STILE APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
445 0x0, /* #x0BD4 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
446 0x0, /* #x0BD5 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
447 0x0, /* #x0BD6 DOWN SHOE (CUP) APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
448 0x0, /* #x0BD7 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
449 0x0, /* #x0BD8 RIGHT SHOE APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
450 0x0, /* #x0BD9 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
451 0x0, /* #x0BDA LEFT SHOE APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
452 0x0, /* #x0BDB */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
453 0x0, /* #x0BDC */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
454 0x22A2, /* #x0BDC LEFT TACK APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
455 0x0, /* #x0BDE */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
456 0x0, /* #x0BDF */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
457 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 0x0BB0--0x0BBB */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
458 0x0, 0x0, 0x0, 0x0,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
459 0x22A3, /* #x0BFC RIGHT TACK APL */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
460 };
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
461
3640
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
462 static UINT_16_BIT const CYRILLIC[] =
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
463 {
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
464 0x0452, /* #x06A1 CYRILLIC SMALL LETTER DJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
465 #define FIRST_KNOWN_CYRILLIC 0x6A1
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
466 0x0453, /* #x06A2 CYRILLIC SMALL LETTER GJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
467 0x0451, /* #x06A3 CYRILLIC SMALL LETTER IO */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
468 0x0454, /* #x06A4 CYRILLIC SMALL LETTER UKRAINIAN IE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
469 0x0455, /* #x06A5 CYRILLIC SMALL LETTER DZE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
470 0x0456, /* #x06A6 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
471 0x0457, /* #x06A7 CYRILLIC SMALL LETTER YI */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
472 0x0458, /* #x06A8 CYRILLIC SMALL LETTER JE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
473 0x0459, /* #x06A9 CYRILLIC SMALL LETTER LJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
474 0x045A, /* #x06AA CYRILLIC SMALL LETTER NJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
475 0x045B, /* #x06AB CYRILLIC SMALL LETTER TSHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
476 0x045C, /* #x06AC CYRILLIC SMALL LETTER KJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
477 0x0491, /* #x06AD CYRILLIC SMALL LETTER GHE WITH UPTURN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
478 0x045E, /* #x06AE CYRILLIC SMALL LETTER SHORT U */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
479 0x045F, /* #x06AF CYRILLIC SMALL LETTER DZHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
480 0x2116, /* #x06B0 NUMERO SIGN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
481 0x0402, /* #x06B1 CYRILLIC CAPITAL LETTER DJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
482 0x0403, /* #x06B2 CYRILLIC CAPITAL LETTER GJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
483 0x0401, /* #x06B3 CYRILLIC CAPITAL LETTER IO */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
484 0x0404, /* #x06B4 CYRILLIC CAPITAL LETTER UKRAINIAN IE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
485 0x0405, /* #x06B5 CYRILLIC CAPITAL LETTER DZE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
486 0x0406, /* #x06B6 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
487 0x0407, /* #x06B7 CYRILLIC CAPITAL LETTER YI */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
488 0x0408, /* #x06B8 CYRILLIC CAPITAL LETTER JE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
489 0x0409, /* #x06B9 CYRILLIC CAPITAL LETTER LJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
490 0x040A, /* #x06BA CYRILLIC CAPITAL LETTER NJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
491 0x040B, /* #x06BB CYRILLIC CAPITAL LETTER TSHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
492 0x040C, /* #x06BC CYRILLIC CAPITAL LETTER KJE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
493 0x0490, /* #x06BD CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
494 0x040E, /* #x06BE CYRILLIC CAPITAL LETTER SHORT U */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
495 0x040F, /* #x06BF CYRILLIC CAPITAL LETTER DZHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
496 0x044E, /* #x06C0 CYRILLIC SMALL LETTER YU */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
497 0x0430, /* #x06C1 CYRILLIC SMALL LETTER A */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
498 0x0431, /* #x06C2 CYRILLIC SMALL LETTER BE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
499 0x0446, /* #x06C3 CYRILLIC SMALL LETTER TSE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
500 0x0434, /* #x06C4 CYRILLIC SMALL LETTER DE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
501 0x0435, /* #x06C5 CYRILLIC SMALL LETTER IE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
502 0x0444, /* #x06C6 CYRILLIC SMALL LETTER EF */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
503 0x0433, /* #x06C7 CYRILLIC SMALL LETTER GHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
504 0x0445, /* #x06C8 CYRILLIC SMALL LETTER HA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
505 0x0438, /* #x06C9 CYRILLIC SMALL LETTER I */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
506 0x0439, /* #x06CA CYRILLIC SMALL LETTER SHORT I */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
507 0x043A, /* #x06CB CYRILLIC SMALL LETTER KA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
508 0x043B, /* #x06CC CYRILLIC SMALL LETTER EL */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
509 0x043C, /* #x06CD CYRILLIC SMALL LETTER EM */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
510 0x043D, /* #x06CE CYRILLIC SMALL LETTER EN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
511 0x043E, /* #x06CF CYRILLIC SMALL LETTER O */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
512 0x043F, /* #x06D0 CYRILLIC SMALL LETTER PE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
513 0x044F, /* #x06D1 CYRILLIC SMALL LETTER YA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
514 0x0440, /* #x06D2 CYRILLIC SMALL LETTER ER */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
515 0x0441, /* #x06D3 CYRILLIC SMALL LETTER ES */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
516 0x0442, /* #x06D4 CYRILLIC SMALL LETTER TE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
517 0x0443, /* #x06D5 CYRILLIC SMALL LETTER U */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
518 0x0436, /* #x06D6 CYRILLIC SMALL LETTER ZHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
519 0x0432, /* #x06D7 CYRILLIC SMALL LETTER VE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
520 0x044C, /* #x06D8 CYRILLIC SMALL LETTER SOFT SIGN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
521 0x044B, /* #x06D9 CYRILLIC SMALL LETTER YERU */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
522 0x0437, /* #x06DA CYRILLIC SMALL LETTER ZE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
523 0x0448, /* #x06DB CYRILLIC SMALL LETTER SHA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
524 0x044D, /* #x06DC CYRILLIC SMALL LETTER E */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
525 0x0449, /* #x06DD CYRILLIC SMALL LETTER SHCHA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
526 0x0447, /* #x06DE CYRILLIC SMALL LETTER CHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
527 0x044A, /* #x06DF CYRILLIC SMALL LETTER HARD SIGN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
528 0x042E, /* #x06E0 CYRILLIC CAPITAL LETTER YU */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
529 0x0410, /* #x06E1 CYRILLIC CAPITAL LETTER A */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
530 0x0411, /* #x06E2 CYRILLIC CAPITAL LETTER BE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
531 0x0426, /* #x06E3 CYRILLIC CAPITAL LETTER TSE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
532 0x0414, /* #x06E4 CYRILLIC CAPITAL LETTER DE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
533 0x0415, /* #x06E5 CYRILLIC CAPITAL LETTER IE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
534 0x0424, /* #x06E6 CYRILLIC CAPITAL LETTER EF */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
535 0x0413, /* #x06E7 CYRILLIC CAPITAL LETTER GHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
536 0x0425, /* #x06E8 CYRILLIC CAPITAL LETTER HA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
537 0x0418, /* #x06E9 CYRILLIC CAPITAL LETTER I */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
538 0x0419, /* #x06EA CYRILLIC CAPITAL LETTER SHORT I */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
539 0x041A, /* #x06EB CYRILLIC CAPITAL LETTER KA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
540 0x041B, /* #x06EC CYRILLIC CAPITAL LETTER EL */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
541 0x041C, /* #x06ED CYRILLIC CAPITAL LETTER EM */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
542 0x041D, /* #x06EE CYRILLIC CAPITAL LETTER EN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
543 0x041E, /* #x06EF CYRILLIC CAPITAL LETTER O */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
544 0x041F, /* #x06F0 CYRILLIC CAPITAL LETTER PE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
545 0x042F, /* #x06F1 CYRILLIC CAPITAL LETTER YA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
546 0x0420, /* #x06F2 CYRILLIC CAPITAL LETTER ER */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
547 0x0421, /* #x06F3 CYRILLIC CAPITAL LETTER ES */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
548 0x0422, /* #x06F4 CYRILLIC CAPITAL LETTER TE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
549 0x0423, /* #x06F5 CYRILLIC CAPITAL LETTER U */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
550 0x0416, /* #x06F6 CYRILLIC CAPITAL LETTER ZHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
551 0x0412, /* #x06F7 CYRILLIC CAPITAL LETTER VE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
552 0x042C, /* #x06F8 CYRILLIC CAPITAL LETTER SOFT SIGN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
553 0x042B, /* #x06F9 CYRILLIC CAPITAL LETTER YERU */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
554 0x0417, /* #x06FA CYRILLIC CAPITAL LETTER ZE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
555 0x0428, /* #x06FB CYRILLIC CAPITAL LETTER SHA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
556 0x042D, /* #x06FC CYRILLIC CAPITAL LETTER E */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
557 0x0429, /* #x06FD CYRILLIC CAPITAL LETTER SHCHA */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
558 0x0427, /* #x06FE CYRILLIC CAPITAL LETTER CHE */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
559 0x042A, /* #x06FF CYRILLIC CAPITAL LETTER HARD SIGN */
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
560 };
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
561
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
562 /* For every key on the keyboard that has a known character correspondence,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
563 we define the character-of-keysym property of its XEmacs keysym, and make
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
564 the default binding for the key be self-insert-command.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
565
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
566 The following magic is based on intimate knowledge of some of
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
567 X11/keysymdef.h. The keysym mappings defined by X11 are based on the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
568 iso8859 standards, except for Cyrillic and Greek.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
569
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
570 In a non-Mule world, a user can still have a multi-lingual editor, by
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
571 doing (set-face-font "...-iso8859-2" (current-buffer)) for all their
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
572 Latin-2 buffers, etc. and the X11 keysyms corresponding to characters in
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
573 those character sets will still do the right thing (because of the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
574 make_char (code + 0x80) non-Mule case below.) Of course, X11 keysyms in
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
575 other character sets will not do the right thing, because XEmacs won't
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
576 support the right thing.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
577
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
578 This code is also called when a command lookup is about to fail, and the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
579 X11 platform code has worked out that it previously wasn't aware the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
580 keysym of that command could be generated by the user's keyboard; in that
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
581 case, we bind its XEmacs keysym to self-insert-command if it has a
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
582 character correspondence we know about, and tell the general event code
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
583 that we've done so, so it can try the lookup again.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
584
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
585 Called from the GTK code because GTK 1 has no defined way of doing the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
586 same thing, and this works for it on X11. It should be moved back into
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
587 event-Xt.c when and if the GTK port moves to GTK 2. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
588
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
589 #ifndef THIS_IS_GTK
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
590 static Lisp_Object
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
591 x_keysym_to_character(KeySym keysym)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
592 #else
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
593 Lisp_Object
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
594 gtk_keysym_to_character(guint keysym)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
595 #endif
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
596 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
597 Lisp_Object charset = Qzero;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
598 int code = 0;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
599
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
600 /* Markus Kuhn's spec says keysyms in the range #x01000100 to #x0110FFFF
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
601 and only those should correspond directly to Unicode code points, in
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
602 the range #x100-#x10FFFF; actual implementations can have the Latin 1
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
603 code points do the same thing with keysyms
3439
d1754e7f0cea [xemacs-hg @ 2006-06-03 17:50:39 by aidan]
aidan
parents: 2828
diff changeset
604 #x01000000-#x01000100. */
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
605
3439
d1754e7f0cea [xemacs-hg @ 2006-06-03 17:50:39 by aidan]
aidan
parents: 2828
diff changeset
606 if (keysym >= 0x01000000 && keysym <= 0x0110FFFF)
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
607 return Funicode_to_char (make_int(keysym & 0xffffff), Qnil);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
608
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
609 if ((keysym & 0xff) < 0xa0)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
610 return Qnil;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
611
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
612 switch (keysym >> 8)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
613 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
614
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
615 #define USE_CHARSET(var,cs) \
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
616 ((var) = charset_by_leading_byte (LEADING_BYTE_##cs))
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
617
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
618 case 0: /* ASCII + Latin1 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
619 USE_CHARSET (charset, LATIN_ISO8859_1);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
620 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
621 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
622 case 1: /* Latin2 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
623 USE_CHARSET (charset, LATIN_ISO8859_2);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
624 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
625 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
626 case 2: /* Latin3 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
627 USE_CHARSET (charset, LATIN_ISO8859_3);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
628 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
629 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
630 case 3: /* Latin4 */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
631 USE_CHARSET (charset, LATIN_ISO8859_4);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
632 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
633 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
634 case 4: /* Katakana */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
635 USE_CHARSET (charset, KATAKANA_JISX0201);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
636 if ((keysym & 0xff) > 0xa0)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
637 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
638 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
639 case 5: /* Arabic */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
640 USE_CHARSET (charset, ARABIC_ISO8859_6);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
641 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
642 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
643 case 6: /* Cyrillic */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
644 {
3640
24b58b2d56ab [xemacs-hg @ 2006-10-28 16:02:43 by aidan]
aidan
parents: 3458
diff changeset
645 USE_UNICODE_MAP(keysym, CYRILLIC);
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
646 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
647 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
648 case 7: /* Greek */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
649 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
650 static UExtbyte const greek[] = /* 0x20 - 0x7f */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
651 {0x00, 0x36, 0x38, 0x39, 0x3a, 0x5a, 0x00, 0x3c,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
652 0x3e, 0x5b, 0x00, 0x3f, 0x00, 0x00, 0x35, 0x2f,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
653 0x00, 0x5c, 0x5d, 0x5e, 0x5f, 0x7a, 0x40, 0x7c,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
654 0x7d, 0x7b, 0x60, 0x7e, 0x00, 0x00, 0x00, 0x00,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
655 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
656 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
657 0x50, 0x51, 0x53, 0x00, 0x54, 0x55, 0x56, 0x57,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
658 0x58, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
659 0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
660 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
661 0x70, 0x71, 0x73, 0x72, 0x74, 0x75, 0x76, 0x77,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
662 0x78, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
663 USE_CHARSET (charset, GREEK_ISO8859_7);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
664 code = greek[(keysym & 0x7f) - 0x20];
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
665 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
666 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
667 case 8:
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
668 USE_UNICODE_MAP(keysym, TECHNICAL);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
669 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
670 case 9:
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
671 USE_UNICODE_MAP(keysym, SPECIAL);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
672 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
673 case 10:
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
674 USE_UNICODE_MAP(keysym, PUBLISHING);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
675 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
676 case 11:
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
677 USE_UNICODE_MAP(keysym, APL);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
678 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
679 case 12: /* Hebrew */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
680 USE_CHARSET (charset, HEBREW_ISO8859_8);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
681 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
682 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
683 case 13: /* Thai */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
684 /* #### This needs to deal with character composition.
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
685 Are you sure we can't leave it to the X server? */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
686 USE_CHARSET (charset, THAI_TIS620);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
687 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
688 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
689 case 14: /* Korean Hangul. Would like some information on whether this
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
690 is worth doing--there don't appear to be any Korean keyboard
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
691 layouts in the XKB data files. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
692 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
693
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
694 case 19: /* Latin 9 - ISO8859-15. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
695 USE_CHARSET (charset, LATIN_ISO8859_15);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
696 code = keysym & 0x7f;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
697 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
698 case 32: /* Currency. The lower sixteen bits of these keysyms happily
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
699 correspond exactly to the Unicode code points of the
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
700 associated characters */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
701 return Funicode_to_char(make_int(keysym & 0xffff), Qnil);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
702 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
703 default:
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
704 break;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
705 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
706
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
707 if (code == 0)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
708 return Qnil;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
709
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
710 #ifdef MULE
4358
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
711 {
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
712 Lisp_Object unified = Funicode_to_char
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
713 (Fchar_to_unicode (make_char (make_ichar (charset, code, 0))), Qnil);
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
714 if (!NILP (unified))
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
715 {
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
716 return unified;
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
717 }
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
718 return make_char (make_ichar (charset, code, 0));
63c25d1cbecf Unify the typed character under X11, using the unicode precedence list
Aidan Kehoe <kehoea@parhasard.net>
parents: 3640
diff changeset
719 }
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
720 #else
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
721 return make_char (code + 0x80);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
722 #endif
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
723 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
724
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 1268
diff changeset
725 #endif /* defined(THIS_IS_X) || !defined(__GDK_KEYS_H__) */