# MGLDIR : mgl direcory (headers,libs,shared objects,fonts ..) MGLDIR=/usr/local/lib/mgl2 # MGL_SBIN_DIR mgl server directory MGL_SBIN_DIR=/usr/local/sbin MGL_BIN_DIR=/usr/local/bin # set MGL_HEADER_DIR to specify header direcotry MGL_HEADER_DIR=/usr/local/include # set MGL_LIB_DIR to specify library direcotry MGL_LIB_DIR=/usr/local/lib ifndef MGL_HEADER_DIR MGL_HEADER_DIR = ${MGLDIR} endif ifndef MGL_LIB_DIR MGL_LIB_DIR = ${MGLDIR} endif # # X11 event magager options # MAX_COLOR=4096 DULLY_DISPLAY=y SUPPORT_X_KEYMOUSE=y # # default draw_engines # SUPPORT_GENERIC_16COLOR=y SUPPORT_GENERIC_192COLOR=y SUPPORT_GENERIC_FULLCOLOR=y # event magager for client # SUPPORT_CLIENT=y # server option SERVER_X11 = mglsvrx OBJS_X11=emx11.o SERVER_CONS = mglsvrcons OBJS_CONS=emcons.o NATIVE_DRAW_ENGINE1=dec4rr FONT_ENGINE=ferom # secondary event manager EVENT_MANAGER=emx11 EVENT_MANAGER=emcons #MGL_MACHINE=MGL_MACHINE_MAC_ADB #MGL_MACHINE=MGL_MACHINE_MG_FREEBSD #MGL_MACHINE=MGL_MACHINE_MG_LINUX MGL_MACHINE=MGL_MACHINE_HPCMIPS #MGL_MACHINE=MGL_MACHINE_SVGA ##MGL_MACHINE=MGL_MACHINE_NONE # optimization USE_LOCAL_MEMSET=y USE_LOCAL_MEMMOVE=y OPTIMIZE_FOR=OPTTYPE_MIPS # im option input-method ##IM_STATIC=y IM_DYNAMIC=y IM_PROG=imcanna.so INCS_IM=-I/usr/local/canna/include LIBS_IM=-L/usr/local/lib -lcanna # mil options USE_JPEG = -DUSE_JPEG JPEGINCDIR = -I/usr/local/include JPEGLIBDIR = -L/usr/local/lib JPEGLIB = -ljpeg USE_GIF = -DUSE_GIF GIFINCDIR = -I/usr/local/include GIFLIBDIR = -L/usr/local/lib GIFLIB = -lungif USE_PNG = -DUSE_PNG PNGINCDIR = -I/usr/local/include/libpng12 PNGLIBDIR = -L/usr/local/lib PNGLIB = -lpng12 -lz -lm # default: redefine OSTYPE OSTYPE=NetBSD
#! /bin/sh exec mglsvrcons \ -e "for i in 1 2 3 do mgterm -f 8,10,12,16,24 \ -p rb -b 15 \ -W ~m-ito/img/NetBSD-very-smaller-inv.png \ -e 'bash --login'& sleep 2 done mini_mil& sleep 2 mdate& sleep 2"
//#define MK_DUMP_SCREEN MK_F8のコメントを外して、マクロ定義を有効にすると画面ダンプが 取れるようになります。ただしデフォルトではF8(A8)キーが ダンプ機能に割り当てられており、mgtermのフォントサイズ 切替えキーと重なっており使いにくいです。適当な別のキー に変更することをお奨めします。私は
#define MK_DUMP_SCREEN MK_F6でサーバーをmakeし直しました。F6(A6)を押下すると、mglsvrcons を起動したディレクトリにscreen.mgrとscreen.xpmというファイル名で 画面ダンプが生成されます。
-- ここから -- # # for mgl # TTY=`tty`; export TTY ##MGL_DISPLAY=`basename ${TTY}`;export MGL_DISPLAY # ##MGLIM=imsoft.so;export MGLIM ##MGLIM=imopenpobox.so;export MGLIM MGLIM=imcanna.so;export MGLIM mgterm_MGLIM=;export mgterm_MGLIM # ##MGLGP=gpnine.so;export MGLGP # ##FGCOLOR=#000000; export FGCOLOR FGCOLOR=#ffffff; export FGCOLOR ##BGCOLOR=#ffffff; export BGCOLOR BGCOLOR=#000000; export BGCOLOR # FGCOLOR0=#000000; export FGCOLOR0 FGCOLOR1=#0000ff; export FGCOLOR1 FGCOLOR2=#00ff00; export FGCOLOR2 FGCOLOR3=#00ffff; export FGCOLOR3 FGCOLOR4=#ff0000; export FGCOLOR4 FGCOLOR5=#ff00ff; export FGCOLOR5 FGCOLOR6=#ffff00; export FGCOLOR6 FGCOLOR7=#ffffff; export FGCOLOR7 # BGCOLOR0=#000000; export BGCOLOR0 BGCOLOR1=#0000ff; export BGCOLOR1 BGCOLOR2=#00ff00; export BGCOLOR2 BGCOLOR3=#00ffff; export BGCOLOR3 BGCOLOR4=#ff0000; export BGCOLOR4 BGCOLOR5=#ff00ff; export BGCOLOR5 BGCOLOR6=#ffff00; export BGCOLOR6 BGCOLOR7=#ffffff; export BGCOLOR7 # ##CURSOR_SHAPE=UL ##CURSOR_SHAPE=RECT CURSOR_SHAPE=BLOCK -- ここまで --
-- ここから -- #! /bin/sh img="/home/m-ito/img/NetBSD-very-smaller-inv.png" bright="12" position="rb" # if [ "X$1" != "X" ] then img="$1" fi # if [ "X$2" != "X" ] then bright="$2" fi # if [ "X$3" != "X" ] then position="$3" fi # if [ "X${TTY}" != "X" ] then echo "^[#1;${img};${bright};${position}" >${TTY} fi -- ここまで --
-- ここから -- image/*; mgtimg.sh %s 12 cc -- ここまで --
diff -cr ../Canna35b2.ORG/canuum/canna.c ./canuum/canna.c *** ../Canna35b2.ORG/canuum/canna.c Fri Jun 3 07:43:27 2005 --- ./canuum/canna.c Tue May 31 19:57:14 2005 *************** *** 104,110 **** #include <fcntl.h> #include <ctype.h> ! #if defined(BSD42) || defined(__FreeBSD__) # include <sgtty.h> #endif /* BSD42 */ --- 104,110 ---- #include <fcntl.h> #include <ctype.h> ! #if defined(BSD42) || defined(__FreeBSD__) || defined(__NetBSD__) # include <sgtty.h> #endif /* BSD42 */ diff -cr ../Canna35b2.ORG/canuum/sheader.h ./canuum/sheader.h *** ../Canna35b2.ORG/canuum/sheader.h Fri Jun 3 07:43:27 2005 --- ./canuum/sheader.h Tue May 31 19:56:08 2005 *************** *** 318,324 **** extern void set_keypad_on (); extern void set_keypad_off (); extern void set_scroll_region (); ! #if defined(linux) || defined(__FreeBSD__) || defined(__MACHTEN__) #define HAVE_SETENV #endif #ifndef HAVE_SETENV --- 318,324 ---- extern void set_keypad_on (); extern void set_keypad_off (); extern void set_scroll_region (); ! #if defined(linux) || defined(__FreeBSD__) || defined(__MACHTEN__) || defined(__NetBSD__) #define HAVE_SETENV #endif #ifndef HAVE_SETENV
canuumの起動
##PREFIX=/usr/pkg PREFIX=/usr/local
*** romakana_he.c.ORG Thu Jun 2 16:50:50 2005 --- romakana_he.c Thu Jun 2 16:55:23 2005 *************** *** 143,149 **** --- 143,153 ---- rktable[119].roma = "myi"; rktable[119].kana = "\244\337\244\243"; rktable[120].roma = "myo"; rktable[120].kana = "\244\337\244\347"; rktable[121].roma = "myu"; rktable[121].kana = "\244\337\244\345"; + #if 0 rktable[122].roma = "n'"; rktable[122].kana = "\244\363"; + #else + rktable[122].roma = "nn"; rktable[122].kana = "\244\363"; + #endif rktable[123].roma = "na"; rktable[123].kana = "\244\312"; rktable[124].roma = "ne"; rktable[124].kana = "\244\315"; rktable[125].roma = "ni"; rktable[125].kana = "\244\313";
辞書を作成します。
但し、fugodicnn.plに関しては、以下の修正を加えて利用させて もらってます。
*** fugodicnn.pl.ORG Fri Jun 3 01:36:13 2005 --- fugodicnn.pl Fri Jun 3 01:36:40 2005 *************** *** 20,27 **** } #ronsi -> ronnsi ! if(/[aiouo]n[^naiueo]/){ ! s/([aiouo])n([^naiueo])/$1nn$2/g; } #output --- 20,32 ---- } #ronsi -> ronnsi ! if(/[aiueo]n[^naiueo]/){ ! s/([aiueo])n([^naiueo])/$1nn$2/g; ! } ! ! ##n -> nn add by m-ito ! #if(/^n\t/){ ! # s/^n\t/nn\t/; #} #output
インストールします。
起動スクリプトの作成。
#! /bin/sh cd /usr/local/OpenPOBox/server/ || exit 1 exec ./pbserver &
OpenPOBoxの売りである「予測」がちゃんと機能します(^O^)/。
*** pty.C.ORG Thu Mar 30 15:46:54 2006 --- pty.C Mon May 1 16:15:54 2006 *************** *** 6,11 **** --- 6,14 ---- char Pty::endmsg[] = ""; void (*sig_fp)(void) = NULL; + static char nullstr[] = ""; + static char *Tgetstr(char *id, char **area); + // コンストラクタだよん Pty::Pty(int ac, char** av, char* amsg, char* emsg, void (*fp)(void)) { *************** *** 37,55 **** char* pt = funcstr; // スタンドアウト (反転) ! so = tgetstr("so", &pt); ! se = tgetstr("se", &pt); // アンダーライン (下線) ! us = tgetstr("us", &pt); ! ue = tgetstr("ue", &pt); // カーソル位置の保存,保存した位置への復帰 ! sc = tgetstr("sc", &pt); ! rc = tgetstr("rc", &pt); // カーソル位置から行の最後までを削除する ! ce = tgetstr("ce", &pt); // カラム数とライン数 co = tgetnum("co"); --- 40,58 ---- char* pt = funcstr; // スタンドアウト (反転) ! so = Tgetstr("so", &pt); ! se = Tgetstr("se", &pt); // アンダーライン (下線) ! us = Tgetstr("us", &pt); ! ue = Tgetstr("ue", &pt); // カーソル位置の保存,保存した位置への復帰 ! sc = Tgetstr("sc", &pt); ! rc = Tgetstr("rc", &pt); // カーソル位置から行の最後までを削除する ! ce = Tgetstr("ce", &pt); // カラム数とライン数 co = tgetnum("co"); *************** *** 66,96 **** // ステータスラインへ移動,戻る if (hs) { ! ts = tgoto(tgetstr("ts", &pt), 0, 0); ! fs = tgetstr("fs", &pt); ! ds = tgetstr("ds", &pt); if (ds) { strcat(endmsg, ds); strcat(endmsg, ce); } } else { ! char* cs = tgoto(tgetstr("cs", &pt), li - 2, 0); if (cs) { write(1, ce, strlen(ce)); write(1, cs, strlen(cs)); } ! char* cl = tgetstr("cl", &pt); if (cl) { write(1, cl, strlen(cl)); strcat(endmsg, cl); } ! ds = tgoto(tgetstr("cs", &pt), li - 1, 0); if (ds) { strcat(endmsg, ds); strcat(endmsg, ce); } ! ts = tgoto(tgetstr("cm", &pt), 0, li - 1); fs = rc; } --- 69,99 ---- // ステータスラインへ移動,戻る if (hs) { ! ts = tgoto(Tgetstr("ts", &pt), 0, 0); ! fs = Tgetstr("fs", &pt); ! ds = Tgetstr("ds", &pt); if (ds) { strcat(endmsg, ds); strcat(endmsg, ce); } } else { ! char* cs = tgoto(Tgetstr("cs", &pt), li - 2, 0); if (cs) { write(1, ce, strlen(ce)); write(1, cs, strlen(cs)); } ! char* cl = Tgetstr("cl", &pt); if (cl) { write(1, cl, strlen(cl)); strcat(endmsg, cl); } ! ds = tgoto(Tgetstr("cs", &pt), li - 1, 0); if (ds) { strcat(endmsg, ds); strcat(endmsg, ce); } ! ts = tgoto(Tgetstr("cm", &pt), 0, li - 1); fs = rc; } *************** *** 133,138 **** --- 136,149 ---- fail(); } if (child) { + #if defined(__NetBSD__) + // + // 起動してもなぜか直に終了してしまう原因はexecしたshellが + // 起動しきる前に、その疑似端末のマスタ側を読み込もうとし + // ていたかららしい。 + // + sleep(1); + #endif close(0); int cc; char obuf[BUFSIZ]; *************** *** 156,161 **** --- 167,181 ---- dup2(slave, 1); dup2(slave, 2); close(slave); + #if defined(__NetBSD__) + // + // CTRL-C(SIGINT)等のシグナルが効かなかった原因は、疑似端末の + // スレーブが制御端末として設定できていなかったかららしい。 + // + // stdin(=疑似端末のスレーブ)を制御端末とする + // + ioctl(0, TIOCSCTTY, 0); + #endif if (ac > 1) execvp(av[1], &av[1]); else *************** *** 292,296 **** --- 312,331 ---- if (sig_fp != NULL) (*sig_fp)(); exit(0); + } + } + + // + // termcapエントリが貧弱な場合core dumpするのを防ぐ為のtgetstr代替 + // + static char *Tgetstr(char *id, char **area) + { + static char *str; + + str = tgetstr(id, area); + if (str == (char *)NULL){ + return(nullstr); + }else{ + return(str); } }
*** pobox.C.ORG Mon Jun 26 16:26:35 2006 --- pobox.C Mon Jun 26 22:06:22 2006 *************** *** 16,21 **** --- 16,25 ---- #endif #define ESC_KEY 27 #define CTRL_KEYS 31 // default control keys + // add start 2006/06/26 by m-ito + #define NEXTPAGE_KEY (14) // CTRL-N + #define PREVPAGE_KEY (16) // CTRL-P + // add end 2006/06/26 by m-ito const char *mode_name[2] = {"[En]", "[Ja]"}; *************** *** 191,197 **** --- 195,205 ---- continue; } // if you input ESC_KEY, goto alphabet input mode (specialize case for vi) + #if 0 if (mode!=POBOX_MODE_ALPHABET && (*s != '\0' && *s != '\b' && *s !='\r' && *s!='\n' ) && *s<CTRL_KEYS ) { + #else // add page up/down function 2006/06/26 by m-ito + if (mode!=POBOX_MODE_ALPHABET && (*s != '\0' && *s != '\b' && *s !='\r' && *s!='\n' && *s != NEXTPAGE_KEY && *s != PREVPAGE_KEY) && *s<CTRL_KEYS ) { + #endif mode = POBOX_MODE_ALPHABET; modeline(); del_cand(length); *************** *** 258,263 **** --- 266,280 ---- } break; + // add start 2006/06/26 by m-ito + case PREVPAGE_KEY: // CTRL-P + if (curpage > 0){ + curcand = page[curpage] - 1; + curpage--; + } + break; + // add end 2006/06/26 by m-ito + case '\r': // decide pattern case '\n': if(curcand<0) { *************** *** 281,286 **** --- 298,312 ---- break; + // add start 2006/06/26 by m-ito + case NEXTPAGE_KEY: // CTRL-N + if (page[curpage + 1] > page[curpage] && page[curpage + 1] < ncands){ + curpage++; + curcand = page[curpage]; + } + break; + // add end 2006/06/26 by m-ito + default: if(curcand<0) { decide(target); *************** *** 340,345 **** --- 366,374 ---- break; case ' ': + // add start 2006/06/26 by m-ito + case NEXTPAGE_KEY: // CTRL-N + // add end 2006/06/26 by m-ito status = POBOX_SELECT_ON; curcand = 0; break;
# # mgterm(コンソール)以外は日本語入力にimopenpoboxを使う # MGLIM=imopenpobox.so;export MGLIM # # mgterm(コンソール)はimopenpoboxを使わない(すなわちpofepを使う) # mgterm_MGLIM=;export mgterm_MGLIM
# # execute pofep # alias epf='exec pofep bash --login'
#define FEP_KEY 15でCTRL-Oに割り当てて使ってます。
# 登録単語 登録単語の読み 難解な単語 nannkainatanngo上記のようなフォーマットで登録したい単語、読みを記述する(複数行可能)
5 登録したい単語 tourokusitaitanngo<LF>
1
6 削除したい単語 sakujositaitanngo<LF>
1
0<LF>
hardstatus alwayslastline "%w"
"\e[3~": backward-delete-char
Operation
取得は mgdraw-0.2.tar.gzからどうぞ。