diff options
author | Steve Price <steve@FreeBSD.org> | 1998-11-09 01:24:15 +0000 |
---|---|---|
committer | Steve Price <steve@FreeBSD.org> | 1998-11-09 01:24:15 +0000 |
commit | 42a7e144187fefb1b49e6b988350b6da31116840 (patch) | |
tree | 5ed9b40372145bbe5418080f90a359ac3c927936 /japanese/rxvt | |
parent | 74797c9de6ad893509c90db797bd61b61c05d0a8 (diff) | |
download | ports-42a7e144187fefb1b49e6b988350b6da31116840.tar.gz ports-42a7e144187fefb1b49e6b988350b6da31116840.zip |
Notes
Diffstat (limited to 'japanese/rxvt')
-rw-r--r-- | japanese/rxvt/Makefile | 36 | ||||
-rw-r--r-- | japanese/rxvt/distinfo | 1 | ||||
-rw-r--r-- | japanese/rxvt/files/README.ja | 139 | ||||
-rw-r--r-- | japanese/rxvt/files/patch-aa | 19 | ||||
-rw-r--r-- | japanese/rxvt/files/patch-ab | 54 | ||||
-rw-r--r-- | japanese/rxvt/files/patch-ad | 571 | ||||
-rw-r--r-- | japanese/rxvt/pkg-comment | 1 | ||||
-rw-r--r-- | japanese/rxvt/pkg-descr | 14 | ||||
-rw-r--r-- | japanese/rxvt/pkg-message | 9 | ||||
-rw-r--r-- | japanese/rxvt/pkg-plist | 3 |
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 |