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);