4.4BSD/usr/src/contrib/X11R5-hp300/mit/server/ddx/hpbsd/input/X11/XHPlib.h

Compare this file to the similar file:
Show the results in this format:

#ifndef XHPLIB_H
#define XHPLIB_H
/* $Header: /host/kaukau/disk2/X11R5/R5-hp300/mit/server/ddx/hpbsd/input/X11/RCS/XHPlib.h,v 1.1 1992/09/30 03:15:29 root Exp $ */

/* Definitions used by Xlib and the client */

#include "XHPproto.h"
#ifndef _NO_PROTO
#if    !defined(__STDC__) && !defined(__cplusplus) && !defined(c_plusplus)
#define _NO_PROTO
#endif /* __STDC__ */
#endif /* _NO_PROTO */


#ifndef _XLIB_H_
#include <X11/Xlib.h>
#endif
#ifndef _XUTIL_H_
#include <X11/Xutil.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

#define GENERAL_PROMPT			0
#define PROMPT_1			1
#define PROMPT_2			2
#define PROMPT_3			3
#define PROMPT_4			4
#define PROMPT_5			5
#define PROMPT_6			6
#define PROMPT_7			7

#define GENERAL_ACKNOWLEDGE		0
#define ACKNOWLEDGE_1			1
#define ACKNOWLEDGE_2			2
#define ACKNOWLEDGE_3			3
#define ACKNOWLEDGE_4			4
#define ACKNOWLEDGE_5			5
#define ACKNOWLEDGE_6			6
#define ACKNOWLEDGE_7			7

#define HPDeviceKeyPressreq		1
#define HPDeviceKeyReleasereq		2
#define HPDeviceButtonPressreq		3
#define HPDeviceButtonReleasereq	4
#define HPDeviceMotionNotifyreq		5
#define HPDeviceFocusInreq		6
#define HPDeviceFocusOutreq		7
#define HPProximityInreq		8
#define HPProximityOutreq		9
#define HPDeviceKeymapNotifyreq		10
#define HPDeviceMappingNotifyreq	11

extern	int	HPDeviceKeyPress;
extern	int	HPDeviceKeyRelease;
extern	int	HPDeviceButtonPress;
extern	int	HPDeviceButtonRelease;
extern	int	HPDeviceMotionNotify;
extern	int	HPDeviceFocusIn;
extern	int	HPDeviceFocusOut;
extern	int	HPProximityIn;
extern	int	HPProximityOut;
extern	int	HPDeviceKeymapNotify;
extern	int	HPDeviceMappingNotify;

typedef	int	(*PtrFuncInt) ();

typedef unsigned long	XHPFilterId;

/* structure used to split events queue between drivers and client */

typedef struct    _XHProutines	*_XHPrtnptr;

typedef struct _XHProutines
    {
    Display	*display;
    XHPFilterId	id;
    Window	window;
    Mask	std_filtermask;
    Mask	std_clientmask;
    Mask	ext_filtermask[MAX_LOGICAL_DEVS];
    Mask	ext_clientmask[MAX_LOGICAL_DEVS];
    int		(*callback) ();
    int		state_info;
    _XHPrtnptr	next;
    } XHProutines;

typedef struct 
    {
    XKeyEvent	ev;
    XID		deviceid;
    } XHPDeviceKeyEvent;

/***************************************************************
 *
 * The location of the X pointer is reported in the coordinate
 * fields of the ev member.  The location of the device
 * is determined from the previous DeviceMotionNotify event.
 *
 */

typedef struct {
    XButtonEvent	ev;
    XID			deviceid;
    } XHPDeviceButtonEvent;

/***************************************************************
 *
 * The ax_num and ax_val fields contain the data reported by the
 * device.  The values may be absolute or relative.  Any axis
 * whose value changes will be reported.
 *
 */

typedef struct 
    {
    int           	ax_num;
    int			ax_val;
    } XHPAxis_data;

