漢触コード、まだ途中です……orz

※2005年11月26日1:03:44追記:この方法で作成した繭姫定義は、正しく機能しません……理由は後日記述します。


(一つ前: PSS用の仮想鍵盤について@親指シフト+漢直ネタ)
(割り当て予定: 一部JIS順から離れた読みを付け始めてみたり@親指シフト漢直ネタ)

 現在、表計算ソフト(OpenOffice.org Calc)の関数のみを使って、漢直の繭姫定義を作ろうとしています。
 #えっ、「マクロは使わないのか?」って……マクロは触ったこともないのですよ(ioi)


 どうしても「鍵盤の形をしている表」を経由してスクリプトを作ろうとしていまして、見事に2時間ほど棒に振ってしまいました(ioi)。


 それではダメだ(表と繭姫用スクリプトは別々に生成するほうが早い)ということに気づいてから、ようやくVLOOKUPを使いまくってそれっぽいものを作成できるようになりました。
 しかしながら、現時点ではまだ「右シフト面」のみしかできていません。


 表の一部はこんな感じになっています。
 まずはVLOOKUPで参照するための漢字リスト。

1	哀
2	愛
3	挨
4	姶
5	叡
6	営
7	嬰
8	影
9	映
10	曳
11	栄
12	永
13	泳
14	洩
15	瑛
16	盈
17	穎
18	頴
19	英
20	衛
21	詠
22	鋭
23	甥
24	介
(※以下900まで続く)

 で、上記リストを参照して作成したスクリプト部はこんな感じに。

(このあたり:割り当て順序)     (このあたり:VLOOKUP参照用の数字と、参照後の文字列) (↓ここら辺をコピペ使用)
1	q	1	y		1	1	1		q	y	{ q}{Ry}	哀
2	w	2	u		2	1	2		q	u	{ q}{Ru}	愛
3	e	3	i		3	1	3		q	i	{ q}{Ri}	挨
4	r	4	o		4	1	4		q	o	{ q}{Ro}	姶
5	t	5	p		5	1	5		q	p	{ q}{Rp}	叡
6	a	6	h		6	1	6		q	h	{ q}{Rh}	営
7	s	7	j		7	1	7		q	j	{ q}{Rj}	嬰
8	d	8	k		8	1	8		q	k	{ q}{Rk}	影
9	f	9	l		9	1	9		q	l	{ q}{Rl}	映
10	g	10	;		10	1	10		q	;	{ q}{R;}	曳
11	z	11	n		11	1	11		q	n	{ q}{Rn}	栄
12	x	12	m		12	1	12		q	m	{ q}{Rm}	永
13	c	13	,		13	1	13		q	,	{ q}{R,}	泳
14	v	14	.		14	1	14		q	.	{ q}{R.}	洩
15	b	15	/		15	1	15		q	/	{ q}{R/}	瑛
16	y	16	q		16	1	16		q	q	{ q}{Rq}	盈
17	u	17	w		17	1	17		q	w	{ q}{Rw}	穎
18	i	18	e		18	1	18		q	e	{ q}{Re}	頴
19	o	19	r		19	1	19		q	r	{ q}{Rr}	英
20	p	20	t		20	1	20		q	t	{ q}{Rt}	衛
21	h	21	a		21	1	21		q	a	{ q}{Ra}	詠
22	j	22	s		22	1	22		q	s	{ q}{Rs}	鋭
23	k	23	d		23	1	23		q	d	{ q}{Rd}	甥
24	l	24	f		24	1	24		q	f	{ q}{Rf}	介
25	;	25	g		25	1	25		q	g	{ q}{Rg}	会
26	n	26	z		26	1	26		q	z	{ q}{Rz}	解
27	m	27	x		27	1	27		q	x	{ q}{Rx}	回
28	,	28	c		28	1	28		q	c	{ q}{Rc}	塊
29	.	29	v		29	1	29		q	v	{ q}{Rv}	壊
30	/	30	b		30	1	30		q	b	{ q}{Rb}	廻
					31	2	1		w	y	{ w}{Ry}	快
					32	2	2		w	u	{ w}{Ru}	怪
					33	2	3		w	i	{ w}{Ri}	悔
					34	2	4		w	o	{ w}{Ro}	恢
					35	2	5		w	p	{ w}{Rp}	懐
					36	2	6		w	h	{ w}{Rh}	戒
					37	2	7		w	j	{ w}{Rj}	拐
					38	2	8		w	k	{ w}{Rk}	改
					39	2	9		w	l	{ w}{Rl}	魁
					40	2	10		w	;	{ w}{R;}	晦
					41	2	11		w	n	{ w}{Rn}	械
					42	2	12		w	m	{ w}{Rm}	海
