head	1.2;
access;
symbols
	RELEASE_4_2_0:1.1.1.1
	RELEASE_4_1_1:1.1.1.1
	RELEASE_4_1_0:1.1.1.1
	RELEASE_3_5_0:1.1.1.1
	RELEASE_4_0_0:1.1.1.1
	RELEASE_3_4_0:1.1.1.1
	RELEASE_3_3_0:1.1.1.1
	RELEASE_3_2_0:1.1.1.1
	RELEASE_3_1_0:1.1.1.1
	RELEASE_2_2_8:1.1.1.1
	RELEASE_3_0_0:1.1.1.1
	RELEASE_2_2_7:1.1.1.1
	RELEASE_2_2_6:1.1.1.1
	RELEASE_2_2_5:1.1.1.1
	TED_3_6A:1.1.1.1
	vanill:1.1.1;
locks; strict;
comment	@# @;


1.2
date	2001.02.27.19.04.49;	author vanilla;	state dead;
branches;
next	1.1;

1.1
date	97.10.01.09.34.49;	author max;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	97.10.01.09.34.49;	author max;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Remove zh-ted, it's non I18N app.

Approved by:	committers@@tw
@
text
@*** cli_xcin.c.orig	Fri Sep 19 01:19:33 1997
--- cli_xcin.c	Sat Sep 13 11:41:12 1997
***************
*** 0 ****
--- 1,130 ----
+ /*
+ 	Copyright (C) 1994,1995	Edward Der-Hua Liu, Hsin-Chu, Taiwan
+ */
+ 
+ #include <stdio.h>
+ #include <stdarg.h>
+ #include <sys/types.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xatom.h>
+ #include "state.h"
+ #include "protocol.h"
+ 
+ static Atom xcin_atom=0;
+ static Window xcin_win=None;
+ static InmdState inmdstate;
+ #define ENDIAN_TEST() (*(int *)"\x11\x22\x33\x44"==0x11223344)
+ static char my_endian;
+ 
+ static connect_xcin(Display *display)
+ {
+ Window twin;
+ xcin_atom=XInternAtom(display, XCIN_ATOM,False);
+ my_endian=ENDIAN_TEST();  /* if == 11223344, it is big-endian */
+ 
+ xcin_win=XGetSelectionOwner(display,xcin_atom);
+ return xcin_win;
+ }
+ 
+  void send_FocusIn(Display *display, Window window)
+ {
+ 	XClientMessageEvent event;
+ 	XEvent erreve;
+ 	char *tmp=event.data.b;
+ 
+ 	if (connect_xcin(display)==None) return;
+ /* Ensure xcin exists, or the process will be hanged */
+ 	event.type=ClientMessage;
+ 	event.window=window;
+ 	event.message_type=xcin_atom;
+ 	event.format=8;
+ 	
+ 	tmp[0]=tmp[1]=tmp[2]=0xff;
+ 	tmp[3]=CLI_FOCUS_IN;
+ 	memcpy(&tmp[4],&inmdstate, sizeof(inmdstate));
+ 	XSendEvent(display, xcin_win, False, 0, (XEvent *)&event);
+ }
+ 
+ static void send_FocusOut(Display *display, Window window)
+ {
+ 	XClientMessageEvent event;
+ 	XEvent erreve;
+ 	char *tmp=event.data.b;
+ 
+ 	if (connect_xcin(display)==None) return;
+ /* Ensure xcin exists, or the process will be hanged */
+ 	event.type=ClientMessage;
+ 	event.window=window;
+ 	event.message_type=xcin_atom;
+ 	event.format=8;
+ 	
+ 	tmp[0]=tmp[1]=tmp[2]=0xff;
+ 	tmp[3]=CLI_FOCUS_OUT;
+ 	memcpy(&tmp[4],&inmdstate, sizeof(inmdstate));
+ 	XSendEvent(display, xcin_win, False, 0, (XEvent *)&event);
+ }
+ 
+ static void big_little(char *i)
+ {
+ char t;
+ t=*i; *i=*(i+3); *(i+3)=t;
+ t=*(i+1); *(i+1)=*(i+2); *(i+2)=t;
+ }
+ static read_keys(Display *display, char *buf)
+ {
+ 	Atom actual_type;
+ 	int actual_format,i;
+ 	u_long nitems,bytes_after;
+ 	char *ttt, *cp;
+ 	XCIN_RES res;
+ 	int ofs;
+ 	cp=(char *)&res;
+ 	ofs=0;
+ 	do { 
+ 	if (XGetWindowProperty(display,xcin_win,xcin_atom,
+ 		ofs/4,(sizeof(XCIN_RES)+3)/4,
+ 		True, AnyPropertyType, &actual_type,&actual_format,
+ 		&nitems,&bytes_after,(unsigned char **)&ttt) != Success)
+ 			puts("err property");
+ 		memcpy((char *)(&res)+(ofs & ~0x3), ttt, nitems);
+ 		XFree(ttt);
+ 		ofs=(ofs & ~0x3) + nitems;
+ 	} while ((!nitems && !ofs) || bytes_after>0);
+ 	if (my_endian) {
+ 		big_little((char *)&res.len);
+ 		big_little((char *)&res.status);
+ 	}
+ 	memcpy(buf,res.tkey, res.len);
+ 	inmdstate=res.inmdstate;
+ 	buf[res.len]=0;
+ 	return  res.status;
+ }
+ 
+ #include <X11/Xutil.h>
+ 
+ static XComposeStatus compose_status = {NULL, 0};
+ 
+   send_key(Display *display, Window win, XKeyEvent *eve, char *buf)
+ {
+ XClientMessageEvent event;
+ XEvent erreve;
+ char *tmp=event.data.b;
+ u_char tttt[8];
+ KeySym keysym;
+ int count;
+ 
+ if (xcin_win==None && connect_xcin(display)==None)
+ 	return K_REJECT;
+ if ((xcin_win=XGetSelectionOwner(display,xcin_atom))==None)
+ 	return K_REJECT;
+ 
+ event.type=ClientMessage;
+ event.window=win;
+ event.message_type=xcin_atom;
+ event.format=32;
+ count =XLookupString (eve, tttt, sizeof(tmp), (KeySym *)tmp, &compose_status);
+ memcpy(&tmp[4],&eve->state,4);
+ XSendEvent(display, xcin_win, False, 0, (XEvent *)&event);
+ XSync(display,False);
+ return (read_keys(display, buf));
+ }
*** protocol.h.orig	Fri Sep 19 01:19:44 1997
--- protocol.h	Fri Sep 19 01:19:41 1997
***************
*** 0 ****
--- 1,13 ----
+ /*
+ 	Copyright (C) 1994	Edward Der-Hua Liu, Hsin-Chu, Taiwan
+ */
+ 
+ #define K_REJECT (0)
+ #define K_ACCEPT (1) 
+ 
+ #define CLI_FOCUS_IN (1)
+ #define CLI_FOCUS_OUT (3)
+ 
+ #define LOAD_KEYWORD (2)
+ 
+ #define XCIN_ATOM "XCIN_A"
*** state.h.orig	Fri Sep 19 01:20:14 1997
--- state.h	Fri Sep 19 01:20:05 1997
***************
*** 0 ****
--- 1,24 ----
+ /*
+ 	Copyright (C) 1994	Edward Der-Hua Liu, Hsin-Chu, Taiwan
+ */
+ 
+ typedef struct {
+ 	char  kb_state;
+         char _CurInMethod;
+ } InmdState;
+ 
+ #define EngChiMask (1)
+ #define HalfFullMask (2)
+ 
+ typedef struct {
+ 	int len;
+ 	int status;
+ 	InmdState inmdstate;
+ 	char tkey[512];
+ } XCIN_RES;
+ 
+ #define EngChi ((inmdstate.kb_state & EngChiMask) ? 1:0)
+ #define HalfFull ((inmdstate.kb_state & HalfFullMask) ? 1:0)
+ #define CurInMethod (inmdstate._CurInMethod)
+ /*extern InmdState inmdstate;
+ */
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@New port, ted:

Ted is a small and powerful Text editor for X Window,
the interface is like PE2 on DOS

PR:		4571
Submitted by:	vanilla@@MinJe.com.TW
@
text
@@