/****************************************************************************
 *
 * Bug fix for alignment problem on s700/ s800.
 *
 * XHPDeviceMotionEvent embeds an XMotionEvent struct.  The XMotionEvent
 * struct contains a char followed by an int.  68k CPUs add one byte of 
 * padding to align the int on a 16-bit boundary.  PA-RISC CPUs add three
 * bytes of padding to align the int on a 32-bit boudary.  The result is 
 * that XMotionEvent structs are 58 bytes on 68k CPUs and 60 bytes on
 * PA-RISC CPUs.  
 *
 * The size is critical because the XHPScreen_events routine assumes that all
 * HP input extension events contain a device id in bytes 60 - 63.
 *
 * The right way to fix this would be to define a 60-byte
 * array and make it a union with the ev field, but this would break existing
 * clients that reference this field.
 *
 * Instead we will ifdef the struct to make the padding come out right.
 * A side effect of this is that on machines with 32-bit alignment, there's
 * only room for 3 elements in the data array field, since the total XEvent
 * size is 96 bytes.  This is probably ok, since no HP input devices report more
 * than 3 axes of motion.  We will leave the s300 definition at 4 elements,
 * since it was originally defined that way.  We will also put in code to
 * cause a compiler error for undefined machines.
 *
 *  Mea culpa,   ---gms
 */

typedef struct 
    {
#if defined(__hp9000s300) || defined(__apollo)	|| defined(hp300) /* 68k aligns to 16 bits */
    XMotionEvent	ev;		
    char		pad;	
    unsigned char	axes_count;
    XID			deviceid;	
    XHPAxis_data	data[4];
#else 
#if defined(__hp9000s800) || defined(__hp9000s700)	/* 32-bit alignment */
    XMotionEvent	ev;
    XID			deviceid;
    XHPAxis_data	data[3];
    unsigned char	axes_count;
#else
#if defined(__hp_osf) && defined(__mc68000)
    XMotionEvent	ev;		
    char		pad;	
    unsigned char	axes_count;
    XID			deviceid;	
    XHPAxis_data	data[4];
#else 
#if defined(__hp_osf) && defined(__pa_risc)
    XMotionEvent	ev;
    XID			deviceid;
    XHPAxis_data	data[3];
    unsigned char	axes_count;
#else 
This is a bogus line to force a compiler error on undefined machines - gms.
#endif
#endif
#endif
#endif
    } XHPDeviceMotionEvent;

typedef struct 
    {
    XFocusChangeEvent	ev;
    char		pad[32];
    XID			deviceid;
    char		pad1[2];
    } XHPDeviceFocusChangeEvent;

typedef struct 
    {
    XMappingEvent	ev;
    char		pad[28];
    XID			deviceid;
    char		pad1[2];
    } XHPDeviceMappingEvent;

typedef struct 
    {
    int type;			/* ProximityIn or ProximityOut */
    unsigned long serial;	/* # of last request processed by server */
    Bool send_event;		/* true if this came from a SendEvent request */
    Display *display;		/* Display the event was read from */
    Window window;		/* window of event */
    Window root;	        /* root window that the event occured on */
    Window subwindow;		/* child window */
    Time time;			/* milliseconds */
    int x, y;			/* pointer x, y coordinates in event window */
    int x_root, y_root;		/* coordinates relative to root */
    unsigned int state;		/* key or button mask */
    Bool same_screen;		/* same screen flag */
    char pad[4];
    XID	deviceid;
    char pad1[2];
    } XHPProximityNotifyEvent;
typedef XHPProximityNotifyEvent XHPProximityInEvent;
typedef XHPProximityNotifyEvent XHPProximityOutEvent;

/* generated on EnterWindow and FocusIn  when KeyMapState selected */
typedef struct {
    int type;
    unsigned long serial;	/* # of last request processed by server */
    Bool send_event;		/* true if this came from a SendEvent request */
    Display *display;		/* Display the event was read from */
    Window window;
    char key_vector[32];
    char pad[8];
    XID	deviceid;
} XHPDeviceKeymapEvent;	

typedef struct 
    {
    char pad[60];
    XID	deviceid;
    } XHP_AnyEvent;

