Mercurial > kinput2.yaz
annotate lib/ctext.c @ 21:7a454839a6de default tip
add some missing header files
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 09 Mar 2010 19:02:39 +0900 |
parents | 5a32b68b627d |
children |
rev | line source |
---|---|
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2 * ctext.c -- Compound Text <-> Japanese Wide Character String converter |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
3 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
4 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
5 /****************************************************************************** |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
6 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
7 $B!&;X<((B (designation) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
8 1byte multi-byte |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
9 94char 96char 94char 96char |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
10 ------------------------------------------------------- |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
11 G0 : ESC ( F | -none- ESC $ ( F | -none- |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
12 G1 : ESC ) F | ESC - F ESC $ ) F | ESC $ - F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
13 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
14 $B!&=*C<J8;z(B F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
15 1byte |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
16 94chars |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
17 B ASCII |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
18 I JIS KANA |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
19 J JIS-ROMAN |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
20 96chars |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
21 A 8859/1 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
22 B 8859/2 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
23 C 8859/3 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
24 D 8859/4 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
25 F 8859/7 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
26 G 8859/6 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
27 H 8859/8 right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
28 M 8859/9 (DIS) right half |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
29 multi-byte |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
30 94chars ^ 2 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
31 A GB Hanzi |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
32 B JIS Kanji 1983 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
33 C KS Hangul/Hanja |
14
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
34 D JIS X0212 |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
35 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
36 ------------------------------------------------------------------------------- |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
37 COMPOUND_TEXT $B$N;EMM(B (Comopund Text Encoding Version 1 -- MIT X Consortium Standard) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
38 $B!&(BG0 G1 $B$N$_$r;HMQ$9$k!#(BG2 G3 $B$O;HMQ$7$J$$!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
39 $B!&(BG0 $B$,(B GL$B!"(BG1 $B$,(B GR $B$K8F$S=P$5$l$F$*$j!"$=$l$rJQ99$9$k$3$H$O$G$-$J$$!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
40 $B$D$^$j!"(BLocking Shift $B$*$h$S(B Single Shift $B$O;HMQ$7$J$$!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
41 $B!&=i4|@_Dj$H$7$F(B ISO Latin-1 $B$,(B G0/G1 $B$K;X<($5$l$F$$$k!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
42 $B!&%^%k%A%P%$%H$NJ8;z$r(B G0 $B$K;X<($9$k$N$K!"(BESC-$-F $B$O;HMQ$7$J$$!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
43 ESC-$-(-F $B$r;HMQ$9$k!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
44 $B!&;HMQ$G$-$k=*C<J8;z$O!">e$K=q$+$l$?DL$j!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
45 $B!&(BC0 $B$G;HMQ$G$-$kJ8;z$O!"(BNL TAB ESC $B$N$_$H$9$k!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
46 $B!&(BC1 $B$G;HMQ$G$-$kJ8;z$O(B CSI $B$N$_$H$9$k!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
47 $B!&%F%-%9%H$NIA2hJ}8~$N%7!<%1%s%9$,4^$^$l$k!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
48 $B:8$+$i1&(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
49 $B1&$+$i:8(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
50 $B85$NJ}8~$KLa$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
51 ******************************************************************************/ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
52 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
53 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
54 * Copyright (c) 1989 Software Research Associates, Inc. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
55 * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
56 * Permission to use, copy, modify, and distribute this software and its |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
57 * documentation for any purpose and without fee is hereby granted, provided |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
58 * that the above copyright notice appear in all copies and that both that |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
59 * copyright notice and this permission notice appear in supporting |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
60 * documentation, and that the name of Software Research Associates not be |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
61 * used in advertising or publicity pertaining to distribution of the |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
62 * software without specific, written prior permission. Software Research |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
63 * Associates makes no representations about the suitability of this software |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
64 * for any purpose. It is provided "as is" without express or implied |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
65 * warranty. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
66 * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
67 * Author: Makoto Ishisone, Software Research Associates, Inc., Japan |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
68 * ishisone@sra.co.jp |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
69 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
70 #ifndef lint |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
71 static char *rcsid = "$Id: ctext.c,v 2.6 1999/03/10 08:55:15 ishisone Exp $"; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
72 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
73 |
21
7a454839a6de
add some missing header files
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
14
diff
changeset
|
74 #include <string.h> |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
75 |
21
7a454839a6de
add some missing header files
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
14
diff
changeset
|
76 typedef unsigned short wchar; |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
77 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
78 #define CS96 0x100 /* 96chars CS */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
79 #define MBCS 0x200 /* Multibyte CS */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
80 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
81 /* convJWStoCT -- Japanese Wide Character String -> COMPOUND_TEXT */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
82 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
83 convJWStoCT(wstr, xstr, jisroman) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
84 register wchar *wstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
85 register unsigned char *xstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
86 int jisroman; /* true $B$J$i$P(B G0 $B$N%-%c%i%/%?%;%C%H$H$7$F(B JIS ROMAN $B$r!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
87 * false $B$J$i$P(B ASCII $B$r;HMQ$9$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
88 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
89 /* Wide Character string wstr $B$r(B COMPOUND_TEXT xstr $B$KJQ49$7!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
90 * $BJQ498e$N%P%$%H?t$rJV$9(B($B:G8e$N(B null byte $B$O4^$^$J$$(B)$B!#$b$7(B xstr $B$,(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
91 * NULL $B$J$i$PJQ49$O$;$:!"J8;z?t$N$_$rJV$9!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
92 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
93 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
94 register int c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
95 register int g0, g1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
96 register int n = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
97 int g0cs; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
98 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
99 g0cs = jisroman ? 'J' : 'B'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
100 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
101 g0 = 'B'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
102 g1 = CS96|'A'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
103 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
104 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
105 * G0, G1 $B$O<!$N$h$&$K;H$$J,$1$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
106 * G0: ASCII / JIS-ROMAN |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
107 * G1: $B4A;z(B / $B$+$J(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
108 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
109 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
110 while (c = *wstr++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
111 switch (c & 0x8080) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
112 case 0: /* ASCII or C0 or DEL */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
113 if (g0 != g0cs) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
114 if (xstr) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
115 *xstr++ = '\033'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
116 *xstr++ = '('; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
117 *xstr++ = g0cs; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
118 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
119 n += 3; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
120 g0 = g0cs; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
121 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
122 * We have to invalidate G1 here, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
123 * which is unnecessary if Xlib |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
124 * implementation is sane. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
125 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
126 g1 = g0cs; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
127 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
128 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
129 * Of course it isn't necessary to disignate |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
130 * ASCII to G0 before a control character, but |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
131 * someone reported certain version of Xlib needs |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
132 * this. sigh. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
133 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
134 if (c < ' ' || c == 0x7f) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
135 /* C0 or DEL */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
136 if (c == '\t' || c == '\n') { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
137 if (xstr) *xstr++ = c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
138 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
139 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
140 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
141 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
142 if (xstr) *xstr++ = c & 0x7f; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
143 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
144 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
145 case 0x80: /* $B$+$J(B or C1 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
146 if (0x80 <= c && c <= 0x9f) break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
147 if (g1 != 'I') { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
148 if (xstr) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
149 *xstr++ = '\033'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
150 *xstr++ = ')'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
151 *xstr++ = 'I'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
152 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
153 n += 3; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
154 g1 = 'I'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
155 g0 = 'I'; /* invalidate G0. see below */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
156 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
157 if (xstr) *xstr++ = c & 0xff; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
158 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
159 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
160 case 0x8080: /* $B4A;z(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
161 if (g1 != (MBCS|'B')) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
162 if (xstr) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
163 *xstr++ = '\033'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
164 *xstr++ = '$'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
165 *xstr++ = ')'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
166 *xstr++ = 'B'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
167 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
168 n += 4; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
169 g1 = MBCS|'B'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
170 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
171 * We have to invalidate G0 here, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
172 * which is unnecessary if Xlib |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
173 * implementation is sane. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
174 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
175 g0 = MBCS|'B'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
176 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
177 if (xstr) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
178 *xstr++ = (c >> 8) & 0xff; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
179 *xstr++ = c & 0xff; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
180 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
181 n += 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
182 break; |
14
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
183 case 0x8000: |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
184 if (g1 != (MBCS|'D')) { |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
185 if (xstr) { |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
186 *xstr++ = '\033'; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
187 *xstr++ = '$'; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
188 *xstr++ = ')'; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
189 *xstr++ = 'D'; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
190 } |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
191 n += 4; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
192 g1 = MBCS|'D'; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
193 /* |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
194 * We have to invalidate G0 here, |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
195 * which is unnecessary if Xlib |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
196 * implementation is sane. |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
197 */ |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
198 g0 = MBCS|'D'; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
199 } |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
200 if (xstr) { |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
201 *xstr++ = (c >> 8) & 0xff; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
202 *xstr++ = (c & 0xff) | 0x80; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
203 } |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
204 n += 2; |
5a32b68b627d
imported patch 17_kinput2-v3.1-jisx0212.diff
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
205 break; |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
206 default: |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
207 /* $BL5;k$9$k(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
208 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
209 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
210 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
211 if (xstr) *xstr = '\0'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
212 return n; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
213 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
214 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
215 static unsigned char * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
216 getesc(str, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
217 unsigned char *str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
218 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
219 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
220 register int c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
221 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
222 /* $B%(%9%1!<%W%7!<%1%s%9$N!"%(%9%1!<%W$KB3$/(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
223 * $BCf4VJ8;z$H=*C<J8;z$rD4$Y$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
224 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
225 /* $BCf4VJ8;z$O(B 02/00 $B$+$i(B 02/15 $B$^$G(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
226 while (len > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
227 c = *str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
228 if (c < 0x20 || 0x2f < c) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
229 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
230 len--, str++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
231 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
232 /* $B=*C<J8;z$O(B 03/00 $B$+$i(B 07/14 $B$^$G(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
233 if (--len < 0 || (c = *str++) < 0x30 || 0x7e < c) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
234 return (unsigned char *)NULL; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
235 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
236 return str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
237 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
238 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
239 static unsigned char * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
240 getcsi(str, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
241 unsigned char *str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
242 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
243 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
244 register int c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
245 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
246 /* CSI $B%7!<%1%s%9$N!"(BCSI $B$KB3$/(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
247 * $B%Q%i%a%?J8;z!&Cf4VJ8;z$H=*C<J8;z$rD4$Y$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
248 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
249 /* $B%Q%i%a%?$O(B 03/00 $B$+$i(B 03/15 $B$^$G(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
250 while (len > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
251 c = *str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
252 if (c < 0x30 || 0x3f < c) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
253 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
254 len--, str++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
255 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
256 /* $BCf4VJ8;z$O(B 02/00 $B$+$i(B 02/15 $B$^$G(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
257 while (len > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
258 c = *str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
259 if (c < 0x20 || 0x2f < c) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
260 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
261 len--, str++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
262 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
263 /* $B=*C<J8;z$O(B 04/00 $B$+$i(B 07/14 $B$^$G(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
264 if (--len < 0 || (c = *str++) < 0x40 || 0x7e < c) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
265 return (unsigned char *)NULL; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
266 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
267 return str; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
268 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
269 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
270 /* convCTtoJWS -- COMPOUND_TEXT -> Japanese Wide Character String */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
271 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
272 convCTtoJWS(xstr, len, wstr) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
273 register unsigned char *xstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
274 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
275 wchar *wstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
276 /* COMPOUND_TEXT xstr $B$r(B Wide Character string wstr $B$KJQ49$7!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
277 * $BJQ498e$NJ8;z?t$rJV$9(B($B:G8e$N(B null $BJ8;z$O4^$^$J$$(B)$B!#$b$7(B wstr $B$,(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
278 * NULL $B$J$i$PJQ49$O$;$:!"J8;z?t$N$_$rJV$9!#(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
279 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
280 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
281 register int c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
282 int nskip; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
283 int n = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
284 int g0, g1, gs; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
285 unsigned char *xstr1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
286 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
287 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
288 * Compound Text $BCf$K$O(B null octet $B$,4^$^$l$k2DG=@-$,$"$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
289 * $B$=$3$GJ8;zNs$ND9$5(B len $B$r0z?t$G;XDj$G$-$k$h$&$K$7$F$"$k$N$@$,!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
290 * 0 $B$"$k$$$OIi$N;~$K$O(B (null octet $B$O$J$$$b$N$H$7$F(B) strlen() $B$G(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
291 * $BD9$5$rD4$Y$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
292 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
293 if (len <= 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
294 len = strlen((char *)xstr); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
295 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
296 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
297 /* $B=i4|>uBV$O!"(BISO 8859/1 $B$,(B G0/G1 $B$KF~$C$F$$$k(B */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
298 g0 = 'B'; /* ASCII -> G0 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
299 g1 = CS96|'A'; /* Latin/1 right hand part -> G1 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
300 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
301 while (len-- > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
302 switch (c = *xstr++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
303 case '\n': /* NEWLINE */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
304 case '\t': /* TAB */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
305 if (wstr) *wstr++ = c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
306 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
307 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
308 case 0x9b: /* CSI */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
309 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
310 * CSI $B$N0lHL7A$O(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
311 * CSI {P} {I} F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
312 * $B%Q%i%a%?(B P $B$O(B 03/00 $B$+$i(B 03/15$B!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
313 * $BCf4VJ8;z(B I $B$O(B 02/00 $B$+$i(B 02/15$B!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
314 * $B=*C<J8;z(B F $B$O(B 04/00 $B$+$i(B 07/14 $B$NHO0O(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
315 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
316 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
317 * $B8=:_Dj5A$5$l$F$$$k$N$O(B directionality $B$@$1$G!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
318 * $B$=$l$O(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
319 * CSI-1-] begin left-to-right text |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
320 * CSI-2-] begin right-to-left text |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
321 * CSI-] end of string |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
322 * $B$G$"$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
323 * $B$,$H$j$"$($::#$O$3$l$rL5;k$9$k$N$G!"(BCSI $B$N(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
324 * $B%7!<%1%s%9$O$9$Y$FL5;k!"$H$$$&$3$H$K$J$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
325 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
326 xstr1 = getcsi(xstr, len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
327 if (xstr1 == NULL) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
328 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
329 len -= xstr1 - xstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
330 xstr = xstr1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
331 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
332 case '\033': /* ESC */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
333 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
334 * $B%(%9%1!<%W%7!<%1%s%9$N0lHL7A$O(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
335 * ESC {I} F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
336 * $BCf4VJ8;z(B I $B$O(B 02/00 $B$+$i(B 02/15 $B$G!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
337 * $B=*C<J8;z(B F $B$O(B 03/00 $B$+$i(B 07/14 $B$NHO0O(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
338 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
339 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
340 * $B8=:_Dj5A$5$l$F$$$k$N$O!"(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
341 * $B%9%?%s%@!<%I%-%c%i%/%?%;%C%H(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
342 * ESC-(-F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
343 * ESC-$-(-F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
344 * ESC-)-F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
345 * ESC---F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
346 * ESC-$-)-F |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
347 * $B%N%s%9%?%s%@!<%I%-%c%i%/%?%;%C%H(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
348 * ESC-%-/-[0123] |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
349 * $B%9%?%s%@!<%I$J%-%c%i%/%?%;%C%H$O@5$7$/2r<a(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
350 * $B$7$J$/$F$O$J$i$J$$$7!"%N%s%9%?%s%@!<%I$J$b$N$O(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
351 * $BL5;k$9$k$1$l$I$b%G!<%?$r%9%-%C%W$9$kI,MW$,$"$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
352 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
353 xstr1 = getesc(xstr, len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
354 if (xstr1 == NULL) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
355 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
356 len -= xstr1 - xstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
357 switch (xstr1 - xstr) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
358 case 2: /* ESC - I - F */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
359 switch (*xstr++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
360 case '(': /* 94chars CS -> G0 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
361 g0 = *xstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
362 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
363 case ')': /* 94chars CS -> G1 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
364 g1 = *xstr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
365 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
366 case '-': /* 96chars CS -> G1 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
367 g1 = *xstr | CS96; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
368 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
369 default: /* ignore */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
370 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
371 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
372 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
373 case 3: /* ESC - I - I - F */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
374 switch (*xstr++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
375 case '$': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
376 switch (*xstr++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
377 case '(': /* 94chars MBCS -> G0 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
378 g0 = *xstr | MBCS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
379 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
380 case ')': /* 94chars MBCS -> G1 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
381 g1 = *xstr | MBCS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
382 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
383 case '-': /* 96chars MBCS -> G1 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
384 g1 = *xstr | CS96 | MBCS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
385 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
386 default: /* ignore */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
387 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
388 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
389 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
390 case '%': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
391 if (*xstr++ != '/') { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
392 /* unknown sequence */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
393 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
394 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
395 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
396 * $B%W%i%$%Y!<%H%(%s%3!<%G%#%s%0(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
397 * $B40A4$KL5;k$9$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
398 * $B$?$@$7$=$N$"$H$KB3$/%G!<%?$r(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
399 * $B%9%-%C%W$9$kI,MW$,$"$k(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
400 * ESC-%-/-F-M-L |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
401 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
402 len -= 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
403 if (len < 0) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
404 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
405 nskip = (*xstr1 & 0x7f) * 128 + |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
406 (*(xstr1 + 1) & 0x7f); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
407 if ((len -= nskip) < 0) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
408 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
409 xstr1 += nskip + 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
410 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
411 default: |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
412 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
413 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
414 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
415 default: |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
416 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
417 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
418 xstr = xstr1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
419 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
420 default: |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
421 if (!(c & 0x60)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
422 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
423 * NL/TAB/ESC/CSI $B0J30$N(B C0 or C1 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
424 * $B$3$l$OL@$i$+$K%(%i!<(B |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
425 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
426 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
427 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
428 gs = (c & 0x80) ? g1 : g0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
429 c &= 0x7f; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
430 if (gs & MBCS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
431 switch (gs & 0x70) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
432 case 0x70: /* 4byte/char */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
433 if (--len < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
434 c = (c << 8) | (*xstr++ & 0x7f); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
435 case 0x60: /* 3byte/char */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
436 if (--len < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
437 c = (c << 8) | (*xstr++ & 0x7f); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
438 case 0x50: /* 2byte/char */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
439 case 0x40: /* 2byte/char */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
440 if (--len < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
441 c = (c << 8) | (*xstr++ & 0x7f); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
442 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
443 default: |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
444 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
445 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
446 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
447 if (wstr) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
448 switch (gs) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
449 case 'B': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
450 case 'J': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
451 *wstr++ = c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
452 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
453 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
454 case 'I': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
455 *wstr++ = 0x80 | c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
456 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
457 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
458 case MBCS|'B': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
459 *wstr++ = 0x8080 | c; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
460 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
461 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
462 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
463 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
464 switch (gs) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
465 case 'B': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
466 case 'J': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
467 case 'I': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
468 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
469 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
470 case MBCS|'B': |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
471 n++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
472 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
473 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
474 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
475 break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
476 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
477 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
478 if (wstr) *wstr = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
479 return n; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
480 } |