Mercurial > emacs
comparison src/xterm.c @ 89272:5fd1925653b3
(XTread_socket): Fix changes for defined keysyms. Add
XK_ISO... case.
(xaw_scroll_callback): Revert last change.
author | Dave Love <fx@gnu.org> |
---|---|
date | Thu, 31 Oct 2002 17:55:03 +0000 |
parents | 25c1826d3baa |
children | 4f46c53eb254 |
comparison
equal
deleted
inserted
replaced
89271:6d05c3c16a01 | 89272:5fd1925653b3 |
---|---|
8637 xaw_scroll_callback (widget, client_data, call_data) | 8637 xaw_scroll_callback (widget, client_data, call_data) |
8638 Widget widget; | 8638 Widget widget; |
8639 XtPointer client_data, call_data; | 8639 XtPointer client_data, call_data; |
8640 { | 8640 { |
8641 struct scroll_bar *bar = (struct scroll_bar *) client_data; | 8641 struct scroll_bar *bar = (struct scroll_bar *) client_data; |
8642 int position = *(int *) call_data; | 8642 /* The position really is stored cast to a pointer. */ |
8643 int position = (long) call_data; | |
8643 Dimension height; | 8644 Dimension height; |
8644 int part; | 8645 int part; |
8645 | 8646 |
8646 /* Get the height of the scroll bar. */ | 8647 /* Get the height of the scroll bar. */ |
8647 BLOCK_INPUT; | 8648 BLOCK_INPUT; |
10548 | 10549 |
10549 orig_keysym = keysym; | 10550 orig_keysym = keysym; |
10550 | 10551 |
10551 if (numchars > 1) | 10552 if (numchars > 1) |
10552 { | 10553 { |
10553 if (((keysym >= XK_BackSpace && keysym <= XK_Escape) | 10554 Lisp_Object c; |
10554 || keysym == XK_Delete | 10555 |
10556 /* First deal with keysyms which have defined | |
10557 translations to characters. */ | |
10558 if (keysym >= 32 && keysym < 128) | |
10559 /* Avoid explicitly decoding each ASCII character. */ | |
10560 { | |
10561 bufp->kind = ascii_keystroke; | |
10562 bufp->code = keysym; | |
10563 XSETFRAME (bufp->frame_or_window, f); | |
10564 bufp->arg = Qnil; | |
10565 bufp->modifiers | |
10566 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), | |
10567 modifiers); | |
10568 bufp->timestamp = event.xkey.time; | |
10569 bufp++; | |
10570 count++; | |
10571 numchars--; | |
10572 } | |
10573 /* Now non-ASCII. */ | |
10574 else if (! EQ ((c = Fgethash (make_number (keysym), | |
10575 Vx_keysym_table, Qnil)), | |
10576 Qnil)) | |
10577 { | |
10578 bufp->kind = (ASCII_CHAR_P (c) | |
10579 ? ascii_keystroke | |
10580 : multibyte_char_keystroke); | |
10581 bufp->code = c; | |
10582 XSETFRAME (bufp->frame_or_window, f); | |
10583 bufp->arg = Qnil; | |
10584 bufp->modifiers | |
10585 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), | |
10586 modifiers); | |
10587 bufp->timestamp = event.xkey.time; | |
10588 bufp++; | |
10589 count++; | |
10590 numchars--; | |
10591 } | |
10592 else if (((keysym >= XK_BackSpace && keysym <= XK_Escape) | |
10593 || keysym == XK_Delete | |
10555 #ifdef XK_ISO_Left_Tab | 10594 #ifdef XK_ISO_Left_Tab |
10556 || (keysym >= XK_ISO_Left_Tab && keysym <= XK_ISO_Enter) | 10595 || (keysym >= XK_ISO_Left_Tab && keysym <= XK_ISO_Enter) |
10557 #endif | 10596 #endif |
10558 || (keysym >= XK_Kanji && keysym <= XK_Eisu_toggle) | 10597 || (keysym >= XK_Kanji && keysym <= XK_Eisu_toggle) |
10559 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ | 10598 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ |
10560 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */ | 10599 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */ |
10561 #ifdef HPUX | 10600 #ifdef HPUX |
10562 /* This recognizes the "extended function keys". | 10601 /* This recognizes the "extended function |
10563 It seems there's no cleaner way. | 10602 keys". It seems there's no cleaner way. |
10564 Test IsModifierKey to avoid handling mode_switch | 10603 Test IsModifierKey to avoid handling |
10565 incorrectly. */ | 10604 mode_switch incorrectly. */ |
10566 || ((unsigned) (keysym) >= XK_Select | 10605 || ((unsigned) (keysym) >= XK_Select |
10567 && (unsigned)(keysym) < XK_KP_Space) | 10606 && (unsigned)(keysym) < XK_KP_Space) |
10568 #endif | 10607 #endif |
10569 #ifdef XK_dead_circumflex | 10608 #ifdef XK_dead_circumflex |
10570 || orig_keysym == XK_dead_circumflex | 10609 || orig_keysym == XK_dead_circumflex |
10571 #endif | 10610 #endif |
10572 #ifdef XK_dead_grave | 10611 #ifdef XK_dead_grave |
10573 || orig_keysym == XK_dead_grave | 10612 || orig_keysym == XK_dead_grave |
10574 #endif | 10613 #endif |
10575 #ifdef XK_dead_tilde | 10614 #ifdef XK_dead_tilde |
10576 || orig_keysym == XK_dead_tilde | 10615 || orig_keysym == XK_dead_tilde |
10577 #endif | 10616 #endif |
10578 #ifdef XK_dead_diaeresis | 10617 #ifdef XK_dead_diaeresis |
10579 || orig_keysym == XK_dead_diaeresis | 10618 || orig_keysym == XK_dead_diaeresis |
10580 #endif | 10619 #endif |
10581 #ifdef XK_dead_macron | 10620 #ifdef XK_dead_macron |
10582 || orig_keysym == XK_dead_macron | 10621 || orig_keysym == XK_dead_macron |
10583 #endif | 10622 #endif |
10584 #ifdef XK_dead_degree | 10623 #ifdef XK_dead_degree |
10585 || orig_keysym == XK_dead_degree | 10624 || orig_keysym == XK_dead_degree |
10586 #endif | 10625 #endif |
10587 #ifdef XK_dead_acute | 10626 #ifdef XK_dead_acute |
10588 || orig_keysym == XK_dead_acute | 10627 || orig_keysym == XK_dead_acute |
10589 #endif | 10628 #endif |
10590 #ifdef XK_dead_cedilla | 10629 #ifdef XK_dead_cedilla |
10591 || orig_keysym == XK_dead_cedilla | 10630 || orig_keysym == XK_dead_cedilla |
10592 #endif | 10631 #endif |
10593 #ifdef XK_dead_breve | 10632 #ifdef XK_dead_breve |
10594 || orig_keysym == XK_dead_breve | 10633 || orig_keysym == XK_dead_breve |
10595 #endif | 10634 #endif |
10596 #ifdef XK_dead_ogonek | 10635 #ifdef XK_dead_ogonek |
10597 || orig_keysym == XK_dead_ogonek | 10636 || orig_keysym == XK_dead_ogonek |
10598 #endif | 10637 #endif |
10599 #ifdef XK_dead_caron | 10638 #ifdef XK_dead_caron |
10600 || orig_keysym == XK_dead_caron | 10639 || orig_keysym == XK_dead_caron |
10601 #endif | 10640 #endif |
10602 #ifdef XK_dead_doubleacute | 10641 #ifdef XK_dead_doubleacute |
10603 || orig_keysym == XK_dead_doubleacute | 10642 || orig_keysym == XK_dead_doubleacute |
10604 #endif | 10643 #endif |
10605 #ifdef XK_dead_abovedot | 10644 #ifdef XK_dead_abovedot |
10606 || orig_keysym == XK_dead_abovedot | 10645 || orig_keysym == XK_dead_abovedot |
10607 #endif | 10646 #endif |
10608 #ifdef XK_dead_abovering | 10647 #ifdef XK_dead_abovering |
10609 || orig_keysym == XK_dead_abovering | 10648 || orig_keysym == XK_dead_abovering |
10610 #endif | 10649 #endif |
10611 #ifdef XK_dead_iota | 10650 #ifdef XK_dead_iota |
10612 || orig_keysym == XK_dead_iota | 10651 || orig_keysym == XK_dead_iota |
10613 #endif | 10652 #endif |
10614 #ifdef XK_dead_belowdot | 10653 #ifdef XK_dead_belowdot |
10615 || orig_keysym == XK_dead_belowdot | 10654 || orig_keysym == XK_dead_belowdot |
10616 #endif | 10655 #endif |
10617 #ifdef XK_dead_voiced_sound | 10656 #ifdef XK_dead_voiced_sound |
10618 || orig_keysym == XK_dead_voiced_sound | 10657 || orig_keysym == XK_dead_voiced_sound |
10619 #endif | 10658 #endif |
10620 #ifdef XK_dead_semivoiced_sound | 10659 #ifdef XK_dead_semivoiced_sound |
10621 || orig_keysym == XK_dead_semivoiced_sound | 10660 || orig_keysym == XK_dead_semivoiced_sound |
10622 #endif | 10661 #endif |
10623 #ifdef XK_dead_hook | 10662 #ifdef XK_dead_hook |
10624 || orig_keysym == XK_dead_hook | 10663 || orig_keysym == XK_dead_hook |
10625 #endif | 10664 #endif |
10626 #ifdef XK_dead_horn | 10665 #ifdef XK_dead_horn |
10627 || orig_keysym == XK_dead_horn | 10666 || orig_keysym == XK_dead_horn |
10628 #endif | 10667 #endif |
10629 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ | 10668 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ |
10630 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ | 10669 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ |
10631 /* Any "vendor-specific" key is ok. */ | 10670 /* Any "vendor-specific" key is ok. */ |
10632 || (orig_keysym & (1 << 28)) | 10671 || (orig_keysym & (1 << 28)) |
10633 || (keysym != NoSymbol && nbytes == 0)) | 10672 || (keysym != NoSymbol && nbytes == 0)) |
10634 && ! (IsModifierKey (orig_keysym) | 10673 && ! (IsModifierKey (orig_keysym) |
10635 #ifndef HAVE_X11R5 | 10674 #ifndef HAVE_X11R5 |
10636 #ifdef XK_Mode_switch | 10675 #ifdef XK_Mode_switch |
10637 || ((unsigned)(orig_keysym) == XK_Mode_switch) | 10676 || ((unsigned)(orig_keysym) == XK_Mode_switch) |
10638 #endif | 10677 #endif |
10639 #ifdef XK_Num_Lock | 10678 #ifdef XK_Num_Lock |
10640 || ((unsigned)(orig_keysym) == XK_Num_Lock) | 10679 || ((unsigned)(orig_keysym) == XK_Num_Lock) |
10641 #endif | 10680 #endif |
10642 #endif /* not HAVE_X11R5 */ | 10681 #endif /* not HAVE_X11R5 */ |
10643 )) | 10682 /* The symbols from XK_ISO_Lock to |
10683 XK_ISO_Last_Group_Lock doesn't have | |
10684 real modifiers but should be treated | |
10685 similarly to Mode_switch by Emacs. */ | |
10686 #if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock | |
10687 || ((unsigned)(orig_keysym) >= XK_ISO_Lock | |
10688 && (unsigned)(orig_keysym) <= XK_ISO_Last_Group_Lock) | |
10689 #endif | |
10690 )) | |
10644 { | 10691 { |
10645 Lisp_Object c; | |
10646 | |
10647 if (temp_index == sizeof temp_buffer / sizeof (short)) | 10692 if (temp_index == sizeof temp_buffer / sizeof (short)) |
10648 temp_index = 0; | 10693 temp_index = 0; |
10649 temp_buffer[temp_index++] = keysym; | 10694 temp_buffer[temp_index++] = keysym; |
10650 /* First deal with keysyms which have | 10695 /* make_lispy_event will convert this to a symbolic |
10651 defined translations to characters. */ | 10696 key. */ |
10652 if (keysym >= 32 && keysym < 128) | 10697 bufp->kind = non_ascii_keystroke; |
10653 /* Fixme: Is this always right? It avoids | 10698 bufp->code = keysym; |
10654 explicitly decoding each ASCII character. */ | |
10655 { | |
10656 bufp->kind = ascii_keystroke; | |
10657 bufp->code = c; | |
10658 } | |
10659 else if (! EQ ((c = Fgethash (make_number (keysym), | |
10660 Vx_keysym_table, | |
10661 Qnil)), | |
10662 Qnil)) | |
10663 { | |
10664 bufp->kind = (ASCII_CHAR_P (c) | |
10665 ? ascii_keystroke | |
10666 : multibyte_char_keystroke); | |
10667 bufp->code = c; | |
10668 } | |
10669 else | |
10670 /* Not a character keysym. | |
10671 make_lispy_event will convert it to a | |
10672 symbolic key. */ | |
10673 { | |
10674 bufp->kind = non_ascii_keystroke; | |
10675 bufp->code = keysym; | |
10676 } | |
10677 XSETFRAME (bufp->frame_or_window, f); | 10699 XSETFRAME (bufp->frame_or_window, f); |
10678 bufp->arg = Qnil; | 10700 bufp->arg = Qnil; |
10679 bufp->modifiers | 10701 bufp->modifiers |
10680 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), | 10702 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), |
10681 modifiers); | 10703 modifiers); |
10696 / sizeof (short))) | 10718 / sizeof (short))) |
10697 temp_index = 0; | 10719 temp_index = 0; |
10698 temp_buffer[temp_index++] = copy_bufptr[i]; | 10720 temp_buffer[temp_index++] = copy_bufptr[i]; |
10699 } | 10721 } |
10700 | 10722 |
10701 { | 10723 { |
10702 /* Decode the input data. */ | 10724 /* Decode the input data. */ |
10703 coding.destination | 10725 coding.destination |
10704 = (unsigned char *) malloc (nbytes); | 10726 = (unsigned char *) malloc (nbytes); |
10705 if (! coding.destination) | 10727 if (! coding.destination) |
10706 break; | 10728 break; |