mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-29 10:18:30 +00:00
Update to 2.4.11
This commit is contained in:
parent
a106e2e081
commit
37fd8ae7ee
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=15142
@ -1,16 +1,22 @@
|
||||
# New ports collection Makefile for: rxvt
|
||||
# Version required: 2.4.9
|
||||
# Date created: 6th November 1998
|
||||
# Version required: 2.4.11
|
||||
# Date created: 23 November 1998
|
||||
# Whom: HONDA Yasuhiro <honda@kashio.info.mie-u.ac.jp>
|
||||
#
|
||||
# $Id$
|
||||
# $Id: Makefile,v 1.4 1998/11/09 01:24:12 steve Exp $
|
||||
#
|
||||
|
||||
DISTNAME= rxvt-2.4.9
|
||||
PKGNAME= ja-rxvt-2.4.9
|
||||
DISTNAME= rxvt-2.4.11
|
||||
PKGNAME= ja-rxvt-2.4.11
|
||||
CATEGORIES= japanese x11
|
||||
MASTER_SITES= ftp://mason.primenet.com.au/pub/rxvt/
|
||||
|
||||
.if !defined(NOXIMSUPPORT)
|
||||
PATCH_SITES= http://www.kashio.info.mie-u.ac.jp/~honda/rxvt/
|
||||
PATCHFILES= rxvt-2.4.10-JP-XIM.patch.gz
|
||||
PATCH_DIST_STRIP= -p1
|
||||
.endif
|
||||
|
||||
MAINTAINER= honda@kashio.info.mie-u.ac.jp
|
||||
|
||||
LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
|
||||
@ -18,9 +24,9 @@ LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
|
||||
USE_X_PREFIX= yes
|
||||
GNU_CONFIGURE= yes
|
||||
MAN1= rxvt.1
|
||||
CONFIGURE_ARGS= --enable-xpm-background --enable-kanji --enable-menubar --enable-graphics --with-xpm --disable-backspace-key --disable-delete-key
|
||||
CONFIGURE_ARGS= --enable-xpm-background --enable-kanji --enable-menubar --enable-graphics --disable-backspace-key --disable-delete-key
|
||||
|
||||
DOCDIR= ${PREFIX}/share/doc/rxvt
|
||||
DOCDIR= ${PREFIX}/share/doc/ja/rxvt
|
||||
|
||||
post-install:
|
||||
.if !defined(NOPORTDOCS)
|
||||
|
@ -1 +1,2 @@
|
||||
MD5 (rxvt-2.4.9.tar.gz) = 5a069d9cbaa00488fdf2521044ef6e03
|
||||
MD5 (rxvt-2.4.11.tar.gz) = 806d163e3113d22b31535785088f37c2
|
||||
MD5 (rxvt-2.4.10-JP-XIM.patch.gz) = f5cb852dbafa2e171e649c7bd407b55a
|
||||
|
@ -1,5 +1,5 @@
|
||||
*** Makefile.in.orig Sun Sep 20 17:48:18 1998
|
||||
--- Makefile.in Thu Nov 5 17:20:37 1998
|
||||
--- Makefile.in Thu Nov 19 00:19:50 1998
|
||||
***************
|
||||
*** 8,14 ****
|
||||
first_rule: all
|
||||
|
@ -1,5 +1,5 @@
|
||||
*** doc/Makefile.in.orig Thu Oct 22 12:02:09 1998
|
||||
--- doc/Makefile.in Thu Nov 5 17:21:57 1998
|
||||
*** doc/Makefile.in.orig Wed Nov 18 16:20:14 1998
|
||||
--- doc/Makefile.in Thu Nov 19 00:22:01 1998
|
||||
***************
|
||||
*** 37,43 ****
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
|
||||
! alldoc: $(basedir)/$(VERNAME).lsm rxvt.1 rxvt.html rxvtRef.html rxvtRef.txt
|
||||
|
||||
$(basedir)/$(VERNAME).lsm: LSM.in ../autoconf/Make.common.in
|
||||
$(basedir)/$(VERNAME).lsm: LSM.in $(srcdir)/../autoconf/Make.common.in $(srcdir)/../src/version.h
|
||||
$(SED) $(SEDREPLACE) < $(srcdir)/LSM.in > $@
|
||||
--- 55,61 ----
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
! alldoc: rxvt.1
|
||||
|
||||
$(basedir)/$(VERNAME).lsm: LSM.in ../autoconf/Make.common.in
|
||||
$(basedir)/$(VERNAME).lsm: LSM.in $(srcdir)/../autoconf/Make.common.in $(srcdir)/../src/version.h
|
||||
$(SED) $(SEDREPLACE) < $(srcdir)/LSM.in > $@
|
||||
***************
|
||||
*** 63,70 ****
|
||||
@ -48,7 +48,7 @@
|
||||
rxvt.tbl: yodl/rxvt.yo $(YODL_RXVT) yodl/versioninfo.yo yodl/masonyodl.yo
|
||||
yodl2man -orxvt.tbl yodl/rxvt.yo
|
||||
|
||||
! rxvt.1:
|
||||
! rxvt.1:
|
||||
|
||||
rxvt.html: yodl/rxvt.yo $(YODL_RXVT) yodl/versioninfo.yo yodl/masonyodl.yo
|
||||
yodl2html -o$@ yodl/rxvt.yo
|
||||
|
@ -1,571 +1,19 @@
|
||||
*** src/command.c.orig Tue Oct 27 00:16:37 1998
|
||||
--- src/command.c Thu Nov 5 21:20:34 1998
|
||||
*** src/command.c.orig Tue Nov 17 17:59:45 1998
|
||||
--- src/command.c Thu Nov 19 09:50:06 1998
|
||||
***************
|
||||
*** 76,83 ****
|
||||
#endif /* OFFIX_DND */
|
||||
|
||||
#ifndef NO_XLOCALE
|
||||
- static char rs_inputMethod[] = ""; /* XtNinputMethod */
|
||||
- static char *rs_preeditType = NULL; /* XtNpreeditType */
|
||||
static XIC Input_Context; /* input context */
|
||||
#endif /* NO_XLOCALE */
|
||||
|
||||
--- 76,81 ----
|
||||
***************
|
||||
*** 290,296 ****
|
||||
*** 291,297 ****
|
||||
ttydev = tty_name;
|
||||
|
||||
# define PTYCHAR1 "pqrstuvwxyz"
|
||||
! # define PTYCHAR2 "0123456789abcdef"
|
||||
for (c1 = (char *) PTYCHAR1; *c1; c1++) {
|
||||
ptydev[len - 2] = ttydev[len - 2] = *c1;
|
||||
for (c2 = (char *) PTYCHAR2; *c2; c2++) {
|
||||
--- 288,294 ----
|
||||
for (c1 = PTYCHAR1; *c1; c1++) {
|
||||
ptydev[len] = ttydev[len] = *c1;
|
||||
for (c2 = PTYCHAR2; *c2; c2++) {
|
||||
--- 291,297 ----
|
||||
ttydev = tty_name;
|
||||
|
||||
# define PTYCHAR1 "pqrstuvwxyz"
|
||||
! # define PTYCHAR2 "0123456789abcdefghijklmnopqrstuv"
|
||||
for (c1 = (char *) PTYCHAR1; *c1; c1++) {
|
||||
ptydev[len - 2] = ttydev[len - 2] = *c1;
|
||||
for (c2 = (char *) PTYCHAR2; *c2; c2++) {
|
||||
***************
|
||||
*** 892,898 ****
|
||||
DndSelection = XInternAtom(Xdisplay, "DndSelection", False);
|
||||
#endif /* OFFIX_DND */
|
||||
|
||||
! init_xlocale();
|
||||
|
||||
/* get number of available file descriptors */
|
||||
#ifdef _POSIX_VERSION
|
||||
--- 890,898 ----
|
||||
DndSelection = XInternAtom(Xdisplay, "DndSelection", False);
|
||||
#endif /* OFFIX_DND */
|
||||
|
||||
! #ifndef NO_XLOCALE
|
||||
! XRegisterIMInstantiateCallback(Xdisplay, NULL, NULL, NULL, IMInstantiateCallback, NULL);
|
||||
! #endif
|
||||
|
||||
/* get number of available file descriptors */
|
||||
#ifdef _POSIX_VERSION
|
||||
***************
|
||||
*** 933,1056 ****
|
||||
* This is more or less stolen straight from XFree86 xterm.
|
||||
* This should support all European type languages.
|
||||
*/
|
||||
! /* INTPROTO */
|
||||
void
|
||||
init_xlocale(void)
|
||||
{
|
||||
! #ifndef NO_XLOCALE
|
||||
! char *p, *s, *tmp, buf[32];
|
||||
! XIM xim = NULL;
|
||||
! XIMStyle input_style = 0;
|
||||
! XIMStyles *xim_styles = NULL;
|
||||
! int found;
|
||||
!
|
||||
! Input_Context = NULL;
|
||||
! tmp = MALLOC(1024);
|
||||
!
|
||||
! # if !defined(NO_XSETLOCALE) || !defined(NO_SETLOCALE)
|
||||
setlocale(LC_CTYPE, "");
|
||||
# endif
|
||||
! if (rs_inputMethod == NULL || !*rs_inputMethod) {
|
||||
! if ((p = XSetLocaleModifiers("@im=none")) != NULL && *p)
|
||||
! xim = XOpenIM(Xdisplay, NULL, NULL, NULL);
|
||||
! } else {
|
||||
! STRNCPY(tmp, rs_inputMethod, 1023);
|
||||
! tmp[1023] = '\0';
|
||||
! for (s = tmp; *s; s++) {
|
||||
! char *end, *next_s;
|
||||
!
|
||||
! for (; *s && isspace(*s); s++)
|
||||
! /* */ ;
|
||||
! if (!*s)
|
||||
! break;
|
||||
! for (end = s; (*end && (*end != ',')); end++)
|
||||
! /* */ ;
|
||||
! for (next_s = end--; ((end >= s) && isspace(*end)); end--)
|
||||
! /* */ ;
|
||||
! *++end = '\0';
|
||||
! if (*s) {
|
||||
! STRCPY(buf, "@im=");
|
||||
! strcat(buf, s);
|
||||
! if ((p = XSetLocaleModifiers(buf)) != NULL && *p &&
|
||||
! (xim = XOpenIM(Xdisplay, NULL, NULL, NULL)) != NULL)
|
||||
! break;
|
||||
! }
|
||||
! if (!*(s = next_s))
|
||||
! break;
|
||||
! }
|
||||
! }
|
||||
!
|
||||
! if (xim == NULL && (p = XSetLocaleModifiers("")) != NULL && *p)
|
||||
! xim = XOpenIM(Xdisplay, NULL, NULL, NULL);
|
||||
!
|
||||
! if (xim == NULL) {
|
||||
! print_error("Failed to open input method");
|
||||
! FREE(tmp);
|
||||
! return;
|
||||
! }
|
||||
! if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles) {
|
||||
! print_error("input method doesn't support any style");
|
||||
! XCloseIM(xim);
|
||||
! FREE(tmp);
|
||||
! return;
|
||||
! }
|
||||
! STRNCPY(tmp, (rs_preeditType ? rs_preeditType : "Root"), 1023);
|
||||
! for (found = 0, s = tmp; *s && !found; ) {
|
||||
! unsigned short i;
|
||||
! char *end, *next_s;
|
||||
!
|
||||
! for (; *s && isspace(*s); s++)
|
||||
! /* */ ;
|
||||
! if (!*s)
|
||||
! break;
|
||||
! for (end = s; (*end && (*end != ',')); end++)
|
||||
! /* */ ;
|
||||
! for (next_s = end--; ((end >= s) && isspace(*end));)
|
||||
! *end-- = 0;
|
||||
!
|
||||
! if (!strcmp(s, "OverTheSpot"))
|
||||
! input_style = (XIMPreeditPosition | XIMStatusArea);
|
||||
! else if (!strcmp(s, "OffTheSpot"))
|
||||
! input_style = (XIMPreeditArea | XIMStatusArea);
|
||||
! else if (!strcmp(s, "Root"))
|
||||
! input_style = (XIMPreeditNothing | XIMStatusNothing);
|
||||
!
|
||||
! for (i = 0; i < xim_styles->count_styles; i++)
|
||||
! if (input_style == xim_styles->supported_styles[i]) {
|
||||
! found = 1;
|
||||
! break;
|
||||
! }
|
||||
! s = next_s;
|
||||
! }
|
||||
! XFree(xim_styles);
|
||||
! FREE(tmp);
|
||||
!
|
||||
! if (found == 0) {
|
||||
! print_error("input method doesn't support my preedit type");
|
||||
! XCloseIM(xim);
|
||||
! return;
|
||||
! }
|
||||
! /*
|
||||
! * This program only understands the Root preedit_style yet
|
||||
! * Then misc.preedit_type should default to:
|
||||
! * "OverTheSpot,OffTheSpot,Root"
|
||||
! * /MaF
|
||||
! */
|
||||
! if (input_style != (XIMPreeditNothing | XIMStatusNothing)) {
|
||||
! print_error("This program only supports the \"Root\" preedit type");
|
||||
! XCloseIM(xim);
|
||||
! return;
|
||||
! }
|
||||
! Input_Context = XCreateIC(xim, XNInputStyle, input_style,
|
||||
! XNClientWindow, TermWin.parent,
|
||||
! XNFocusWindow, TermWin.parent,
|
||||
! NULL);
|
||||
!
|
||||
! if (Input_Context == NULL) {
|
||||
! print_error("Failed to create input context");
|
||||
! XCloseIM(xim);
|
||||
! }
|
||||
! #endif /* NO_XLOCALE */
|
||||
}
|
||||
/*}}} */
|
||||
|
||||
--- 933,950 ----
|
||||
* This is more or less stolen straight from XFree86 xterm.
|
||||
* This should support all European type languages.
|
||||
*/
|
||||
! /* EXTPROTO */
|
||||
void
|
||||
init_xlocale(void)
|
||||
{
|
||||
! #ifdef MULTICHAR_SET
|
||||
! # ifdef KANJI
|
||||
! setlocale(LC_CTYPE, "ja_JP.EUC");
|
||||
! # else
|
||||
setlocale(LC_CTYPE, "");
|
||||
# endif
|
||||
! #endif
|
||||
! setTermFontSet();
|
||||
}
|
||||
/*}}} */
|
||||
|
||||
***************
|
||||
*** 1118,1137 ****
|
||||
PrivMode((!numlock_state), PrivMode_aplKP);
|
||||
}
|
||||
#ifndef NO_XLOCALE
|
||||
! if (!XFilterEvent(ev, *(&ev->xkey.window))) {
|
||||
! if (Input_Context != NULL) {
|
||||
! Status status_return;
|
||||
!
|
||||
! len = XmbLookupString(Input_Context, &ev->xkey, kbuf,
|
||||
! sizeof(kbuf), &keysym,
|
||||
! &status_return);
|
||||
! } else {
|
||||
! len = XLookupString(&ev->xkey, kbuf,
|
||||
! sizeof(kbuf), &keysym,
|
||||
! &compose);
|
||||
! }
|
||||
! } else
|
||||
! len = 0;
|
||||
#else /* NO_XLOCALE */
|
||||
len = XLookupString(&ev->xkey, (char *) kbuf, sizeof(kbuf), &keysym, &compose);
|
||||
/*
|
||||
--- 1012,1030 ----
|
||||
PrivMode((!numlock_state), PrivMode_aplKP);
|
||||
}
|
||||
#ifndef NO_XLOCALE
|
||||
! len = 0;
|
||||
! if (Input_Context != NULL) {
|
||||
! Status status_return;
|
||||
!
|
||||
! kbuf[0] = '\0';
|
||||
! len = XmbLookupString(Input_Context, &ev->xkey, kbuf,
|
||||
! sizeof(kbuf), &keysym,
|
||||
! &status_return);
|
||||
! } else {
|
||||
! len = XLookupString(&ev->xkey, kbuf,
|
||||
! sizeof(kbuf), &keysym,
|
||||
! &compose);
|
||||
! }
|
||||
#else /* NO_XLOCALE */
|
||||
len = XLookupString(&ev->xkey, (char *) kbuf, sizeof(kbuf), &keysym, &compose);
|
||||
/*
|
||||
***************
|
||||
*** 1698,1708 ****
|
||||
for (;;) {
|
||||
v_doPending(); /* output any pending chars */
|
||||
while (XPending(Xdisplay)) { /* process pending X events */
|
||||
- XEvent ev;
|
||||
-
|
||||
refreshed = 0;
|
||||
! XNextEvent(Xdisplay, &ev);
|
||||
! process_x_event(&ev);
|
||||
|
||||
/* in case button actions pushed chars to cmdbuf */
|
||||
if (cmdbuf_ptr < cmdbuf_endp)
|
||||
--- 1591,1598 ----
|
||||
for (;;) {
|
||||
v_doPending(); /* output any pending chars */
|
||||
while (XPending(Xdisplay)) { /* process pending X events */
|
||||
refreshed = 0;
|
||||
! XProcessEvent(Xdisplay);
|
||||
|
||||
/* in case button actions pushed chars to cmdbuf */
|
||||
if (cmdbuf_ptr < cmdbuf_endp)
|
||||
***************
|
||||
*** 1775,1780 ****
|
||||
--- 1665,1673 ----
|
||||
refreshed = 1;
|
||||
scr_refresh(refresh_type);
|
||||
scrollbar_show(1);
|
||||
+ #ifndef NO_XLOCALE
|
||||
+ IMSendSpot();
|
||||
+ #endif
|
||||
}
|
||||
}
|
||||
}
|
||||
***************
|
||||
*** 2307,2312 ****
|
||||
--- 2200,2208 ----
|
||||
scr_refresh(refresh_type);
|
||||
refresh_count = refresh_limit = 0;
|
||||
scrollbar_show(1);
|
||||
+ #ifndef NO_XLOCALE
|
||||
+ IMSendSpot();
|
||||
+ #endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
***************
|
||||
*** 3146,3151 ****
|
||||
--- 3042,3050 ----
|
||||
}
|
||||
}
|
||||
Gr_do_graphics(cmd, nargs, args, text);
|
||||
+ # ifndef NO_XLOCALE
|
||||
+ IMSendSpot();
|
||||
+ # endif
|
||||
#endif
|
||||
}
|
||||
/*}}} */
|
||||
***************
|
||||
*** 3384,3389 ****
|
||||
--- 3283,3556 ----
|
||||
v_buffer = v_bufstr - start; /* restore clobbered pointer */
|
||||
}
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ #ifndef NO_XLOCALE
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ setSize( XRectangle *size )
|
||||
+ {
|
||||
+ size->x = TermWin_internalBorder ;
|
||||
+ size->y = TermWin_internalBorder ;
|
||||
+ size->width = Width2Pixel ( TermWin.ncol ) ;
|
||||
+ size->height = Height2Pixel( TermWin.nrow ) ;
|
||||
+ return ;
|
||||
+ }
|
||||
+
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ setColor( unsigned long *fg, unsigned long *bg )
|
||||
+ {
|
||||
+ *fg = PixColors[ Color_fg ] ;
|
||||
+ *bg = PixColors[ Color_bg ] ;
|
||||
+ return ;
|
||||
+ }
|
||||
+
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ IMSendSpot( void )
|
||||
+ {
|
||||
+ XPoint spot ;
|
||||
+ XVaNestedList preedit_attr ;
|
||||
+ XIMStyle input_style;
|
||||
+
|
||||
+ if( Input_Context == NULL )
|
||||
+ return ;
|
||||
+ else {
|
||||
+ XGetICValues(Input_Context,XNInputStyle,&input_style,NULL);
|
||||
+ if (!(input_style & XIMPreeditPosition))
|
||||
+ return;
|
||||
+ }
|
||||
+ setPosition( &spot ) ;
|
||||
+
|
||||
+ preedit_attr = XVaCreateNestedList( 0, XNSpotLocation, &spot, NULL ) ;
|
||||
+ XSetICValues( Input_Context, XNPreeditAttributes, preedit_attr, NULL ) ;
|
||||
+ XFree( preedit_attr ) ;
|
||||
+ return ;
|
||||
+ }
|
||||
+
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ setTermFontSet( void )
|
||||
+ {
|
||||
+ char *string ;
|
||||
+ long length, i ;
|
||||
+
|
||||
+ if( TermWin.fontset != NULL ){
|
||||
+ XFreeFontSet( Xdisplay, TermWin.fontset ) ;
|
||||
+ TermWin.fontset = NULL ;
|
||||
+ }
|
||||
+
|
||||
+ length = 0 ;
|
||||
+ for( i = 0 ; i < NFONTS ; i ++ ){
|
||||
+ if( rs[ Rs_font + i ] )
|
||||
+ length += strlen( rs[ Rs_font + i ] ) + 1 ;
|
||||
+ # ifdef MULTICHAR_SET
|
||||
+ if( rs[ Rs_mfont + i ] )
|
||||
+ length += strlen( rs[ Rs_mfont + i ] ) + 1 ;
|
||||
+ # endif
|
||||
+ }
|
||||
+ if( ( string = malloc( length ) ) != NULL ){
|
||||
+ char **missing_charsetlist, *def_string ;
|
||||
+ int missing_charsetcount ;
|
||||
+
|
||||
+ string[ 0 ] = '\0' ;
|
||||
+ for( i = 0 ; i < NFONTS ; i ++ ){
|
||||
+ if( rs[ Rs_font + i ] ){
|
||||
+ strcat( string, rs[ Rs_font + i ] ) ;
|
||||
+ strcat( string, "," ) ;
|
||||
+ }
|
||||
+ # ifdef MULTICHAR_SET
|
||||
+ if( rs[ Rs_mfont + i ] ){
|
||||
+ strcat( string, rs[ Rs_mfont + i ] ) ;
|
||||
+ strcat( string, "," ) ;
|
||||
+ }
|
||||
+ # endif
|
||||
+ }
|
||||
+ length = strlen( string ) ;
|
||||
+ if( length > 0 && string[ length - 1 ] == ',' ){
|
||||
+ string[ length - 1 ] = '\0' ;
|
||||
+ length -- ;
|
||||
+ }
|
||||
+ if( length > 0 ){
|
||||
+ TermWin.fontset = XCreateFontSet
|
||||
+ ( Xdisplay, string,
|
||||
+ &missing_charsetlist, &missing_charsetcount, &def_string ) ;
|
||||
+ }
|
||||
+ free( string ) ;
|
||||
+ } else {
|
||||
+ TermWin.fontset = NULL ;
|
||||
+ }
|
||||
+ return ;
|
||||
+ }
|
||||
+
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ IMDestroyCallback(XIM xim, XPointer client_data, XPointer call_data)
|
||||
+ {
|
||||
+ Input_Context = NULL;
|
||||
+ XRegisterIMInstantiateCallback(Xdisplay, NULL, NULL, NULL, IMInstantiateCallback, NULL);
|
||||
+ }
|
||||
+
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ IMInstantiateCallback(Display *display, XPointer client_data, XPointer call_data)
|
||||
+ {
|
||||
+ char *p, *s, buf[32], tmp[1024];
|
||||
+ XIM xim = NULL;
|
||||
+ XIMStyle input_style = 0;
|
||||
+ XIMStyles *xim_styles = NULL;
|
||||
+ int found;
|
||||
+ XPoint spot ;
|
||||
+ XRectangle rect ;
|
||||
+ unsigned long fg, bg ;
|
||||
+ XVaNestedList preedit_attr = NULL ;
|
||||
+ XIMCallback ximcallback;
|
||||
+
|
||||
+ if (Input_Context) return;
|
||||
+
|
||||
+ ximcallback.callback = IMDestroyCallback;
|
||||
+ ximcallback.client_data = NULL;
|
||||
+
|
||||
+ if (rs[Rs_inputMethod] == NULL
|
||||
+ # ifdef KANJI
|
||||
+ || !rs[Rs_inputMethod] /* required ? */
|
||||
+ # endif
|
||||
+ ) {
|
||||
+ if ((p = XSetLocaleModifiers("")) != NULL && *p)
|
||||
+ xim = XOpenIM(Xdisplay, NULL, NULL, NULL);
|
||||
+ } else {
|
||||
+ strcpy(tmp, rs[Rs_inputMethod]);
|
||||
+ for (s = tmp; *s; /*nil */ ) {
|
||||
+ char *end, *next_s;
|
||||
+
|
||||
+ while (*s && isspace(*s))
|
||||
+ s++;
|
||||
+ if (!*s)
|
||||
+ break;
|
||||
+ end = s;
|
||||
+ while (*end && (*end != ','))
|
||||
+ end++;
|
||||
+ next_s = end--;
|
||||
+ while ((end >= s) && isspace(*end))
|
||||
+ end--;
|
||||
+ *(end + 1) = '\0';
|
||||
+
|
||||
+ if (*s) {
|
||||
+ strcpy(buf, "@im=");
|
||||
+ strcat(buf, s);
|
||||
+ if ((p = XSetLocaleModifiers(buf)) != NULL && *p &&
|
||||
+ (xim = XOpenIM(Xdisplay, NULL, NULL, NULL)) != NULL)
|
||||
+ break;
|
||||
+ }
|
||||
+ if (!*next_s)
|
||||
+ break;
|
||||
+ s = (next_s + 1);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (xim == NULL && (p = XSetLocaleModifiers("")) != NULL && *p)
|
||||
+ xim = XOpenIM(Xdisplay, NULL, NULL, NULL);
|
||||
+
|
||||
+ if (xim == NULL) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ XSetIMValues(xim, XNDestroyCallback, &ximcallback, NULL);
|
||||
+
|
||||
+ if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles) {
|
||||
+ print_error("input method doesn't support any style");
|
||||
+ XCloseIM(xim);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ strcpy(tmp, (rs[Rs_preeditType] ? rs[Rs_preeditType] : "OverTheSpot"));
|
||||
+ for (found = 0, s = tmp; *s && !found; /*nil */ ) {
|
||||
+ unsigned short i;
|
||||
+ char *end, *next_s;
|
||||
+
|
||||
+ while (*s && isspace(*s))
|
||||
+ s++;
|
||||
+ if (!*s)
|
||||
+ break;
|
||||
+ end = s;
|
||||
+ while (*end && (*end != ','))
|
||||
+ end++;
|
||||
+ next_s = end--;
|
||||
+ while ((end >= s) && isspace(*end))
|
||||
+ *end-- = 0;
|
||||
+
|
||||
+ if (!strcmp(s, "OverTheSpot"))
|
||||
+ input_style = (XIMPreeditPosition | XIMStatusNothing);
|
||||
+ else if (!strcmp(s, "OffTheSpot"))
|
||||
+ input_style = (XIMPreeditArea | XIMStatusArea);
|
||||
+ else if (!strcmp(s, "Root"))
|
||||
+ input_style = (XIMPreeditNothing | XIMStatusNothing);
|
||||
+
|
||||
+ for (i = 0; i < xim_styles->count_styles; i++) {
|
||||
+ if (input_style == xim_styles->supported_styles[i]) {
|
||||
+ found = 1;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ s = next_s;
|
||||
+ }
|
||||
+ XFree(xim_styles);
|
||||
+
|
||||
+ if (found == 0) {
|
||||
+ print_error("input method doesn't support my preedit type");
|
||||
+ XCloseIM(xim);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if ((input_style != (XIMPreeditNothing | XIMStatusNothing)) &&
|
||||
+ (input_style != (XIMPreeditPosition | XIMStatusNothing))) {
|
||||
+ print_error("This program does not support the preedit type");
|
||||
+ XCloseIM(xim);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (input_style & XIMPreeditPosition) {
|
||||
+ setSize ( &rect ) ;
|
||||
+ setPosition( &spot ) ;
|
||||
+ setColor ( &fg, &bg ) ;
|
||||
+
|
||||
+ preedit_attr = XVaCreateNestedList
|
||||
+ ( 0,
|
||||
+ XNArea, &rect,
|
||||
+ XNSpotLocation, &spot,
|
||||
+ XNFontSet, TermWin.fontset,
|
||||
+ XNForeground, fg,
|
||||
+ XNBackground, bg,
|
||||
+ XNLineSpace, Height2Pixel(1) - 1,
|
||||
+ NULL ) ;
|
||||
+ }
|
||||
+
|
||||
+ Input_Context = XCreateIC(xim, XNInputStyle, input_style,
|
||||
+ XNClientWindow, TermWin.parent,
|
||||
+ XNFocusWindow, TermWin.parent,
|
||||
+ preedit_attr ? XNPreeditAttributes : NULL, preedit_attr,
|
||||
+ NULL);
|
||||
+ XFree(preedit_attr);
|
||||
+ if (Input_Context == NULL) {
|
||||
+ print_error("Failed to create input context");
|
||||
+ XCloseIM(xim);
|
||||
+ }
|
||||
+ }
|
||||
+ #endif /* NO_XLOCALE */
|
||||
+
|
||||
+ /* INTPROTO */
|
||||
+ void
|
||||
+ XProcessEvent( Display *display )
|
||||
+ {
|
||||
+ XEvent xev ;
|
||||
+ XNextEvent( display, &xev ) ;
|
||||
+ #ifndef NO_XLOCALE
|
||||
+ if( !XFilterEvent( &xev, xev.xany.window ) )
|
||||
+ process_x_event( &xev ) ;
|
||||
+ #else
|
||||
+ process_x_event( &xev ) ;
|
||||
+ #endif
|
||||
+ return ;
|
||||
}
|
||||
|
||||
/*}}} */
|
||||
for (c1 = PTYCHAR1; *c1; c1++) {
|
||||
ptydev[len] = ttydev[len] = *c1;
|
||||
for (c2 = PTYCHAR2; *c2; c2++) {
|
||||
|
@ -2,13 +2,13 @@ Rxvt is an xterm replacement which uses a little less memory, and is
|
||||
suitable for use on machines with small memories. Tek4010 support
|
||||
is removed.
|
||||
|
||||
Modifications were made by Rob Nation (nation@rocket.sanders.lockheed.com)
|
||||
to make it a little more compact, and to add and remove certain features.
|
||||
|
||||
This supports Japanese input with X Input Method (XIM) Protocol.
|
||||
Supported input styles are `OverTheSpot' and `Root'. The patch is
|
||||
Supported input styles are `OverTheSpot' and `Root'. The Patch is
|
||||
contributed from Nobutaka Mantani <nobutaka@nobutaka.com>. More
|
||||
information can be found at:
|
||||
http://www.nobutaka.com/programs/rxvt.html
|
||||
|
||||
Modifications were made by Rob Nation (nation@rocket.sanders.lockheed.com)
|
||||
to make it a little more compact, and to add and remove certain features.
|
||||
|
||||
HomePage of rxvt: http://babayaga.math.fu-berlin.de/rxvt/
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
If you want information about rxvt in
|
||||
Japanese environment , please see
|
||||
/usr/X11R6/share/doc/rxvt/README.ja (in Japanese) .
|
||||
/usr/X11R6/share/doc/ja/rxvt/README.ja (in Japanese) .
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
bin/rxvt
|
||||
share/doc/rxvt/README.ja
|
||||
@dirrm share/doc/rxvt
|
||||
share/doc/ja/rxvt/README.ja
|
||||
@dirrm share/doc/ja/rxvt
|
||||
|
Loading…
Reference in New Issue
Block a user