typedef struct 
    {
    unsigned int  	resolution;
    unsigned short	min_val;
    unsigned short	max_val;
    } XHPaxis_info;

typedef struct 
    {
    XID			x_id;
    char		*name;
    XHPaxis_info	*axes;
    unsigned short	type;
    unsigned short	min_keycode;
    unsigned short	max_keycode;
    unsigned char	hil_id;
    unsigned char	mode;
    unsigned char	num_axes;
    unsigned char	num_buttons;
    unsigned char	num_keys;
    unsigned char	io_byte;
    unsigned short	detailed_id;
    unsigned char	pad[6];
    } XHPDeviceList;

typedef struct {
        int key_click_percent;
        int bell_percent;
        int bell_pitch;
        int bell_duration;
        int led;
        int led_mode;
        int key;
        int auto_repeat_mode;   /* On, Off, Default */
        int accelNumerator;
        int accelDenominator;
        int threshold;
} XHPDeviceControl;

/* Data structure for XHPGetDeviceControl */

typedef struct {
        int key_click_percent;
	int bell_percent;
	unsigned int bell_pitch, bell_duration;
	unsigned long led_mask;
	int global_auto_repeat;
	int accelNumerator;
	int accelDenominator;
	int threshold;
	char auto_repeats[32];
} XHPDeviceState;

typedef struct {
        Time time;
	unsigned short *data;
} XHPTimeCoord;


/* This structure is used to pass Nlio ioctl style commands
 * to the Nlio server */

#define XNHPNlioctl "HPNlioctl"

typedef struct {
    int cmd;
    XPointer arg;
    int ret;
} XhpNlioCmd;

/* These are the structures used for the XHPNlioctl call */

typedef struct {
    int flags;
    KeySym invoke_nlio;
    KeySym terminate_nlio;
    KeySym set_alternate;
    KeySym unset_alternate;
} K16_state;

/* These are the commands for the XHPNlioctl call */
#include <sys/ioctl.h>
#define K16_FOCUS_IN    _IO('X', 100)
#define K16_FOCUS_OUT   _IO('X', 101)

#define K16_EXEC_PROC	1
#define K16_KILL_PROC	2
#define K16_GET_STATEKEYS 3
#define K16_SET_STATEKEYS 4
#define K16_ALT_ON 5
#define K16_NLIO_ON 6
#define K16_IS_PROC 7
#define K16_GET_ENCODING 8
#define K16_SET_ENCODING 9

#define K16_NLIOSTATE  1
#define K16_ALTSTATE   2

/* The following block of defines are required for XHPSetKeyboardMapping */

#define DEF_FILENAME	"XHPKeymaps"
#ifndef DEF_DIRECTORY
#define DEF_DIRECTORY	"/usr/lib/X11/"
#endif
#define VERIFY_MAGIC	"HPKeyMap Rev 1.0"

#define MAGIC_SIZE 20

struct XHP_keymap_header {
    int kbd;
    int offset;
    int size;
};

#define HPK_KEYDEVICE_NAME_TABLE_ID	19998
#define HPK_MODMAP_TABLE_ID		19999
#define HPK_FIRST_RESERVED_ID		20000

typedef struct
{
  int keydevice_id, min_keycode, max_keycode, columns;
  char *name, *modmap_name;
} HPKKeyDeviceInfo;

#define MODMAP_SIZE 256		/* aka MAP_LENGTH in server/include/input.h */

typedef struct
{
  char *modmap_name;
  CARD8 modmap[MODMAP_SIZE];
} HPKModMap;


/* Error values returned by XHPSetKeyboardMapping                            */

#define XHPKB_NOKEYFILE 	1
#define XHPKB_BADMAGIC 		2
#define XHPKB_BADKBID 		3
#define XHPKB_NONHPINPUTDEV 	4
#define XHPKB_NOMEM	 	5

/* In the following list, several of the constants have duplicate names.
   The duplicate names were added to provide a consistent name for the
   tokens (i.e. each name represents a language). The original version
   mixed country names and language names.                                    */

