mirror of
https://git.FreeBSD.org/ports.git
synced 2025-02-04 11:23:46 +00:00
Update to 0.3.5
PR: ports/11625 Submitted by: davidyu@ken.csie.ntu.edu.tw
This commit is contained in:
parent
a35dd2ed8b
commit
b1ee07820b
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=18752
@ -1,13 +1,13 @@
|
||||
# New ports collection makefile for: zh-aterm
|
||||
# Version required: 0.3.4
|
||||
# Version required: 0.3.5
|
||||
# Date created: 26 April 1999
|
||||
# Whom: Chia-Hsing Yu <davidyu@ken.csie.ntu.edu.tw>
|
||||
#
|
||||
# $Id: Makefile,v 1.1.1.1 1999/05/01 13:47:14 steve Exp $
|
||||
# $Id: Makefile,v 1.2 1999/05/07 05:05:31 foxfair Exp $
|
||||
#
|
||||
|
||||
DISTNAME= aterm-0.3.4
|
||||
PKGNAME= zh-aterm-0.3.4
|
||||
DISTNAME= aterm-0.3.5
|
||||
PKGNAME= zh-aterm-0.3.5
|
||||
CATEGORIES= chinese
|
||||
MASTER_SITES= http://members.xoom.com/sashav/aterm/ \
|
||||
http://www.tigr.net/afterstep/as-apps/download/aterm/ \
|
||||
@ -15,12 +15,20 @@ MASTER_SITES= http://members.xoom.com/sashav/aterm/ \
|
||||
|
||||
MAINTAINER= davidyu@ken.csie.ntu.edu.tw
|
||||
|
||||
LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
|
||||
LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm \
|
||||
jpeg.9:${PORTSDIR}/graphics/jpeg \
|
||||
png.3:${PORTSDIR}/graphics/png
|
||||
|
||||
USE_X_PREFIX= yes
|
||||
GNU_CONFIGURE= yes
|
||||
CONFIGURE_ARGS= --enable-transparency --enable-background-image \
|
||||
--disable-delete-key --disable-backspace-key --enable-big5
|
||||
--disable-delete-key --disable-backspace-key \
|
||||
--enable-fading --enable-utmp --enable-wtmp --enable-big5
|
||||
MAN1= aterm.1
|
||||
|
||||
post-patch:
|
||||
${CP} ${FILESDIR}/cli_xcin.c ${WRKSRC}/src/
|
||||
${CP} ${FILESDIR}/state.h ${WRKSRC}/src/
|
||||
${CP} ${FILESDIR}/protocol.h ${WRKSRC}/src/
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -1,2 +1 @@
|
||||
MD5 (aterm-0.3.4.tar.gz) = 555ca711affe9e06010701230d5a6759
|
||||
MD5 (aterm-0.3.4.tar.gz) = a481a97822bcc1a1dfe04b8867b7653e
|
||||
MD5 (aterm-0.3.5.tar.gz) = b4d67110343d2d56c3ea21c8b44aca4a
|
||||
|
146
chinese/aterm/files/cli_xcin.c
Normal file
146
chinese/aterm/files/cli_xcin.c
Normal file
@ -0,0 +1,146 @@
|
||||
/*
|
||||
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 void p_err(char *fmt,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
fprintf(stderr,"%s:", "cli_xcin:");
|
||||
vfprintf(stderr, fmt, args);
|
||||
va_end(args);
|
||||
fprintf(stderr,"\n");
|
||||
exit(-1);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
static Atom xcin_atom=0;
|
||||
static Window xcin_win=None;
|
||||
static InmdState inmdstate;
|
||||
#define ENDIAN_TEST() (*(int *)"\x11\x22\x33\x44"==0x11223344)
|
||||
char my_endian;
|
||||
|
||||
static int 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);
|
||||
}
|
||||
|
||||
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 int 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};
|
||||
|
||||
int 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));
|
||||
}
|
@ -1,149 +1,20 @@
|
||||
--- src/cli_xcin.c.orig Mon Apr 26 01:49:02 1999
|
||||
+++ src/cli_xcin.c Mon Apr 26 01:49:02 1999
|
||||
@@ -0,0 +1,146 @@
|
||||
+/*
|
||||
+ 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 void p_err(char *fmt,...)
|
||||
+{
|
||||
+ va_list args;
|
||||
+
|
||||
+ va_start(args, fmt);
|
||||
+ fprintf(stderr,"%s:", "cli_xcin:");
|
||||
+ vfprintf(stderr, fmt, args);
|
||||
+ va_end(args);
|
||||
+ fprintf(stderr,"\n");
|
||||
+ exit(-1);
|
||||
+}
|
||||
+*/
|
||||
+
|
||||
+
|
||||
+static Atom xcin_atom=0;
|
||||
+static Window xcin_win=None;
|
||||
+static InmdState inmdstate;
|
||||
+#define ENDIAN_TEST() (*(int *)"\x11\x22\x33\x44"==0x11223344)
|
||||
+char my_endian;
|
||||
+
|
||||
+static int 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);
|
||||
+}
|
||||
+
|
||||
+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 int 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};
|
||||
+
|
||||
+int 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));
|
||||
+}
|
||||
--- src/Makefile.in.orig Mon May 10 13:05:37 1999
|
||||
+++ src/Makefile.in Mon May 10 13:06:19 1999
|
||||
@@ -19,13 +19,14 @@
|
||||
|
||||
SRCS = command.c graphics.c grkelot.c main.c menubar.c misc.c \
|
||||
netdisp.c rmemset.c screen.c @SBARFILE@.c utmp.c xdefaults.c \
|
||||
- pixmap.c ximage_utils.c
|
||||
+ pixmap.c ximage_utils.c cli_xcin.c
|
||||
|
||||
OBJS = command.o graphics.o grkelot.o main.o menubar.o misc.o \
|
||||
netdisp.o rmemset.o screen.o @SBARFILE@.o utmp.o xdefaults.o \
|
||||
- pixmap.o ximage_utils.o
|
||||
+ pixmap.o ximage_utils.o cli_xcin.o
|
||||
|
||||
-HDRS = feature.h protos.h grkelot.h rxvt.h rxvtgrx.h screen.h version.h
|
||||
+HDRS = feature.h protos.h grkelot.h rxvt.h rxvtgrx.h screen.h version.h \
|
||||
+ state.h protocol.h
|
||||
|
||||
PROS = command.pro graphics.pro grkelot.pro main.pro menubar.pro misc.pro \
|
||||
netdisp.pro rmemset.pro screen.pro @SBARFILE@.pro utmp.pro xdefaults.pro \
|
||||
|
@ -1,26 +1,29 @@
|
||||
--- src/state.h.orig Mon Apr 26 01:49:05 1999
|
||||
+++ src/state.h Mon Apr 26 01:49:05 1999
|
||||
@@ -0,0 +1,23 @@
|
||||
+/*
|
||||
+ 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; */
|
||||
--- src/command.c.orig Mon May 10 13:06:58 1999
|
||||
+++ src/command.c Mon May 10 13:09:27 1999
|
||||
@@ -2069,11 +2069,17 @@
|
||||
static int bypass_keystate = 0;
|
||||
int reportmode;
|
||||
static int csrO = 0; /* Hops - csr offset in thumb/slider */
|
||||
+ int k_status;
|
||||
+ char kbuf[256];
|
||||
|
||||
/* to give proper Scroll behaviour */
|
||||
switch (ev->type) {
|
||||
case KeyPress:
|
||||
- lookup_key(ev);
|
||||
+ k_status = send_key(Xdisplay, TermWin.parent, &ev->xkey, kbuf);
|
||||
+ if(!k_status)
|
||||
+ lookup_key(ev);
|
||||
+ else if(kbuf[0])
|
||||
+ tt_write(kbuf, strlen(kbuf));
|
||||
break;
|
||||
|
||||
case ClientMessage:
|
||||
@@ -2138,6 +2144,7 @@
|
||||
|
||||
case FocusIn:
|
||||
if (!TermWin.focus) {
|
||||
+ send_FocusIn(Xdisplay, TermWin.parent);
|
||||
TermWin.focus = 1;
|
||||
#ifdef OFF_FOCUS_FADING
|
||||
if( rs_fade != NULL )
|
||||
|
13
chinese/aterm/files/protocol.h
Normal file
13
chinese/aterm/files/protocol.h
Normal file
@ -0,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"
|
23
chinese/aterm/files/state.h
Normal file
23
chinese/aterm/files/state.h
Normal file
@ -0,0 +1,23 @@
|
||||
/*
|
||||
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; */
|
Loading…
x
Reference in New Issue
Block a user