# 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からどうぞ。