#define KB_US_English 0         /* For use with HP46021A */
#define KB_Latin_Spanish 1	/* For use with HP46021AM */
#define KB_Katakana 2		/* For use with HP46021AJ */
#define KB_Danish 3		/* For use with HP46021AY */
#define KB_French 4		/* For use with HP46021AF */
#define KB_Norwegian 5		/* For use with HP46021AN */
#define KB_Swiss_German 6	/* For use with HP46020AP
				  : HIL-ID(lower 5 bits)=19h */
#define KB_Canada_French 7	/* For use with HP46021AC */
#define KB_UK_English 8		/* For use with HP46021AU */
#define KB_Finnish 9		/* For use with HP46021AX */
#define KB_Belgian 10		/* For use with HP46021AW */
#define KB_Swiss_German2 11	/* For use with HP46021AP */
#define KB_Euro_Spanish 12	/* For use with HP46021AE */
#define KB_Swiss_French2 13	/* For use with HP46021AQ */
#define KB_T_Chinese 14  	/* Trad. Chinese (ROC): For HP46021W#ZAA */
#define KB_S_Chinese 15  	/* Simp. Chinese (PROC): For HP40621W#ZAC */
#define KB_German 16		/* For use with HP46021AD */
#define KB_Swedish 17		/* For use with HP46021AS */
#define KB_Dutch 18		/* For use with HP46021AH */
#define KB_Korean 19     	/* Korean: For HP40621W#ZAB */ 
#define KB_Italian 20		/* For use with HP46021AZ */
#define KB_Canada_English 21	/* For use with HP46021AL */
#define KB_Swiss_French 22	/* For use with HP46020AQ
				  : HIL-ID(lower 5 bits)=03h */
#define KB_Japanese 23		/* For use with HP46021W#ZAL */

	/* ITF ethereal keyboards */
#define KB_Hebrew		100	/* Hebrew Keymap - NO KEYBOARD */
#define KB_Cyrillic		101	/* Cyrillic Keymap - NO KEYBOARD */
#define KB_Czech		102	/* Czech Keymap - NO KEYBOARD */
#define KB_Hungarian		103	/* Hungarian Keymap - NO KEYBOARD */
#define KB_SerboCroatian	104	/* SerboCroatian Keymap - NO KEYBOARD */
#define KB_Polish		105	/* Polish Keymap - NO KEYBOARD */
#define KB_Romanian		106	/* Romanian Keymap - NO KEYBOARD */
#define KB_Rumanian		106	/* alternate spelling */
#define KB_Turkish		107	/* Turkey Keymap - NO KEYBOARD */
#define KB_Greek		108	/* Greek Keymap - NO KEYBOARD */
#define KB_Arabic		109	/* Greek Keymap - NO KEYBOARD */


	/* PS2 ethereal keyboards (which may never exist) */
#define KB_PS2_Hebrew		150	/* Hebrew Keymap - NO KEYBOARD */
#define KB_PS2_Cyrillic		151	/* Cyrillic Keymap - NO KEYBOARD */
#define KB_PS2_Czech		152	/* Czech Keymap - NO KEYBOARD */
#define KB_PS2_Hungarian	153	/* Hungarian Keymap - NO KEYBOARD */
#define KB_PS2_SerboCroatian	154	/* SerboCroatian Keymap - NO KEYBOARD */
#define KB_PS2_Polish		155	/* Polish Keymap - NO KEYBOARD */
#define KB_PS2_Romanian		156	/* Romanian Keymap - NO KEYBOARD */
#define KB_PS2_Rumanian 	156	/* alternate spelling */
#define KB_PS2_Turkish		157	/* Turkey Keymap - NO KEYBOARD */
#define KB_PS2_Greek		158	/* Greek Keymap - NO KEYBOARD */
#define KB_PS2_Arabic		159	/* Greek Keymap - NO KEYBOARD */

/* ******************** HP hil PS2 keyboards *************** */