(※以下900まで続く)

 中括弧でくくられた列と、漢字が書かれた列の2列のみをコピペすれば、(セル間はTabで区切られるので)そのまま繭姫用定義として貼り付けて使える……はずです(まだ未確認)。


 普通ならば、もっとシンプル(ないしはエレガント)にコードを書いて「さくっと自動生成」するほうが良いような気もするのですが、私の場合は表計算ソフトの関数を使ってだましだましやるほうが合っているらしいです……
 うーん、こんなことでいいのでしょうか>私^^;


 ちなみに、当初の目的どおり「打鍵順を逆順にしたもの」も、この方法ですと簡単に作れるようです(キーシーケンス列を逆順にすれば良いだけ、ということで)。
 文字キーを逆に打って漢字を出す場合はこんな感じですね……うまくキーシーケンスだけが逆順になっているっぽいです。

						1	0					
1	q	1	y		1	1	1		y	q	{ y}{Rq}	哀
2	w	2	u		2	1	2		u	q	{ u}{Rq}	愛
3	e	3	i		3	1	3		i	q	{ i}{Rq}	挨
4	r	4	o		4	1	4		o	q	{ o}{Rq}	姶
5	t	5	p		5	1	5		p	q	{ p}{Rq}	叡
6	a	6	h		6	1	6		h	q	{ h}{Rq}	営
7	s	7	j		7	1	7		j	q	{ j}{Rq}	嬰
8	d	8	k		8	1	8		k	q	{ k}{Rq}	影
9	f	9	l		9	1	9		l	q	{ l}{Rq}	映
10	g	10	;		10	1	10		;	q	{ ;}{Rq}	曳
11	z	11	n		11	1	11		n	q	{ n}{Rq}	栄
12	x	12	m		12	1	12		m	q	{ m}{Rq}	永
13	c	13	,		13	1	13		,	q	{ ,}{Rq}	泳
14	v	14	.		14	1	14		.	q	{ .}{Rq}	洩
15	b	15	/		15	1	15		/	q	{ /}{Rq}	瑛
16	y	16	q		16	1	16		q	q	{ q}{Rq}	盈
17	u	17	w		17	1	17		w	q	{ w}{Rq}	穎
18	i	18	e		18	1	18		e	q	{ e}{Rq}	頴
19	o	19	r		19	1	19		r	q	{ r}{Rq}	英
20	p	20	t		20	1	20		t	q	{ t}{Rq}	衛
21	h	21	a		21	1	21		a	q	{ a}{Rq}	詠
22	j	22	s		22	1	22		s	q	{ s}{Rq}	鋭
23	k	23	d		23	1	23		d	q	{ d}{Rq}	甥
24	l	24	f		24	1	24		f	q	{ f}{Rq}	介
25	;	25	g		25	1	25		g	q	{ g}{Rq}	会
26	n	26	z		26	1	26		z	q	{ z}{Rq}	解
27	m	27	x		27	1	27		x	q	{ x}{Rq}	回
28	,	28	c		28	1	28		c	q	{ c}{Rq}	塊
29	.	29	v		29	1	29		v	q	{ v}{Rq}	壊
30	/	30	b		30	1	30		b	q	{ b}{Rq}	廻
					31	2	1		y	w	{ y}{Rw}	快
					32	2	2		u	w	{ u}{Rw}	怪
					33	2	3		i	w	{ i}{Rw}	悔
					34	2	4		o	w	{ o}{Rw}	恢
					35	2	5		p	w	{ p}{Rw}	懐
					36	2	6		h	w	{ h}{Rw}	戒
					37	2	7		j	w	{ j}{Rw}	拐
					38	2	8		k	w	{ k}{Rw}	改
					39	2	9		l	w	{ l}{Rw}	魁
					40	2	10		;	w	{ ;}{Rw}	晦
					41	2	11		n	w	{ n}{Rw}	械
					42	2	12		m	w	{ m}{Rw}	海

(※以下900まで続く)


 ああ、「目的さえ達成すればいい」というのは確かにそうなのですが、もう少しうまい方法はないものでしょうか……ちょっと微妙。
 このまま他の面(TYBを除いて割り当てすることにしている)についてもうまくいくのかどうか、という点については、翌日チャレンジします。


 #せっかく繭姫を使っているというのに、繭姫らしい「きれいな定義」を書けないという点については、すこしばかり悔しいところです。