aboutsummaryrefslogtreecommitdiffstats
path: root/japanese/rxvt
diff options
context:
space:
mode:
authorsteve <steve@FreeBSD.org>1998-11-09 09:24:15 +0800
committersteve <steve@FreeBSD.org>1998-11-09 09:24:15 +0800
commitc1bf5501db0a3e3d0d2c30960f50d095cf2b7281 (patch)
tree1320504fbffc143716fbba7032ee3d36486f64d2 /japanese/rxvt
parent4e0e0e17f83c30fc9ee7fce143f9995f5a63cadd (diff)
downloadfreebsd-ports-gnome-c1bf5501db0a3e3d0d2c30960f50d095cf2b7281.tar.gz
freebsd-ports-gnome-c1bf5501db0a3e3d0d2c30960f50d095cf2b7281.tar.zst
freebsd-ports-gnome-c1bf5501db0a3e3d0d2c30960f50d095cf2b7281.zip
Update to version 2.4.9.
PR: 8583 Submitted by: maintainer
Diffstat (limited to 'japanese/rxvt')
-rw-r--r--japanese/rxvt/Makefile36
-rw-r--r--japanese/rxvt/distinfo1
-rw-r--r--japanese/rxvt/files/README.ja139
-rw-r--r--japanese/rxvt/files/patch-aa19
-rw-r--r--japanese/rxvt/files/patch-ab54
-rw-r--r--japanese/rxvt/files/patch-ad571
-rw-r--r--japanese/rxvt/pkg-comment1
-rw-r--r--japanese/rxvt/pkg-descr14
-rw-r--r--japanese/rxvt/pkg-message9
-rw-r--r--japanese/rxvt/pkg-plist3
10 files changed, 834 insertions, 13 deletions
diff --git a/japanese/rxvt/Makefile b/japanese/rxvt/Makefile
index 3bfd3405b0e9..1716855a1520 100644
--- a/japanese/rxvt/Makefile
+++ b/japanese/rxvt/Makefile
@@ -1,22 +1,32 @@
-# New ports collection makefile for: ja-rxvt
-# Version required: 2.4.7
-# Date created: 6 Oct 1998
+# New ports collection Makefile for: rxvt
+# Version required: 2.4.9
+# Date created: 6th November 1998
# Whom: HONDA Yasuhiro <honda@kashio.info.mie-u.ac.jp>
#
+# $Id$
#
-FILESDIR= ${.CURDIR}/../../x11/rxvt/files
-PATCHDIR= ${.CURDIR}/../../x11/rxvt/patches
-PKGDIR= ${.CURDIR}/../../x11/rxvt/pkg
-
-PKGNAME= ja-rxvt-2.4.7
-
-.include <${.CURDIR}/../../x11/rxvt/Makefile>
-
+DISTNAME= rxvt-2.4.9
+PKGNAME= ja-rxvt-2.4.9
CATEGORIES= japanese x11
+MASTER_SITES= ftp://mason.primenet.com.au/pub/rxvt/
MAINTAINER= honda@kashio.info.mie-u.ac.jp
+LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
+
USE_X_PREFIX= yes
-HAS_CONFIGURE= yes
-CONFIGURE_ARGS= --prefix=${PREFIX} --enable-menubar --enable-kanji --with-x
+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
+
+DOCDIR= ${PREFIX}/share/doc/rxvt
+
+post-install:
+.if !defined(NOPORTDOCS)
+ @${MKDIR} ${DOCDIR}
+ @${INSTALL_MAN} ${FILESDIR}/README.ja ${DOCDIR}
+.endif
+ @${CAT} ${PKGDIR}/MESSAGE
+
+.include <bsd.port.mk>
diff --git a/japanese/rxvt/distinfo b/japanese/rxvt/distinfo
new file mode 100644
index 000000000000..af0c5c312346
--- /dev/null
+++ b/japanese/rxvt/distinfo
@@ -0,0 +1 @@
+MD5 (rxvt-2.4.9.tar.gz) = 5a069d9cbaa00488fdf2521044ef6e03
diff --git a/japanese/rxvt/files/README.ja b/japanese/rxvt/files/README.ja
new file mode 100644
index 000000000000..b5a7b2e36730
--- /dev/null
+++ b/japanese/rxvt/files/README.ja
@@ -0,0 +1,139 @@
+rxvt-2.4.9のportについて
+-------------------------------------------------------------------------------
+
+目次:
+
+ 1. 概要
+ 2. portに含まれているパッチによって追加されている機能
+ 3. 日本語の表示
+ 4. 日本語入力の方法
+ 5. 背景に画像を張り付ける
+ 6. マニュアルには書かれていない .Xresourcesの設定
+ 7. 問題点
+ 8. その他いろいろ
+
+-------------------------------------------------------------------------------
+
+1. 概要
+
+このportを使ってインストールしたrxvtは、kinput2やVJE-Deltaなどの
+X Input Method Protocolをサポートしているinput methodで
+OverTheSpotスタイルで日本語を入力する事ができます。
+このREADMEでは、日本語の表示や入力に関する説明をします。
+
+
+2. portに含まれているパッチによって追加されている機能
+
+このportに含まれているパッチによってrxvtに追加されている機能は以下の通りです。
+
+ OverTheSpotスタイルで日本語入力が可能
+ rxvtを起動した後にinput methodを起動してinput methodが有効になる
+ 一旦input methodを殺してから再び起動してinput methodが有効になる
+ .Xresources でinput methodと入力のスタイルを指定可能 (OverTheSpot, Root)
+
+
+3. 日本語の表示
+
+このportでコンパイルしたrxvtはデフォルトの状態で
+日本語(文字コード ISO-2022-JP, 日本語EUC)を表示できます。
+デフォルトではシフトJISは表示する事ができません。
+シフトJISを表示したい場合は、コマンドラインのオプションで
+-km sjis を付けて起動します。
+
+(例)
+% rxvt -km sjis &
+
+起動する時にいちいちオプションを付けるのが面倒な場合は、
+ホームディレクトリの .Xresources に以下のように書いておきましょう。
+
+(例)
+Rxvt*multichar_encoding: sjis
+
+表示する文字コードをシフトJISにすると逆に日本語EUCを表示する事が
+できなくなります。ISO-2022-JPでは表示できます。
+表示する文字コードがシフトJISの時はkinput2などで日本語を
+入力する時に文字を確定すると文字が読めなくなってしまいます。
+
+
+4. 日本語入力の方法
+
+例えば、kinput2を使って日本語を入力したい場合は、
+以下のようにコマンドを入力します。
+
+% setenv XMODIFIERS @im=kinput2
+% rxvt &
+% kinput2 &
+
+(例はcshでの場合です。)
+
+kinput2はrxvtより先に起動しても後に起動しても構いません。
+Shift + Space キーで日本語入力を開始する事ができます。
+.Xresourcesを使ってinput methodの設定を行っている場合は
+環境変数 XMODIFIERS は設定しなくても構いません。
+他のinput methodを使用する場合は、上の例の"kinput2"の所を
+使用するinput methodのコマンド名に置き換えて下さい。
+
+
+5. 背景に画像を張り付ける
+
+rxvtは背景にXPM形式の画像を張り付けることができます。
+せっかくデスクトップの他の部分は派手でかっこいいのに、
+何でrxvtだけ真っ白の背景なんだー! かっこ悪い!!
+とお嘆きのあなたは -pixmap オプションを付けて起動するか、
+
+(例)
+% rxvt -pixmap ~/background.xpm
+
+ホームディレクトリの .Xresources に以下のような感じで
+書いておきましょう。
+
+(例)
+Rxvt*backgroundPixmap: ~/background.xpm
+
+上の例の"background.xpm"の所は張り付けたい画像のファイル名に
+置き換えて下さい。背景に画像を張り付けたら、foregroundの色と
+backgroundの色を見やすいように変えておきましょう。
+そのあたりの設定の方法はマニュアルをごらん下さい。
+
+
+6. マニュアルには書かれていない .Xresourcesの設定
+
+このportでインストールしたrxvtはマニュアルに書かれている
+リソース以外にportに含まれているパッチにによって"inputMethod"と
+"preeditType" の2つのリソースを設定する事ができます。
+例えば、kinput2を使って、OverTheSpotスタイルで
+日本語を入力する場合、ホームディレクトリの .Xresourcesに
+以下のように書いておきます。
+
+(例)
+Rxvt*inputMethod: kinput2
+Rxvt*preeditType: OverTheSpot
+
+inputMethodには使用するinput methodを、preeditTypeには入力のスタイル
+("Root"または"OverTheSpot"のどちらか)を指定して下さい。
+preeditTypeはデフォルトではOverTheSpotになっています。
+
+
+7. 問題点
+
+input methodが有効になっているrxvtの上でkillコマンドを使って
+input methodを殺すと、 rxvtがエラーメッセージを吐いて
+終了してしまう事があります。
+
+
+8. その他いろいろ
+
+このportに含まれているパッチは、京都大学の阪本さんのrxvt-2.4.4非公式patch
+を参考にさせて頂きました。阪本さんには心より感謝致します。
+
+現在、このportでインストールしたrxvtは kinput2 version2.0 fix4 と
+VJE-Delta Ver 2.5 for Linux/BSD [FREE TRIAL VERSION] で
+日本語の入力ができる事を確認しています。
+
+また、このportに関するWebページは
+http://www.nobutaka.com/programs/rxvt.html にあります。
+もし、このportに関するご意見などがございましたら、
+nobutaka@nobutaka.com までお願いします。
+
+-------------------------------------------------------------------------------
+1998年11月6日 萬谷 暢崇 <nobutaka@nobutaka.com>
diff --git a/japanese/rxvt/files/patch-aa b/japanese/rxvt/files/patch-aa
new file mode 100644
index 000000000000..100913b22e47
--- /dev/null
+++ b/japanese/rxvt/files/patch-aa
@@ -0,0 +1,19 @@
+*** Makefile.in.orig Sun Sep 20 17:48:18 1998
+--- Makefile.in Thu Nov 5 17:20:37 1998
+***************
+*** 8,14 ****
+ first_rule: all
+ dummy:
+
+! subdirs = src doc rclock src/graphics
+
+ DIST = INSTALL README.configure configure Makefile Makefile.in
+
+--- 8,14 ----
+ first_rule: all
+ dummy:
+
+! subdirs = src doc
+
+ DIST = INSTALL README.configure configure Makefile Makefile.in
+
diff --git a/japanese/rxvt/files/patch-ab b/japanese/rxvt/files/patch-ab
new file mode 100644
index 000000000000..4d53386dace4
--- /dev/null
+++ b/japanese/rxvt/files/patch-ab
@@ -0,0 +1,54 @@
+*** doc/Makefile.in.orig Thu Oct 22 12:02:09 1998
+--- doc/Makefile.in Thu Nov 5 17:21:57 1998
+***************
+*** 37,43 ****
+
+ #-------------------------------------------------------------------------
+
+! all:
+
+ SEDREPLACE = -e 's%@RXVT_VERSION@%$(VERSION)%g;'\
+ -e 's%@RXVT_LSMDATE@%$(LSMDATE)%g;'\
+--- 37,43 ----
+
+ #-------------------------------------------------------------------------
+
+! all: alldoc
+
+ SEDREPLACE = -e 's%@RXVT_VERSION@%$(VERSION)%g;'\
+ -e 's%@RXVT_LSMDATE@%$(LSMDATE)%g;'\
+***************
+*** 55,61 ****
+
+ tags allbin:
+
+! alldoc: $(basedir)/$(VERNAME).lsm rxvt.1 rxvt.html rxvtRef.html rxvtRef.txt
+
+ $(basedir)/$(VERNAME).lsm: LSM.in ../autoconf/Make.common.in
+ $(SED) $(SEDREPLACE) < $(srcdir)/LSM.in > $@
+--- 55,61 ----
+
+ tags allbin:
+
+! alldoc: rxvt.1
+
+ $(basedir)/$(VERNAME).lsm: LSM.in ../autoconf/Make.common.in
+ $(SED) $(SEDREPLACE) < $(srcdir)/LSM.in > $@
+***************
+*** 63,70 ****
+ rxvt.tbl: yodl/rxvt.yo $(YODL_RXVT) yodl/versioninfo.yo yodl/masonyodl.yo
+ yodl2man -orxvt.tbl yodl/rxvt.yo
+
+! rxvt.1: rxvt.tbl
+! tbl rxvt.tbl > $@
+
+ rxvt.html: yodl/rxvt.yo $(YODL_RXVT) yodl/versioninfo.yo yodl/masonyodl.yo
+ yodl2html -o$@ yodl/rxvt.yo
+--- 63,69 ----
+ rxvt.tbl: yodl/rxvt.yo $(YODL_RXVT) yodl/versioninfo.yo yodl/masonyodl.yo
+ yodl2man -orxvt.tbl yodl/rxvt.yo
+
+! rxvt.1:
+
+ rxvt.html: yodl/rxvt.yo $(YODL_RXVT) yodl/versioninfo.yo yodl/masonyodl.yo
+ yodl2html -o$@ yodl/rxvt.yo
diff --git a/japanese/rxvt/files/patch-ad b/japanese/rxvt/files/patch-ad
new file mode 100644
index 000000000000..75da0b7071cb
--- /dev/null
+++ b/japanese/rxvt/files/patch-ad
@@ -0,0 +1,571 @@
+*** src/command.c.orig Tue Oct 27 00:16:37 1998
+--- src/command.c Thu Nov 5 21:20:34 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 ****
+ 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 ----
+ 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 ;
+ }
+
+ /*}}} */
diff --git a/japanese/rxvt/pkg-comment b/japanese/rxvt/pkg-comment
new file mode 100644
index 000000000000..64e3b82ecef1
--- /dev/null
+++ b/japanese/rxvt/pkg-comment
@@ -0,0 +1 @@
+An xterm replacement that supports pixmap background and Japanese
diff --git a/japanese/rxvt/pkg-descr b/japanese/rxvt/pkg-descr
new file mode 100644
index 000000000000..183eee01cdae
--- /dev/null
+++ b/japanese/rxvt/pkg-descr
@@ -0,0 +1,14 @@
+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
+contributed from Nobutaka Mantani <nobutaka@nobutaka.com>. More
+information can be found at:
+ http://www.nobutaka.com/programs/rxvt.html
+
+HomePage of rxvt: http://babayaga.math.fu-berlin.de/rxvt/
diff --git a/japanese/rxvt/pkg-message b/japanese/rxvt/pkg-message
new file mode 100644
index 000000000000..8f72db42a579
--- /dev/null
+++ b/japanese/rxvt/pkg-message
@@ -0,0 +1,9 @@
+
+---------------------------------------------------------
+
+ If you want information about rxvt in
+ Japanese environment , please see
+ /usr/X11R6/share/doc/rxvt/README.ja (in Japanese) .
+
+---------------------------------------------------------
+
diff --git a/japanese/rxvt/pkg-plist b/japanese/rxvt/pkg-plist
new file mode 100644
index 000000000000..515e67835631
--- /dev/null
+++ b/japanese/rxvt/pkg-plist
@@ -0,0 +1,3 @@
+bin/rxvt
+share/doc/rxvt/README.ja
+@dirrm share/doc/rxvt