#ifndef _POBOXKEY_H_
#define _POBOXKEY_H_

#define	MAXCANDKEYS		100		/* 候補の最大個数 */
#define MAXCANDLINES	3		/* 侯補をメニュー表示するときの最大表示行数 */
#define	PHRASEFILE		TEXT("phrase")
#define	WORDFILE		TEXT("word")

#define DELSTR			"DEL"
#define ENTERSTR		"RET"
#define MODSTR			"MOD"
#define CANSTR			"CAN"
#define ALTSTR			"ALT"
#define JPNSTR			"JPN"
#define ENGSTR			"ENG"
#define SFTSTR			"SFT"
#define	CAPSTR			"CAP"
#define	NEXTSTR			"NXT"
#define	PREVSTR			"PRV"
#define	UPSTR			"UP"
#define	DOWNSTR			"DWN"
#define	LEFTSTR			"LFT"
#define	RIGHTSTR		"RGT"
#define	ZENSTR			"ZEN"
#define	HANSTR			"HAN"
#define	KATASTR			"KAT"
#define	TABSTR			"TAB"

typedef struct {
	int		x, y ;			/* 表示開始座標 */
	int		width ;			/* 横ドット数 */
	int		height ;		/* 縦ドット数 */
	CHAR	str[ 64 ] ;
	CHAR	yomi[ 64 ] ;
} Key ;

typedef enum {
	JAPANESE,		/* かなモード */
	ENGLISH,		/* アルファベットモード */
} InputMode ;

typedef enum {
	NEWCAND, NEXTCAND, PREVCAND
} CandType ;

typedef struct {
	int		x, y ;		/* 表示開始座標 */
	int		width ;		/* 横幅 */
	int		height ;	/* 行数 */
} CandPos ;

#ifdef	__cplusplus
extern "C" {
#endif

	Key		*inkey( Key *key, int x, int y ) ;
	int		readphrases( void ) ;
	int		writephrases( void ) ;
	LPCSTR	addphrase( LPCSTR p, LPCSTR c, LPCSTR y, BOOL fForce ) ;
	int		makecand( CandType candtype, BOOL fForce ) ;
	BOOL	check_abort( void ) ;
	int		strwidth( LPCSTR str ) ;

	extern	InputMode	inputmode ;		/* 入力モード */
	extern	TCHAR		g_szDictBase[] ;/* 辞書格納フォルダ */
	extern	Key			candkey[] ;		/* 候補キー */
	extern	Key			g_KeyNormal[] ;		/* アルファベットキー */
	extern	Key			g_KeyShift[] ;		/* Shiftキー */
	extern	Key			g_KeyRoma[] ;		/* ローマ字キー */
	extern	Key			g_KeyHira[] ;	/* かなキー */
	extern	int			g_dwNumCand ;	/* 表示侯補数 */
	extern	DWORD		g_dwCandIndex ;

	extern	CandPos		g_CandPos ;
	extern	CHAR		hstr[128] ;		/* 未確定文字列 */
	extern	CHAR		outstr[128] ;	/* 確定文字列 (予測に使用) */

#ifdef	__cplusplus
} ;
#endif

#endif
