comparison lisp/gtk-init.el @ 4477:e34711681f30

Don't determine whether to call general device-type code at startup, rather decide in the device-specific code itself. lisp/ChangeLog addition: 2008-07-07 Aidan Kehoe <kehoea@parhasard.net> Patch to make it up to the device-specific code whether various Lisp functions should be called during device creation, not relying on the startup code to decide this. Also, rename initial-window-system to initial-device-type (which makes more sense in this scheme), always set it. * startup.el (command-line): Use initial-device-type, not initial-window-system; just call #'make-device, leave the special behaviour to be done the first time a console type is initialised to be decided on by the respective console code. * x-init.el (x-app-defaults-directory): Declare that it should be bound. (x-define-dead-key): Have the macro take a DEVICE argument. (x-initialize-compose): Have the function take a DEVICE argument, and use it when checking if various keysyms are available on the keyboard. (x-initialize-keyboard): Have the function take a DEVICE argument, allowing device-specific keyboard initialisation. (make-device-early-x-entry-point-called-p): New. (make-device-late-x-entry-point-called-p): New. Rename pre-x-win-initted, x-win-initted. (make-device-early-x-entry-point): Rename init-pre-x-win, take the call to make-x-device out (it should be called from the device-creation code, not vice-versa). (make-device-late-x-entry-point): Rename init-post-x-win, have it take a DEVICE argument, use that DEVICE argument when working out what device-specific things need doing. Don't use create-console-hook in core code. * x-win-xfree86.el (x-win-init-xfree86): Take a DEVICE argument; use it. * x-win-sun.el (x-win-init-sun): Take a DEVICE argument; use it. * mule/mule-x-init.el: Remove #'init-mule-x-win, an empty function. * tty-init.el (make-device-early-tty-entry-point-called-p): New. Rename pre-tty-win-initted. (make-device-early-tty-entry-point): New. Rename init-pre-tty-win. (make-frame-after-init-entry-point): New. Rename init-post-tty-win to better reflect when it's called. * gtk-init.el (gtk-early-lisp-options-file): New. Move this path to a documented variable. (gtk-command-switch-alist): Wrap the docstring to fewer than 79 columns. (make-device-early-gtk-entry-point-called-p): New. (make-device-late-gtk-entry-point-called-p): New. Renamed gtk-pre-win-initted, gtk-post-win-initted to these. (make-device-early-gtk-entry-point): New. (make-device-late-gtk-entry-point): New. Renamed init-pre-gtk-win, init-post-gtk-win to these. Have make-device-late-gtk-entry-point take a device argument, and use it; have make-device-early-gtk-entry-point load the GTK-specific startup code, instead of doing that in C. (init-gtk-win): Deleted, functionality moved to the GTK device creation code. (gtk-define-dead-key): Have it take a DEVICE argument; use this argument. (gtk-initialize-compose): Ditto. * coding.el (set-terminal-coding-system): Correct the docstring; the function isn't broken. src/ChangeLog addition: 2008-07-07 Aidan Kehoe <kehoea@parhasard.net> Patch to make it up to the device-specific code whether various Lisp functions should be called during device creation, not relying on the startup code to decide this. Also, rename initial-window-system to initial-device-type (which makes more sense in this scheme), always set it. * redisplay.c (Vinitial_device_type): New. (Vinitial_window_system): Removed. Rename initial-window-system to initial-device type, making it a stream if we're noninteractive. Update its docstring. * device-x.c (Qmake_device_early_x_entry_point, Qmake_device_late_x_entry_point): New. Rename Qinit_pre_x_win, Qinit_post_x_win. (x_init_device): Call #'make-device-early-x-entry-point earlier, now we rely on it to find the application class and the app-defaults directory. (x_finish_init_device): Call #'make-device-late-x-entry-point with the created device. (Vx_app_defaults_directory): Always make this available, to simplify code in x-init.el. * device-tty.c (Qmake_device_early_tty_entry_point): New. Rename Qinit_pre_tty_win, rename Qinit_post_tty_win and move to frame-tty.c as Qmake_frame_after_init_entry_point. (tty_init_device): Call #'make-device-early-tty-entry-point before doing anything. * frame-tty.c (Qmake_frame_after_init_entry_point): New. * frame-tty.c (tty_after_init_frame): Have it call the better-named #'make-frame-after-init-entry-point function instead of #'init-post-tty-win (since it's called after frame, not device, creation). * device-msw.c (Qmake_device_early_mswindows_entry_point, Qmake_device_late_mswindows_entry_point): New. Rename Qinit_pre_mswindows_win, Qinit_post_mswindows_win. (mswindows_init_device): Call #'make-device-early-mswindows-entry-point here, instead of having its predecessor call us. (mswindows_finish_init_device): Call #'make-device-early-mswindows-entry-point, for symmetry with the other device types (though it's an empty function). * device-gtk.c (Qmake_device_early_gtk_entry_point, Qmake_device_late_gtk_entry_point): New. Rename Qinit_pre_gtk_win, Qinit_post_gtk_win. (gtk_init_device): Call #'make-device-early-gtk-entry-point; don't load ~/.xemacs/gtk-options.el ourselves, leave that to lisp. (gtk_finish_init_device): Call #'make-device-late-gtk-entry-point with the created device as an argument.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 09 Jul 2008 20:46:22 +0200
parents 461fdb92f3b6
children 308d34e9f07d
comparison
equal deleted inserted replaced
4475:86283c809984 4477:e34711681f30
22 ;; along with XEmacs; see the file COPYING. If not, write to the 22 ;; along with XEmacs; see the file COPYING. If not, write to the
23 ;; Free Software Foundation, 59 Temple Place - Suite 330, 23 ;; Free Software Foundation, 59 Temple Place - Suite 330,
24 ;; Boston, MA 02111-1307, USA. 24 ;; Boston, MA 02111-1307, USA.
25 25
26 (globally-declare-boundp 26 (globally-declare-boundp
27 '(gtk-initial-argv-list 27 '(gtk-initial-argv-list gtk-initial-geometry))
28 gtk-initial-geometry))
29 28
30 (globally-declare-fboundp 29 (globally-declare-fboundp
31 '(gtk-keysym-on-keyboard-p)) 30 '(gtk-keysym-on-keyboard-p))
32 31
33 (defvar gtk-win-initted nil) 32 (defvar gtk-early-lisp-options-file "~/.xemacs/gtk-options.el"
34 (defvar gtk-pre-win-initted nil) 33 "Path where GTK-specific early options should be stored.
35 (defvar gtk-post-win-initted nil) 34
35 This allows the user to set initial geometry without using GNOME and session
36 management, and, since it is read before GTK is initialized, it avoids
37 window flicker on resizing.
38
39 It is normally not useful to change without recompiling XEmacs.")
36 40
37 (defvar gtk-command-switch-alist 41 (defvar gtk-command-switch-alist
38 '( 42 '(
39 ;; GNOME Options 43 ;; GNOME Options
40 ("--disable-sound" . nil) 44 ("--disable-sound" . nil)
64 ("--sm-client-id" . t) 68 ("--sm-client-id" . t)
65 ("--sm-config-prefix" . t) 69 ("--sm-config-prefix" . t)
66 ("--sm-disable" . t) 70 ("--sm-disable" . t)
67 ) 71 )
68 72
69 "An assoc list of command line arguments that should in gtk-initial-argv-list. 73 "An assoc list of command line args that should be in gtk-initial-argv-list.
70 This is necessary because GTK and GNOME consider it a fatal error if they receive 74 This is necessary because GTK and GNOME consider it a fatal error if they
71 unknown command line arguments (perfectly reasonable). But this means that if 75 receive unknown command line arguments (perfectly reasonable). But this
72 the user specifies a file name on the command line they will be unable to start. 76 means that if the user specifies a file name on the command line they will
73 So we filter the command line and allow only items in this list in. 77 be unable to start. So we filter the command line and allow only items in
74 78 this list in.
75 The CDR of the assoc list is whether it accepts an argument. All options are in 79
76 GNU long form though.") 80 The CDR of the assoc list is whether it accepts an argument. For the
77 81 moment, all options are in GNU long form.")
78 (defun init-pre-gtk-win () 82
79 "Initialize Gtk GUI at startup (pre). Don't call this." 83 (defvar make-device-early-gtk-entry-point-called-p nil
80 (when (not gtk-pre-win-initted) 84 "Whether `make-device-early-gtk-entry-point' has been called, at least once.
81 (setq initial-frame-plist (if initial-frame-unmapped-p 85
82 '(initially-unmapped t) 86 Much of the GTK-specific Lisp init code should only be called the first time
83 nil) 87 a GTK device is created; this variable allows for that.")
84 gtk-pre-win-initted t))) 88
89 (defvar make-device-late-gtk-entry-point-called-p nil
90 "Whether `make-device-late-gtk-entry-point' has been called, at least once.
91
92 Much of the GTK-specific Lisp init code should only be called the first time
93 a GTK device is created; this variable allows for that.")
94
95 (defun make-device-early-gtk-entry-point ()
96 "Entry point to set up the Lisp environment before GTK device creation."
97 (unless make-device-early-gtk-entry-point-called-p
98 (setq initial-frame-plist
99 (and initial-frame-unmapped-p '(initially-unmapped t))
100 gtk-initial-argv-list
101 (cons (car command-line-args) (gtk-filter-arguments))
102 gtk-initial-geometry
103 (nth 1 (member "-geometry" command-line-args-left))
104 make-device-early-gtk-entry-point-called-p t)
105 (unless vanilla-inhibiting
106 (load gtk-early-lisp-options-file t t t))))
85 107
86 (defun gtk-init-handle-geometry (arg) 108 (defun gtk-init-handle-geometry (arg)
87 "Set up initial geometry info for GTK devices." 109 "Set up initial geometry info for GTK devices."
88 (setq gtk-initial-geometry (pop command-line-args-left))) 110 (setq gtk-initial-geometry (pop command-line-args-left)))
111
112 (defun make-device-late-gtk-entry-point (device)
113 "Entry-Point to do any Lisp-level GTK device-specific initialization."
114 (gtk-initialize-compose device)
115 (unless make-device-late-gtk-entry-point-called-p
116 (setq make-device-late-gtk-entry-point-called-p t)))
89 117
90 (defun gtk-filter-arguments () 118 (defun gtk-filter-arguments ()
91 (let ((accepted nil) 119 (let ((accepted nil)
92 (rejected nil) 120 (rejected nil)
93 (todo nil)) 121 (todo nil))
119 (push (pop command-line-args-left) accepted) 147 (push (pop command-line-args-left) accepted)
120 (push (pop command-line-args-left) rejected))) 148 (push (pop command-line-args-left) rejected)))
121 (setq command-line-args-left (nreverse rejected)) 149 (setq command-line-args-left (nreverse rejected))
122 (nreverse accepted))) 150 (nreverse accepted)))
123 151
124 (defun init-gtk-win ()
125 "Initialize Gtk GUI at startup. Don't call this."
126 (unless gtk-win-initted
127 (init-pre-gtk-win)
128 (setq gtk-initial-argv-list (cons (car command-line-args) (gtk-filter-arguments))
129 gtk-initial-geometry (nth 1 (member "-geometry" command-line-args-left)))
130 (make-gtk-device)
131 (init-post-gtk-win)
132 (setq gtk-win-initted t)))
133
134 (defun init-post-gtk-win ()
135 (unless gtk-post-win-initted
136 (setq gtk-post-win-initted t)))
137
138 (push '("-geometry" . gtk-init-handle-geometry) command-switch-alist) 152 (push '("-geometry" . gtk-init-handle-geometry) command-switch-alist)
139 153
140 ;;; Stuff to get compose keys working on GTK 154 ;;; Stuff to get compose keys working on GTK
141 (eval-when-compile 155 (eval-when-compile
142 (defmacro gtk-define-dead-key (key map) 156 (defmacro gtk-define-dead-key (key map device)
143 `(when (gtk-keysym-on-keyboard-p ',key) 157 `(when (gtk-keysym-on-keyboard-p ',key device)
144 (define-key function-key-map [,key] ',map)))) 158 (define-key function-key-map [,key] ',map))))
145 159
146 (defun gtk-initialize-compose () 160 (defun gtk-initialize-compose (device)
147 "Enable compose processing" 161 "Enable compose processing"
148 (autoload 'compose-map "gtk-compose" nil t 'keymap) 162 (autoload 'compose-map "gtk-compose" nil t 'keymap)
149 (autoload 'compose-acute-map "gtk-compose" nil t 'keymap) 163 (autoload 'compose-acute-map "gtk-compose" nil t 'keymap)
150 (autoload 'compose-grave-map "gtk-compose" nil t 'keymap) 164 (autoload 'compose-grave-map "gtk-compose" nil t 'keymap)
151 (autoload 'compose-cedilla-map "gtk-compose" nil t 'keymap) 165 (autoload 'compose-cedilla-map "gtk-compose" nil t 'keymap)
152 (autoload 'compose-diaeresis-map "gtk-compose" nil t 'keymap) 166 (autoload 'compose-diaeresis-map "gtk-compose" nil t 'keymap)
153 (autoload 'compose-circumflex-map "gtk-compose" nil t 'keymap) 167 (autoload 'compose-circumflex-map "gtk-compose" nil t 'keymap)
154 (autoload 'compose-tilde-map "gtk-compose" nil t 'keymap) 168 (autoload 'compose-tilde-map "gtk-compose" nil t 'keymap)
155 169
156 (when (gtk-keysym-on-keyboard-p 'multi-key) 170 (when (gtk-keysym-on-keyboard-p 'multi-key device)
157 (define-key function-key-map [multi-key] 'compose-map)) 171 (define-key function-key-map [multi-key] 'compose-map))
158 172
159 ;; The dead keys might really be called just about anything, depending 173 ;; The dead keys might really be called just about anything, depending
160 ;; on the vendor. MIT thinks that the prefixes are "SunFA_", "D", and 174 ;; on the vendor. MIT thinks that the prefixes are "SunFA_", "D", and
161 ;; "hpmute_" for Sun, DEC, and HP respectively. However, OpenWindows 3 175 ;; "hpmute_" for Sun, DEC, and HP respectively. However, OpenWindows 3
170 ;; If things seem not to be working, you might want to check your 184 ;; If things seem not to be working, you might want to check your
171 ;; /usr/lib/X11/XKeysymDB file to see if your vendor has an equally 185 ;; /usr/lib/X11/XKeysymDB file to see if your vendor has an equally
172 ;; mixed up view of what these keys should be called. 186 ;; mixed up view of what these keys should be called.
173 187
174 ;; Canonical names: 188 ;; Canonical names:
175 (gtk-define-dead-key acute compose-acute-map) 189 (gtk-define-dead-key acute compose-acute-map device)
176 (gtk-define-dead-key grave compose-grave-map) 190 (gtk-define-dead-key grave compose-grave-map device)
177 (gtk-define-dead-key cedilla compose-cedilla-map) 191 (gtk-define-dead-key cedilla compose-cedilla-map device)
178 (gtk-define-dead-key diaeresis compose-diaeresis-map) 192 (gtk-define-dead-key diaeresis compose-diaeresis-map device)
179 (gtk-define-dead-key circumflex compose-circumflex-map) 193 (gtk-define-dead-key circumflex compose-circumflex-map device)
180 (gtk-define-dead-key tilde compose-tilde-map) 194 (gtk-define-dead-key tilde compose-tilde-map device)
181 (gtk-define-dead-key degree compose-ring-map) 195 (gtk-define-dead-key degree compose-ring-map device)
182 196
183 ;; Sun according to MIT: 197 ;; Sun according to MIT:
184 (gtk-define-dead-key SunFA_Acute compose-acute-map) 198 (gtk-define-dead-key SunFA_Acute compose-acute-map device)
185 (gtk-define-dead-key SunFA_Grave compose-grave-map) 199 (gtk-define-dead-key SunFA_Grave compose-grave-map device)
186 (gtk-define-dead-key SunFA_Cedilla compose-cedilla-map) 200 (gtk-define-dead-key SunFA_Cedilla compose-cedilla-map device)
187 (gtk-define-dead-key SunFA_Diaeresis compose-diaeresis-map) 201 (gtk-define-dead-key SunFA_Diaeresis compose-diaeresis-map device)
188 (gtk-define-dead-key SunFA_Circum compose-circumflex-map) 202 (gtk-define-dead-key SunFA_Circum compose-circumflex-map device)
189 (gtk-define-dead-key SunFA_Tilde compose-tilde-map) 203 (gtk-define-dead-key SunFA_Tilde compose-tilde-map device)
190 204
191 ;; Sun according to OpenWindows 2: 205 ;; Sun according to OpenWindows 2:
192 (gtk-define-dead-key Dead_Grave compose-grave-map) 206 (gtk-define-dead-key Dead_Grave compose-grave-map device)
193 (gtk-define-dead-key Dead_Circum compose-circumflex-map) 207 (gtk-define-dead-key Dead_Circum compose-circumflex-map device)
194 (gtk-define-dead-key Dead_Tilde compose-tilde-map) 208 (gtk-define-dead-key Dead_Tilde compose-tilde-map device)
195 209
196 ;; Sun according to OpenWindows 3: 210 ;; Sun according to OpenWindows 3:
197 (gtk-define-dead-key SunXK_FA_Acute compose-acute-map) 211 (gtk-define-dead-key SunXK_FA_Acute compose-acute-map device)
198 (gtk-define-dead-key SunXK_FA_Grave compose-grave-map) 212 (gtk-define-dead-key SunXK_FA_Grave compose-grave-map device)
199 (gtk-define-dead-key SunXK_FA_Cedilla compose-cedilla-map) 213 (gtk-define-dead-key SunXK_FA_Cedilla compose-cedilla-map device)
200 (gtk-define-dead-key SunXK_FA_Diaeresis compose-diaeresis-map) 214 (gtk-define-dead-key SunXK_FA_Diaeresis compose-diaeresis-map device)
201 (gtk-define-dead-key SunXK_FA_Circum compose-circumflex-map) 215 (gtk-define-dead-key SunXK_FA_Circum compose-circumflex-map device)
202 (gtk-define-dead-key SunXK_FA_Tilde compose-tilde-map) 216 (gtk-define-dead-key SunXK_FA_Tilde compose-tilde-map device)
203 217
204 ;; DEC according to MIT: 218 ;; DEC according to MIT:
205 (gtk-define-dead-key Dacute_accent compose-acute-map) 219 (gtk-define-dead-key Dacute_accent compose-acute-map device)
206 (gtk-define-dead-key Dgrave_accent compose-grave-map) 220 (gtk-define-dead-key Dgrave_accent compose-grave-map device)
207 (gtk-define-dead-key Dcedilla_accent compose-cedilla-map) 221 (gtk-define-dead-key Dcedilla_accent compose-cedilla-map device)
208 (gtk-define-dead-key Dcircumflex_accent compose-circumflex-map) 222 (gtk-define-dead-key Dcircumflex_accent compose-circumflex-map device)
209 (gtk-define-dead-key Dtilde compose-tilde-map) 223 (gtk-define-dead-key Dtilde compose-tilde-map device)
210 (gtk-define-dead-key Dring_accent compose-ring-map) 224 (gtk-define-dead-key Dring_accent compose-ring-map device)
211 225
212 ;; DEC according to OpenWindows 3: 226 ;; DEC according to OpenWindows 3:
213 (gtk-define-dead-key DXK_acute_accent compose-acute-map) 227 (gtk-define-dead-key DXK_acute_accent compose-acute-map device)
214 (gtk-define-dead-key DXK_grave_accent compose-grave-map) 228 (gtk-define-dead-key DXK_grave_accent compose-grave-map device)
215 (gtk-define-dead-key DXK_cedilla_accent compose-cedilla-map) 229 (gtk-define-dead-key DXK_cedilla_accent compose-cedilla-map device)
216 (gtk-define-dead-key DXK_circumflex_accent compose-circumflex-map) 230 (gtk-define-dead-key DXK_circumflex_accent compose-circumflex-map device)
217 (gtk-define-dead-key DXK_tilde compose-tilde-map) 231 (gtk-define-dead-key DXK_tilde compose-tilde-map device)
218 (gtk-define-dead-key DXK_ring_accent compose-ring-map) 232 (gtk-define-dead-key DXK_ring_accent compose-ring-map device)
219 233
220 ;; HP according to MIT: 234 ;; HP according to MIT:
221 (gtk-define-dead-key hpmute_acute compose-acute-map) 235 (gtk-define-dead-key hpmute_acute compose-acute-map device)
222 (gtk-define-dead-key hpmute_grave compose-grave-map) 236 (gtk-define-dead-key hpmute_grave compose-grave-map device)
223 (gtk-define-dead-key hpmute_diaeresis compose-diaeresis-map) 237 (gtk-define-dead-key hpmute_diaeresis compose-diaeresis-map device)
224 (gtk-define-dead-key hpmute_asciicircum compose-circumflex-map) 238 (gtk-define-dead-key hpmute_asciicircum compose-circumflex-map device)
225 (gtk-define-dead-key hpmute_asciitilde compose-tilde-map) 239 (gtk-define-dead-key hpmute_asciitilde compose-tilde-map device)
226 240
227 ;; Empirically discovered on Linux XFree86 MetroX: 241 ;; Empirically discovered on Linux XFree86 MetroX:
228 (gtk-define-dead-key usldead_acute compose-acute-map) 242 (gtk-define-dead-key usldead_acute compose-acute-map device)
229 (gtk-define-dead-key usldead_grave compose-grave-map) 243 (gtk-define-dead-key usldead_grave compose-grave-map device)
230 (gtk-define-dead-key usldead_diaeresis compose-diaeresis-map) 244 (gtk-define-dead-key usldead_diaeresis compose-diaeresis-map device)
231 (gtk-define-dead-key usldead_asciicircum compose-circumflex-map) 245 (gtk-define-dead-key usldead_asciicircum compose-circumflex-map device)
232 (gtk-define-dead-key usldead_asciitilde compose-tilde-map) 246 (gtk-define-dead-key usldead_asciitilde compose-tilde-map device)
233 247
234 ;; HP according to OpenWindows 3: 248 ;; HP according to OpenWindows 3:
235 (gtk-define-dead-key hpXK_mute_acute compose-acute-map) 249 (gtk-define-dead-key hpXK_mute_acute compose-acute-map device)
236 (gtk-define-dead-key hpXK_mute_grave compose-grave-map) 250 (gtk-define-dead-key hpXK_mute_grave compose-grave-map device)
237 (gtk-define-dead-key hpXK_mute_diaeresis compose-diaeresis-map) 251 (gtk-define-dead-key hpXK_mute_diaeresis compose-diaeresis-map device)
238 (gtk-define-dead-key hpXK_mute_asciicircum compose-circumflex-map) 252 (gtk-define-dead-key hpXK_mute_asciicircum compose-circumflex-map device)
239 (gtk-define-dead-key hpXK_mute_asciitilde compose-tilde-map) 253 (gtk-define-dead-key hpXK_mute_asciitilde compose-tilde-map device)
240 254
241 ;; HP according to HP-UX 8.0: 255 ;; HP according to HP-UX 8.0:
242 (gtk-define-dead-key XK_mute_acute compose-acute-map) 256 (gtk-define-dead-key XK_mute_acute compose-acute-map device)
243 (gtk-define-dead-key XK_mute_grave compose-grave-map) 257 (gtk-define-dead-key XK_mute_grave compose-grave-map device)
244 (gtk-define-dead-key XK_mute_diaeresis compose-diaeresis-map) 258 (gtk-define-dead-key XK_mute_diaeresis compose-diaeresis-map device)
245 (gtk-define-dead-key XK_mute_asciicircum compose-circumflex-map) 259 (gtk-define-dead-key XK_mute_asciicircum compose-circumflex-map device)
246 (gtk-define-dead-key XK_mute_asciitilde compose-tilde-map) 260 (gtk-define-dead-key XK_mute_asciitilde compose-tilde-map device)
247 261
248 ;; Xfree86 seems to use lower case and a hyphen 262 ;; Xfree86 seems to use lower case and a hyphen
249 (gtk-define-dead-key dead-acute compose-acute-map) 263 (gtk-define-dead-key dead-acute compose-acute-map device)
250 (gtk-define-dead-key dead-grave compose-grave-map) 264 (gtk-define-dead-key dead-grave compose-grave-map device)
251 (gtk-define-dead-key dead-cedilla compose-cedilla-map) 265 (gtk-define-dead-key dead-cedilla compose-cedilla-map device)
252 (gtk-define-dead-key dead-diaeresis compose-diaeresis-map) 266 (gtk-define-dead-key dead-diaeresis compose-diaeresis-map device)
253 (gtk-define-dead-key dead-circum compose-circumflex-map) 267 (gtk-define-dead-key dead-circum compose-circumflex-map device)
254 (gtk-define-dead-key dead-circumflex compose-circumflex-map) 268 (gtk-define-dead-key dead-circumflex compose-circumflex-map device)
255 (gtk-define-dead-key dead-tilde compose-tilde-map) 269 (gtk-define-dead-key dead-tilde compose-tilde-map device))
256 ) 270
257
258 (when (featurep 'gtk)
259 (add-hook
260 'create-console-hook
261 (lambda (console)
262 (letf (((selected-console) console))
263 (when (eq 'gtk (console-type console))
264 (gtk-initialize-compose))))))