home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
comm
/
ykh121.zip
/
YKHSRC.ZIP
/
INPUT.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-27
|
3KB
|
137 lines
#include "romkan.h"
#include "graph.h"
#include "input.h"
unsigned kana_ptr;
unsigned char kana_buf[81];
unsigned char kana_string[81];
unsigned inputmode;
#define EUC 8
#define SHIFT_JIS 9
extern int sixteen_encoding;
extern int fix_jis;
void displayinput()
{
unsigned i;
unsigned j;
i=0;
while (kana_buf[i])
{
if (kana_buf[i]&0x80)
{
j=kana_buf[i]&0x7f;
if (j>='0') j-=8;
j-='!';
j*=94;
j+=(kana_buf[i+1]&0x7f)-'!';
(*graph_put)(j,0,i++);
}
else
(*graph_ascii_put)(kana_buf[i],0,i);
i++;
}
(*graph_clear)(0,i,1,80-i);
if (inputmode!=INPUT_VT100)
(*graph_set)(0,i,1,1);
}
void ChangeInput(unsigned mode)
{
inputmode=mode;
kana_string[kana_ptr=0]=0;
kana_buf[0]=0;
if (inputmode==INPUT_VT100)
{
if (fix_jis)
{
if (sixteen_encoding==SHIFT_JIS)
strcpy(kana_buf,"SJIS|f|F5:VT320 F6:hiragana F7:katakana F8:EUC/SJIS F9:refresh CTRL+F10:quit");
else
strcpy(kana_buf,"EUC |f|F5:VT320 F6:hiragana F7:katakana F8:EUC/SJIS F9:refresh CTRL+F10:quit");
}
else
{
if (sixteen_encoding==SHIFT_JIS)
strcpy(kana_buf,"SJIS| |F5:VT320 F6:hiragana F7:katakana F8:EUC/SJIS F9:refresh CTRL+F10:quit");
else
strcpy(kana_buf,"EUC | |F5:VT320 F6:hiragana F7:katakana F8:EUC/SJIS F9:refresh CTRL+F10:quit");
}
}
displayinput();
}
void InputInit()
{
ChangeInput(INPUT_VT100);
}
void DoInput(unsigned scancode)
{
unsigned char c;
if (inputmode==INPUT_VT100)
TransKey(scancode);
else
{
c=scancode%256;
switch(c)
{
case 0x08: /* backspace */
if (kana_ptr)
{
kana_ptr--;
kana_string[kana_ptr]=0;
}
break;
case 0x20:
case 0x0D: /* carriage return */
if (kana_ptr==0)
com_send(0x0D);
else
{
kana_ptr=0;
while (kana_buf[kana_ptr])
{
if (kana_buf[kana_ptr]&0x80)
{
com_send(0x1b); com_send('$'); com_send('B');
while (kana_buf[kana_ptr]&0x80)
{
com_send(kana_buf[kana_ptr++]&0x7F);
com_send(kana_buf[kana_ptr++]&0x7F);
}
com_send(0x1b); com_send('('); com_send('B');
}
else
com_send(kana_buf[kana_ptr++]);
}
if (c==0x20)
com_send(0x0D);
}
ChangeInput(INPUT_VT100);
return;
default:
if (kana_ptr<79)
{
kana_string[kana_ptr++]=(scancode%256);
kana_string[kana_ptr]=0;
}
}
if (inputmode==INPUT_HIRAGANA)
romajitohiragana(kana_buf,kana_string);
else
romajitokatakana(kana_buf,kana_string);
displayinput();
}
}