#define KB_PS2_US_English	60
#define KB_PS2_Latin_Spanish	61
#define KB_PS2_Katakana		62
#define KB_PS2_Danish		63
#define KB_PS2_French		64
#define KB_PS2_Norwegian	65
#define KB_PS2_Swiss_German	66
#define KB_PS2_Canada_French	67
#define KB_PS2_UK_English	68
#define KB_PS2_Finnish		69
#define KB_PS2_Belgian		70
#define KB_PS2_Swiss_German2	71
#define KB_PS2_Euro_Spanish	72
#define KB_PS2_Swiss_French2	73
#define KB_PS2_T_Chinese	74
#define KB_PS2_S_Chinese	75
#define KB_PS2_German		76
#define KB_PS2_Swedish		77
#define KB_PS2_Dutch		78
#define KB_PS2_Korean		79
#define KB_PS2_Italian		80
#define KB_PS2_Canada_English	84
#define KB_PS2_Swiss_French	88
#define KB_PS2_Japanese		89

#define KB_NULL		201	/* Device that needs a null keymap, modmap */
#define KB_BUTTON_BOX	202	/* HP button box(es) */
#define KB_BARCODE_WAND	203	/* HP barcode reader */

#define KB_HPUNSUPP -1		/* For unsupported HP keyboards */
#define KB_NONHP -2		/* For non-HP keyboards (for internal use) */

typedef	int  KEYBOARD_ID;

/* Function definitions for clients. */

Status      XHPSetKeyboardMapping();
KEYBOARD_ID XHPGetKeyboardID();

/* End of entries required for XHPSetKeyboardMapping. */

typedef struct {
	unsigned char * iso7to8;
	unsigned char * iso8to7;
	char ** mute8to7;
	unsigned int mutekey;
} _XHP_transptrs;

#define _XHP_ISO7To8(status,index) \
	((_XHP_transptrs *) ((status)->compose_ptr)) -> iso7to8 [index]

#define _XHP_ISO8To7(status,index) \
	((_XHP_transptrs *) ((status)->compose_ptr)) -> iso8to7 [index]

#define	_XHP_MUTE8To7(status,index) \
	((_XHP_transptrs *) ((status)->compose_ptr)) -> mute8to7[index-128]

#define XHPInputInit(dpy,status) XHPNlioctl(dpy,status,K16_EXEC_PROC)

#define XHPSetKbdMapInit(dpy,kbd,frc,status) \
    { \
	XHPNlioctl(dpy,status,K16_KILL_PROC); \
	XHPSetKeyboardMapping(dpy,kbd,frc); \
	XHPNlioctl(dpy,status,K16_EXEC_PROC); \
    } 

/* These are the tags in the compose structure for the different convert
 * routines
 */

#define _XHP_INP_NLIO  0x81000000
#define _XHP_INP_ROM8  0x82000000
#define _XHP_INP_7SUB  0x84000000

/* Function definitions for client programs */

PtrFuncInt 	XHPSetErrorHandler();
XFontStruct     *XHPGet16bitMixedFontStruct();

