Mercurial > emacs
comparison src/xterm.c @ 48100:cffd13ef1a1d
(XTread_socket): Fix last change.
(xaw_scroll_callback): Cast call_data to long to avoid warning.
author | Dave Love <fx@gnu.org> |
---|---|
date | Thu, 31 Oct 2002 17:59:30 +0000 |
parents | 1c06bf924a62 |
children | afa06e8da62c |
comparison
equal
deleted
inserted
replaced
48099:ab12ea56fed7 | 48100:cffd13ef1a1d |
---|---|
8786 xaw_scroll_callback (widget, client_data, call_data) | 8786 xaw_scroll_callback (widget, client_data, call_data) |
8787 Widget widget; | 8787 Widget widget; |
8788 XtPointer client_data, call_data; | 8788 XtPointer client_data, call_data; |
8789 { | 8789 { |
8790 struct scroll_bar *bar = (struct scroll_bar *) client_data; | 8790 struct scroll_bar *bar = (struct scroll_bar *) client_data; |
8791 int position = (int) call_data; | 8791 /* The position really is stored cast to a pointer. */ |
8792 int position = (long) call_data; | |
8792 Dimension height; | 8793 Dimension height; |
8793 int part; | 8794 int part; |
8794 | 8795 |
8795 /* Get the height of the scroll bar. */ | 8796 /* Get the height of the scroll bar. */ |
8796 BLOCK_INPUT; | 8797 BLOCK_INPUT; |
10735 | 10736 |
10736 orig_keysym = keysym; | 10737 orig_keysym = keysym; |
10737 | 10738 |
10738 if (numchars > 1) | 10739 if (numchars > 1) |
10739 { | 10740 { |
10740 if (((keysym >= XK_BackSpace && keysym <= XK_Escape) | 10741 Lisp_Object c; |
10741 || keysym == XK_Delete | 10742 |
10743 /* First deal with keysyms which have defined | |
10744 translations to characters. */ | |
10745 if (keysym >= 32 && keysym < 128) | |
10746 /* Avoid explicitly decoding each ASCII character. */ | |
10747 { | |
10748 bufp->kind = ASCII_KEYSTROKE_EVENT; | |
10749 bufp->code = keysym; | |
10750 XSETFRAME (bufp->frame_or_window, f); | |
10751 bufp->arg = Qnil; | |
10752 bufp->modifiers | |
10753 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), | |
10754 modifiers); | |
10755 bufp->timestamp = event.xkey.time; | |
10756 bufp++; | |
10757 count++; | |
10758 numchars--; | |
10759 } | |
10760 /* Now non-ASCII. */ | |
10761 else if (! EQ ((c = Fgethash (make_number (keysym), | |
10762 Vx_keysym_table, Qnil)), | |
10763 Qnil)) | |
10764 { | |
10765 bufp->kind = (SINGLE_BYTE_CHAR_P (c) | |
10766 ? ASCII_KEYSTROKE_EVENT | |
10767 : MULTIBYTE_CHAR_KEYSTROKE_EVENT); | |
10768 bufp->code = c; | |
10769 XSETFRAME (bufp->frame_or_window, f); | |
10770 bufp->arg = Qnil; | |
10771 bufp->modifiers | |
10772 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), | |
10773 modifiers); | |
10774 bufp->timestamp = event.xkey.time; | |
10775 bufp++; | |
10776 count++; | |
10777 numchars--; | |
10778 } | |
10779 /* Random non-modifier sorts of keysyms. */ | |
10780 else if (((keysym >= XK_BackSpace && keysym <= XK_Escape) | |
10781 || keysym == XK_Delete | |
10742 #ifdef XK_ISO_Left_Tab | 10782 #ifdef XK_ISO_Left_Tab |
10743 || (keysym >= XK_ISO_Left_Tab && keysym <= XK_ISO_Enter) | 10783 || (keysym >= XK_ISO_Left_Tab |
10784 && keysym <= XK_ISO_Enter) | |
10744 #endif | 10785 #endif |
10745 || (keysym >= XK_Kanji && keysym <= XK_Eisu_toggle) | 10786 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ |
10746 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ | 10787 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */ |
10747 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */ | |
10748 #ifdef HPUX | 10788 #ifdef HPUX |
10749 /* This recognizes the "extended function keys". | 10789 /* This recognizes the "extended function |
10750 It seems there's no cleaner way. | 10790 keys". It seems there's no cleaner way. |
10751 Test IsModifierKey to avoid handling mode_switch | 10791 Test IsModifierKey to avoid handling |
10752 incorrectly. */ | 10792 mode_switch incorrectly. */ |
10753 || ((unsigned) (keysym) >= XK_Select | 10793 || ((unsigned) (keysym) >= XK_Select |
10754 && (unsigned)(keysym) < XK_KP_Space) | 10794 && (unsigned)(keysym) < XK_KP_Space) |
10755 #endif | 10795 #endif |
10756 #ifdef XK_dead_circumflex | 10796 #ifdef XK_dead_circumflex |
10757 || orig_keysym == XK_dead_circumflex | 10797 || orig_keysym == XK_dead_circumflex |
10758 #endif | 10798 #endif |
10759 #ifdef XK_dead_grave | 10799 #ifdef XK_dead_grave |
10760 || orig_keysym == XK_dead_grave | 10800 || orig_keysym == XK_dead_grave |
10761 #endif | 10801 #endif |
10762 #ifdef XK_dead_tilde | 10802 #ifdef XK_dead_tilde |
10763 || orig_keysym == XK_dead_tilde | 10803 || orig_keysym == XK_dead_tilde |
10764 #endif | 10804 #endif |
10765 #ifdef XK_dead_diaeresis | 10805 #ifdef XK_dead_diaeresis |
10766 || orig_keysym == XK_dead_diaeresis | 10806 || orig_keysym == XK_dead_diaeresis |
10767 #endif | 10807 #endif |
10768 #ifdef XK_dead_macron | 10808 #ifdef XK_dead_macron |
10769 || orig_keysym == XK_dead_macron | 10809 || orig_keysym == XK_dead_macron |
10770 #endif | 10810 #endif |
10771 #ifdef XK_dead_degree | 10811 #ifdef XK_dead_degree |
10772 || orig_keysym == XK_dead_degree | 10812 || orig_keysym == XK_dead_degree |
10773 #endif | 10813 #endif |
10774 #ifdef XK_dead_acute | 10814 #ifdef XK_dead_acute |
10775 || orig_keysym == XK_dead_acute | 10815 || orig_keysym == XK_dead_acute |
10776 #endif | 10816 #endif |
10777 #ifdef XK_dead_cedilla | 10817 #ifdef XK_dead_cedilla |
10778 || orig_keysym == XK_dead_cedilla | 10818 || orig_keysym == XK_dead_cedilla |
10779 #endif | 10819 #endif |
10780 #ifdef XK_dead_breve | 10820 #ifdef XK_dead_breve |
10781 || orig_keysym == XK_dead_breve | 10821 || orig_keysym == XK_dead_breve |
10782 #endif | 10822 #endif |
10783 #ifdef XK_dead_ogonek | 10823 #ifdef XK_dead_ogonek |
10784 || orig_keysym == XK_dead_ogonek | 10824 || orig_keysym == XK_dead_ogonek |
10785 #endif | 10825 #endif |
10786 #ifdef XK_dead_caron | 10826 #ifdef XK_dead_caron |
10787 || orig_keysym == XK_dead_caron | 10827 || orig_keysym == XK_dead_caron |
10788 #endif | 10828 #endif |
10789 #ifdef XK_dead_doubleacute | 10829 #ifdef XK_dead_doubleacute |
10790 || orig_keysym == XK_dead_doubleacute | 10830 || orig_keysym == XK_dead_doubleacute |
10791 #endif | 10831 #endif |
10792 #ifdef XK_dead_abovedot | 10832 #ifdef XK_dead_abovedot |
10793 || orig_keysym == XK_dead_abovedot | 10833 || orig_keysym == XK_dead_abovedot |
10794 #endif | 10834 #endif |
10795 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ | 10835 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ |
10796 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ | 10836 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ |
10797 /* Any "vendor-specific" key is ok. */ | 10837 /* Any "vendor-specific" key is ok. */ |
10798 || (orig_keysym & (1 << 28)) | 10838 || (orig_keysym & (1 << 28)) |
10799 || (keysym != NoSymbol && nbytes == 0)) | 10839 || (keysym != NoSymbol && nbytes == 0)) |
10800 && ! (IsModifierKey (orig_keysym) | 10840 && ! (IsModifierKey (orig_keysym) |
10801 #ifndef HAVE_X11R5 | 10841 #ifndef HAVE_X11R5 |
10802 #ifdef XK_Mode_switch | 10842 #ifdef XK_Mode_switch |
10803 || ((unsigned)(orig_keysym) == XK_Mode_switch) | 10843 || ((unsigned)(orig_keysym) == XK_Mode_switch) |
10804 #endif | 10844 #endif |
10805 #ifdef XK_Num_Lock | 10845 #ifdef XK_Num_Lock |
10806 || ((unsigned)(orig_keysym) == XK_Num_Lock) | 10846 || ((unsigned)(orig_keysym) == XK_Num_Lock) |
10807 #endif | 10847 #endif |
10808 #endif /* not HAVE_X11R5 */ | 10848 #endif /* not HAVE_X11R5 */ |
10809 /* The symbols from XK_ISO_Lock to | 10849 /* The symbols from XK_ISO_Lock |
10810 XK_ISO_Last_Group_Lock doesn't have real | 10850 to XK_ISO_Last_Group_Lock |
10811 modifiers but should be treated similarly | 10851 don't have real modifiers but |
10812 to Mode_switch by Emacs. */ | 10852 should be treated similarly to |
10853 Mode_switch by Emacs. */ | |
10813 #if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock | 10854 #if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock |
10814 || ((unsigned)(orig_keysym) >= XK_ISO_Lock | 10855 || ((unsigned)(orig_keysym) |
10815 && (unsigned)(orig_keysym) <= XK_ISO_Last_Group_Lock) | 10856 >= XK_ISO_Lock |
10857 && (unsigned)(orig_keysym) | |
10858 <= XK_ISO_Last_Group_Lock) | |
10816 #endif | 10859 #endif |
10817 )) | 10860 )) |
10818 { | 10861 { |
10819 Lisp_Object c; | |
10820 | |
10821 if (temp_index == sizeof temp_buffer / sizeof (short)) | 10862 if (temp_index == sizeof temp_buffer / sizeof (short)) |
10822 temp_index = 0; | 10863 temp_index = 0; |
10823 temp_buffer[temp_index++] = keysym; | 10864 temp_buffer[temp_index++] = keysym; |
10824 /* First deal with keysyms which have | 10865 /* make_lispy_event will convert this to a symbolic |
10825 defined translations to characters. */ | 10866 key. */ |
10826 if (keysym >= 32 && keysym < 128) | 10867 bufp->kind = NON_ASCII_KEYSTROKE_EVENT; |
10827 /* Avoid explicitly decoding each ASCII | 10868 bufp->code = keysym; |
10828 character. */ | |
10829 { | |
10830 bufp->kind = ASCII_KEYSTROKE_EVENT; | |
10831 bufp->code = c; | |
10832 } | |
10833 else if (! EQ ((c = Fgethash (make_number (keysym), | |
10834 Vx_keysym_table, | |
10835 Qnil)), | |
10836 Qnil)) | |
10837 { | |
10838 bufp->kind = (SINGLE_BYTE_CHAR_P (c) | |
10839 ? ASCII_KEYSTROKE_EVENT | |
10840 : MULTIBYTE_CHAR_KEYSTROKE_EVENT); | |
10841 bufp->code = c; | |
10842 } | |
10843 else | |
10844 { | |
10845 /* Not a character keysym. | |
10846 make_lispy_event will convert it to a | |
10847 symbolic key. */ | |
10848 bufp->kind = NON_ASCII_KEYSTROKE_EVENT; | |
10849 bufp->code = keysym; | |
10850 } | |
10851 XSETFRAME (bufp->frame_or_window, f); | 10869 XSETFRAME (bufp->frame_or_window, f); |
10852 bufp->arg = Qnil; | 10870 bufp->arg = Qnil; |
10853 bufp->modifiers | 10871 bufp->modifiers |
10854 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), | 10872 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), |
10855 modifiers); | 10873 modifiers); |