diff options
| author | Dave Love | 2002-10-31 17:57:54 +0000 |
|---|---|---|
| committer | Dave Love | 2002-10-31 17:57:54 +0000 |
| commit | f8220f0284fde94a4f6fae63bc362807e8153b22 (patch) | |
| tree | b3b62835c5e68a091f2d9d877a1d1af962efdef8 /src | |
| parent | 0b0c63c231a326b97c28979990c3e3ccdcd848b4 (diff) | |
| download | emacs-f8220f0284fde94a4f6fae63bc362807e8153b22.tar.gz emacs-f8220f0284fde94a4f6fae63bc362807e8153b22.zip | |
(XTread_socket): Fix changes for defined keysyms. Add
XK_ISO... case.
(xaw_scroll_callback): Revert last change.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xterm.c | 166 |
2 files changed, 100 insertions, 72 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 00ecbe554ea..9b6b9c74c23 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2002-10-31 Dave Love <fx@gnu.org> | ||
| 2 | |||
| 3 | * xterm.c (XTread_socket): Fix changes for defined keysyms. Add | ||
| 4 | XK_ISO... case. | ||
| 5 | (xaw_scroll_callback): Revert last change. | ||
| 6 | |||
| 1 | 2002-10-30 Kenichi Handa <handa@m17n.org> | 7 | 2002-10-30 Kenichi Handa <handa@m17n.org> |
| 2 | 8 | ||
| 3 | * charset.c (Fset_charset_priority): Update | 9 | * charset.c (Fset_charset_priority): Update |
diff --git a/src/xterm.c b/src/xterm.c index 889e62c3473..986d48353bd 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -8639,7 +8639,8 @@ xaw_scroll_callback (widget, client_data, call_data) | |||
| 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 | ||
| @@ -10550,130 +10551,151 @@ XTread_socket (sd, bufp, numchars, expected) | |||
| 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 |
| @@ -10698,7 +10720,7 @@ XTread_socket (sd, bufp, numchars, expected) | |||
| 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); |