#ifdef _NO_PROTO
extern PtrFuncInt XHPGetEurasianCvt() ;
extern int XGetHpKeyboardId() ;
extern int XHPAcknowledge() ;
extern int XHPDeviceAutoRepeatOff() ;
extern int XHPDeviceAutoRepeatOn() ;
extern int XHPChangeDeviceControl() ;
extern int XHPChangeDeviceKeyMapping() ;
extern int XHPDisableReset() ;
extern int XHPDisableReset() ;
extern int XHPFreeDeviceList() ;
extern XHPTimeCoord * XHPGetDeviceMotionEvents() ;
extern KeySym * XHPGetDeviceKeyMapping() ;
extern XModifierKeymap * XHPGetDeviceModifierMapping() ;
extern int XHPGetServerMode() ;
extern int XHPGrabDeviceButton() ;
extern int XHPGrabDeviceKey() ;
extern int XHPGrabReset() ;
extern int XHPGrabDevice() ;
extern int XHPGetCurrentDeviceMask() ;
extern int XHPGetExtEventMask() ;
extern int XHPGetDeviceFocus() ;
extern int XHPGetDeviceControl() ;
extern XHPDeviceList * XHPListInputDevices() ;
extern int XHPPrompt() ;
extern XHPFilterId XHPRegisterEventFilter();
extern int XHPSetInputDevice() ;
extern int XHPSelectExtensionEvent() ;
extern int XHPUngrabDevice() ;
extern int XHPUngrabDeviceButton() ;
extern int XHPUngrabDeviceKey() ;
extern int XHPSetDeviceFocus() ;
extern int XHPSetDeviceModifierMapping() ;
extern Cursor XHPGetWindowCursor() ;
extern int XHPConvertLookup() ;
extern int input_isolatin1() ;
extern KEYBOARD_ID XHPGetKeyboardID() ;
extern void XHPUpdateKIDList() ;
extern KEYBOARD_ID XHPGetCvtLang() ;
extern KEYBOARD_ID XHPGetHILandCvt() ;
extern int _XHPInitKbdState() ;
extern int _XHP_alt_on() ;
extern void _XHP_GetAltKeys() ;
extern void _XHP_SetAltKeys() ;
extern int _XHPIgnoreLang() ;
extern int XHPInputRoman8() ;
extern int XHPInputLatin1() ;
extern int XHPInputISO8859_8() ;
#else
extern PtrFuncInt XHPGetEurasianCvt( 
                        Display *dpy) ;
extern int XGetHpKeyboardId( 
                        register Display *dpy,
                        unsigned char *kbd_id) ;
extern int XHPAcknowledge( 
                        register Display *dpy,
                        XID device,
                        int ack) ;
extern int XHPDeviceAutoRepeatOff( 
                        register Display *dpy,
                        XID device) ;
extern int XHPDeviceAutoRepeatOn( 
                        register Display *dpy,
                        XID device,
                        int rate) ;
extern int XHPChangeDeviceControl( 
                        register Display *dpy,
                        XID deviceid,
                        unsigned long mask,
                        XHPDeviceControl *vlist) ;
extern int XHPChangeDeviceKeyMapping( 
                        register Display *dpy,
                        XID deviceid,
                        int first,
                        int syms_per_code,
                        KeySym *keysyms,
                        int count) ;
extern int XHPDisableReset( 
        register Display *dpy );
extern int XHPDisableReset( 
        register Display *dpy );
extern int XHPFreeDeviceList( 
                        XHPDeviceList *list) ;
extern XHPTimeCoord * XHPGetDeviceMotionEvents( 
                        register Display *dpy,
                        XID deviceid,
                        Window window,
                        Time start,
                        Time stop,
                        int *nEvents) ;
extern KeySym * XHPGetDeviceKeyMapping( 
                        register Display *dpy,
                        XID deviceid,
                        KeyCode first,
                        int keycount,
                        int *syms_per_code) ;
extern XModifierKeymap * XHPGetDeviceModifierMapping( 
                        register Display *dpy,
                        XID deviceid) ;
extern int XHPGetServerMode( 
                        register Display *dpy,
                        register int screen) ;
extern int XHPGrabDeviceButton( 
                        register Display *dpy,
                        XID device,
                        unsigned int button,
                        unsigned int modifiers,
                        Window grab_window,
                        Bool owner_events,
                        unsigned int event_mask,
                        int pointer_mode,
                        int keyboard_mode) ;
extern int XHPGrabDeviceKey( 
                        register Display *dpy,
                        XID device,
                        unsigned int key,
                        unsigned int modifiers,
                        Window grab_window,
                        Bool owner_events,
                        int pointer_mode,
                        int keyboard_mode) ;
extern int XHPGrabReset( 
                        register Display *dpy,
                        Atom *type) ;
extern int XHPGrabDevice( 
                        register Display *dpy,
                        XID id,
                        Window window,
                        Bool ownerEvents,
                        int pointer_mode,
                        int device_mode,
                        Time time) ;
extern int XHPGetCurrentDeviceMask( 
                        register Display *dpy,
                        Window w,
                        XID device,
                        Mask *mask) ;
