385 |
|
|
386 |
extern Lisp_Object Vx_no_window_manager; |
extern Lisp_Object Vx_no_window_manager; |
387 |
|
|
388 |
extern Lisp_Object Qface, Qmouse_face; |
extern Lisp_Object Qface, Qmouse_face, Qeql; |
389 |
|
|
390 |
extern int errno; |
extern int errno; |
391 |
|
|
396 |
/* The keysyms to use for the various modifiers. */ |
/* The keysyms to use for the various modifiers. */ |
397 |
|
|
398 |
Lisp_Object Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym, Vx_super_keysym; |
Lisp_Object Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym, Vx_super_keysym; |
399 |
|
Lisp_Object Vx_keysym_table; |
400 |
static Lisp_Object Qalt, Qhyper, Qmeta, Qsuper, Qmodifier_value; |
static Lisp_Object Qalt, Qhyper, Qmeta, Qsuper, Qmodifier_value; |
401 |
|
|
402 |
static Lisp_Object Qvendor_specific_keysyms; |
static Lisp_Object Qvendor_specific_keysyms; |
10642 |
#endif /* not HAVE_X11R5 */ |
#endif /* not HAVE_X11R5 */ |
10643 |
)) |
)) |
10644 |
{ |
{ |
10645 |
|
Lisp_Object c; |
10646 |
|
|
10647 |
if (temp_index == sizeof temp_buffer / sizeof (short)) |
if (temp_index == sizeof temp_buffer / sizeof (short)) |
10648 |
temp_index = 0; |
temp_index = 0; |
10649 |
temp_buffer[temp_index++] = keysym; |
temp_buffer[temp_index++] = keysym; |
10650 |
bufp->kind = non_ascii_keystroke; |
if (! EQ ((c = Fgethash (make_number (keysym), |
10651 |
bufp->code = keysym; |
Vx_keysym_table, Qnil)), |
10652 |
|
Qnil)) |
10653 |
|
{ |
10654 |
|
bufp->kind = (ASCII_CHAR_P (c) |
10655 |
|
? ascii_keystroke |
10656 |
|
: multibyte_char_keystroke); |
10657 |
|
bufp->code = c; |
10658 |
|
} |
10659 |
|
else |
10660 |
|
{ |
10661 |
|
bufp->kind = non_ascii_keystroke; |
10662 |
|
bufp->code = keysym; |
10663 |
|
} |
10664 |
XSETFRAME (bufp->frame_or_window, f); |
XSETFRAME (bufp->frame_or_window, f); |
10665 |
bufp->arg = Qnil; |
bufp->arg = Qnil; |
10666 |
bufp->modifiers |
bufp->modifiers |
10685 |
temp_buffer[temp_index++] = copy_bufptr[i]; |
temp_buffer[temp_index++] = copy_bufptr[i]; |
10686 |
} |
} |
10687 |
|
|
|
if (/* If the event is not from XIM, */ |
|
|
event.xkey.keycode != 0 |
|
|
/* or the current locale doesn't request |
|
|
decoding of the input data, ... */ |
|
|
|| ! CODING_REQUIRE_DECODING (&coding)) |
|
|
{ |
|
|
/* ... we can use the input data as is. */ |
|
|
nchars = nbytes; |
|
|
} |
|
|
else |
|
10688 |
{ |
{ |
10689 |
/* We have to decode the input data. */ |
/* Decode the input data. */ |
10690 |
coding.destination |
coding.destination |
10691 |
= (unsigned char *) malloc (nbytes); |
= (unsigned char *) malloc (nbytes); |
10692 |
if (! coding.destination) |
if (! coding.destination) |
14495 |
struct font_info *font_info; |
struct font_info *font_info; |
14496 |
{ |
{ |
14497 |
XFontStruct *font = (XFontStruct *) font_info->font; |
XFontStruct *font = (XFontStruct *) font_info->font; |
|
struct charset *charset = CHARSET_FROM_ID (font_info->charset); |
|
14498 |
Lisp_Object table; |
Lisp_Object table; |
14499 |
int min_byte1, max_byte1, min_byte2, max_byte2; |
int min_byte1, max_byte1, min_byte2, max_byte2; |
14500 |
|
|
15299 |
default is nil, which is the same as `super'. */); |
default is nil, which is the same as `super'. */); |
15300 |
Vx_super_keysym = Qnil; |
Vx_super_keysym = Qnil; |
15301 |
|
|
15302 |
|
DEFVAR_LISP ("x-keysym-table", &Vx_keysym_table, |
15303 |
|
doc: /* Hash table of character codes indexed by X keysym codes. */); |
15304 |
|
Vx_keysym_table = make_hash_table (Qeql, make_number (800), |
15305 |
|
make_number (DEFAULT_REHASH_SIZE), |
15306 |
|
make_number (DEFAULT_REHASH_THRESHOLD), |
15307 |
|
Qnil, Qnil, Qnil); |
15308 |
} |
} |
15309 |
|
|
15310 |
#endif /* HAVE_X_WINDOWS */ |
#endif /* HAVE_X_WINDOWS */ |