extern int XHPGetExtEventMask( 
                        register Display *dpy,
                        long evconst,
                        int *type,
                        Mask *mask) ;
extern int XHPGetDeviceFocus( 
                        register Display *dpy,
                        XID deviceid,
                        Window *focus,
                        int *revert_to) ;
extern int XHPGetDeviceControl( 
                        register Display *dpy,
                        XID deviceid,
                        XHPDeviceState *values) ;
extern XHPDeviceList * XHPListInputDevices( 
                        register Display *dpy,
                        int *ndevices) ;
extern int XHPPrompt( 
                        register Display *dpy,
                        XID device,
                        int prompt) ;
extern XHPFilterId XHPRegisterEventFilter(
			register Display *dpy,
			Window window,
			int device,
			Mask mask,
			int (*routine)(),
			int state_info) ;
extern int XHPSetInputDevice( 
                        register Display *dpy,
                        register XID id,
                        register int mode) ;
extern int XHPSelectExtensionEvent( 
                        register Display *dpy,
                        Window w,
                        XID device,
                        Mask mask) ;
extern int XHPUngrabDevice( 
                        register Display *dpy,
                        XID device,
                        Time time) ;
extern int XHPUngrabDeviceButton( 
                        register Display *dpy,
                        XID device,
                        unsigned int button,
                        unsigned int modifiers,
                        Window grab_window) ;
extern int XHPUngrabDeviceKey( 
                        register Display *dpy,
                        XID device,
                        unsigned int key,
                        unsigned int modifiers,
                        Window grab_window) ;
extern int XHPSetDeviceFocus( 
                        register Display *dpy,
                        XID deviceid,
                        Window focus,
                        int revert_to,
                        Time time) ;
extern int XHPSetDeviceModifierMapping( 
                        register Display *dpy,
                        XID deviceid,
                        XModifierKeymap *modmap) ;
extern Cursor XHPGetWindowCursor( 
                        register Display *dpy,
                        Window window) ;
extern int XHPConvertLookup( 
                        register XKeyEvent *event,
                        char *buffer,
                        int nbytes,
                        KeySym *keysym,
                        XComposeStatus *status,
                        int (*convert_routine)()) ;
extern int input_isolatin1( 
                        KeySym keysym,
                        int modifiers,
                        char *buffer_return,
                        int bytes_buffer,
                        XComposeStatus *status_in_out) ;
extern KEYBOARD_ID XHPGetKeyboardID( 
                        Display *dpy) ;
extern void XHPUpdateKIDList( 
                        Display *dpy,
                        KEYBOARD_ID kbd_id) ;
extern KEYBOARD_ID XHPGetCvtLang( 
                        Display *dpy) ;
extern KEYBOARD_ID XHPGetHILandCvt( 
                        Display *dpy) ;
extern int _XHPInitKbdState( 
                        Display *dpy) ;
extern int _XHP_alt_on( 
                        Display *dpy) ;
extern void _XHP_GetAltKeys( 
                        Display *dpy,
                        K16_state *state) ;
extern void _XHP_SetAltKeys( 
                        Display *dpy,
                        K16_state *state) ;
extern int _XHPIgnoreLang( 
                        int value) ;
extern int XHPInputRoman8( 
                        Display *display,
                        KeySym *keysym,
                        int modifiers,
                        unsigned char *buffer_return,
                        int bytes_buffer,
                        register XComposeStatus *status_in_out) ;
extern int XHPInputLatin1( 
                        Display *display,
                        register KeySym *keysym,
                        int modifiers,
                        unsigned char *buffer_return,
                        int bytes_buffer,
                        register XComposeStatus *status_in_out) ;
extern int XHPInputISO8859_8( 
                        Display *display,
                        KeySym *keysym,
                        unsigned int modifiers,
                        char *buffer_return,
                        int bytes_buffer,
                        XComposeStatus *status_in_out) ;
#endif /* _NO_PROTO */
#ifdef __cplusplus
}  /* Close scope of 'extern "C"' declaration that encloses file */
#endif /* __cplusplus */
#endif /* XHPLIB_H */