# emonsip
# software input panel for EMONSTER(S11HT)
#
# 2008 Nihondo
# http://desireforwealth.com/
# 
# based on popkeyboardsip
# 2007 Hiroyuki Ogasawara
# http://hp.vector.co.jp/authors/VA004474/
# http://dench.flatlib.jp/

#------------------------------------------------------------------------------
# ʂ̃VXe`
#------------------------------------------------------------------------------
# ͏Ȃŉ

#------------------------------------------------------------------------------
# Command
#------------------------------------------------------------------------------
enum 0
edef	CMP_EQ
edef	CMP_NE
edef	CMP_LT
edef	CMP_LE
edef	CMP_GT
edef	CMP_GE

define	SETV		0x08
define	SETA		0x0900
define	CALL		0x0a00
define	_SYSCAL		0x0b01
define	SCALL		0x0c00
define	LOCAL		0x0d
define	RETURN		0x0e00
define	IF		0x10
define	CMP		0x10
define	THEN		0x1100
define	ELSE		0x1200
define	ENDIF		0x1300
define	DO		0x1400
define	WHILE		0x1500
define	EXIT		0x1600

enum 0x17
edef	ADD
edef	SUB
edef	MUL
edef	DIV
edef	MOD
edef	AND
edef	OR
edef	XOR
edef	NEG
edef	NOT

#------------------------------------------------------------------------------
# Symbols
#------------------------------------------------------------------------------
define	TRUE		1
define	FALSE		0

#------------------------------------------------------------------------------
# Variables
#------------------------------------------------------------------------------
enum 0x40
edef	ARG0
edef	ARG1
edef	ARG2
edef	ARG3
edef	ARG4
edef	ARG5
edef	ARG6
edef	ARG7
edef	ARG8
edef	ARG9

enum 0x80
edef	GW_STATE
edef	GW_RETVAL0
edef	GW_RETVAL1
edef	GW_RETVAL2
edef	GW_RETVAL3
edef	GW_RETVAL4


#------------------------------------------------------------------------------
# Sip System
#------------------------------------------------------------------------------
enum 0
edef	DLTYPE_OFF
edef	DLTYPE_COPY
edef	DLTYPE_REVERSE
edef	DLTYPE_STRETCH

enum 0
edef	EVENT_NONE
edef	EVENT_DOWN
edef	EVENT_UP
edef	EVENT_MOVE
define	EVENT_WINUP		0x22
define	EVENT_WINMOVE		0x23

enum 0
edef	WIN_MAIN
edef	WIN_1
edef	WIN_2
edef	WIN_3
edef	WIN_4
edef	WIN_5
edef	WIN_6
edef	WIN_7

enum 0
edef	BMP0
edef	BMP1

enum 0
edef	IMECTRL_QUERY
edef	IMECTRL_OPEN
edef	IMECTRL_CLOSE
edef	IMECTRL_TOGGLE


# SystemCall
enum _SYSCAL
edef	SetPanelSize
edef	LoadBitmap
edef	SetDisplayList
edef	DrawDisplayList
edef	SetEventTable
edef	SendVirtual
edef	SendChar
edef	SendString
edef	PrintFormat
edef	ReadTable
edef	OpenWindow
edef	CloseWindow
edef	SetWindowDisplayList
edef	MoveWindow
edef	ResizeWindow
edef	GetScreenPos
edef	SetScale
edef	GetScreenSize
edef	SetImageScale
edef	SetTimer
edef	ImeControl
edef	ImeStatus

# key flags
define	KEYEVENTF_SILENT	4
define	KEYEVENTF_KEYDOWN	0
define	KEYEVENTF_KEYUP		2
define	KEYEVENTF_SKEYDOWN	4
define	KEYEVENTF_SKEYUP	6

# Global Variables
enum 0x90
edef	GW_PX
edef	GW_PY
edef	GW_RX
edef	GW_RY
edef	GW_RW
edef	GW_RH
edef	GW_EVENTTYPE
edef	GW_WID
edef	GW_PARAM0
edef	GW_PARAM1
edef	GW_SHIFTSTATE

# KeyCode
define	VK_BACK		0x08	# [BS]
define	VK_TAB		0x09	# [TAB]
define	VK_CLEAR		0x0c
define	VK_RETURN		0x0d	# [Enter]
define	VK_SHIFT		0x10	# [Shift]
define	VK_CONTROL		0x11	# [Ctrl]
define	VK_MENU		0x12	# [ALT](CE)
define	VK_PAUSE		0x13	# [Pause]
define	VK_CAPITAL		0x14
define	VK_KANA		0x15
define	VK_KANJI		0x19	# [Kanji]
define	VK_ESCAPE		0x1b	# [ESC]
define	VK_CONVERT		0x1c	# [ϊ]
define	VK_NCONVERT		0x1d	# [ϊ]
define	VK_SPACE		0x20	# [Space]
define	VK_PRIOR		0x21	# [PageUp]
define	VK_NEXT		0x22	# [PageDown]
define	VK_END		0x23	# [End]
define	VK_HOME		0x24	# [Home]
define	VK_LEFT		0x25	# []
define	VK_UP		0x26	# []
define	VK_RIGHT		0x27	# []
define	VK_DOWN		0x28	# []
define	VK_SELECT		0x29
define	VK_PRINT		0x2a
define	VK_EXECUTE		0x2b
define	VK_SNAPSHOT		0x2c	# [PrintScreen]
define	VK_INSERT		0x2d
define	VK_DELETE		0x2e	# [Del]
define	VK_HELP		0x2f
define	VK_LWIN		0x5b	# [Win]
define	VK_RWIN		0x5c	# RWIN
define	VK_F1		0x70	# SoftKey
define	VK_F2		0x71	# ESoftKey
define	VK_F3		0x72
define	VK_F4		0x73
define	VK_F5		0x74
define	VK_F6		0x75	# RWIN+F6 = [OK]
define	VK_F7		0x76	# RWIN+F7 = [Moji]
define	VK_F8		0x77
define	VK_F9		0x78
define	VK_F10		0x79
define	VK_F11		0x7a
define	VK_F12		0x7b
define	VK_F13		0x7c
define	VK_F14		0x7d
define	VK_F15		0x7e
define	VK_F16		0x7f
define	VK_F17		0x80
define	VK_F18		0x81
define	VK_F19		0x82
define	VK_F20		0x83
define	VK_F21		0x84
define	VK_F22		0x85
define	VK_F23		0x86
define	VK_F24		0x87
define	VK_NUMLOCK		0x90
define	VK_SCROLL		0x91	# [ScrollLock]
define	VK_LSHIFT		0xa0	# pc only
define	VK_RSHIFT		0xa1	# pc only
define	VK_LCONTROL		0xa2	# pc only
define	VK_RCONTROL		0xa3	# pc only
define	VK_LMENU		0xa4	# [ALT]
define	VK_RMENU		0xa5
define	VK_SEMICOLON		0xba	# [;+]
define	VK_EQUAL		0xbb	# [^~]
define	VK_HYPHEN		0xbd	# [-=]
define	VK_COMMA		0xbc	# [,<]
define	VK_PERIOD		0xbe	# [.>]
define	VK_SLASH		0xbf	# [/?]
define	VK_BACKQUOTE		0xc0	# [@`]
define	VK_APP1		0xc1
define	VK_APP2		0xc2
define	VK_APP3		0xc3
define	VK_APP4		0xc4
define	VK_APP5		0xc5
define	VK_APP6		0xc6
define	VK_LBRACKET		0xdb	# [[{]
define	VK_BACKSLASH		0xdc	# [\|]
define	VK_RBRACKET		0xdd	# []}] (us:\|)
define	VK_APOSTROPHE		0xde	# [:*]
define	VK_OFF		0xdf	#
define	VK_OEM_102		0xe2	# [ _]
define	VK_PROCESSKEY		0xe5	# SSPC
define	VK_DBE_ALPHANUMERIC	0xf0	# [p/Caps]
define	VK_DBE_KATAKANA		0xf1	#
define	VK_DBE_HIRAGANA		0xf2	# []
define	VK_DBE_SBCSCHAR		0xf3	# []
define	VK_DBE_DBCSCHAR		0xf4	# [S]
define	VK_DBE_ROMAN		0xf5	#
define	VK_DBE_NOROMAN		0xf6	#


#------------------------------------------------------------------------------
# Fixed Event Function
#------------------------------------------------------------------------------
enum 0
edef	_FuncError
edef	EventSelect
edef	EventDeselect
edef	EventTimer
edef	EventRotate


#------------------------------------------------------------------------------
# Dummy Function
#------------------------------------------------------------------------------
func _FuncError
	# nop
endfunc


#------------------------------------------------------------------------------
# ʂ̃VXe`I
#------------------------------------------------------------------------------

# eL[{[hf[^p̐ݒ肪n܂܂B





# L[s[gx̐ݒ (msec)
define	_UC_KEYREPEAT_TIME1	1200	# Jn
define	_UC_KEYREPEAT_TIME2	300	# s[gx


#------------------------------------------------------------------------------
# User Function/Tables
#------------------------------------------------------------------------------
# 0x40 - 0x1ff ܂ŎRɎg܂B

enum 0x40
edef	ET_Global
edef	ET_Normal
edef	ET_Blue
edef	ET_Pink
edef	ET_NormalMove
edef	ET_BlueMove
edef	ET_PinkMove
edef	ET_Up
#
edef	F_DOWN
edef	F_UP
edef	F_MOVE
edef	F_MOVEOUT
edef	F_SEND_SV
edef	F_REPEAT
edef	F_CANCEL
edef	F_LOCK
edef	F_LOCKCLEAR
edef	F_NORMAL
edef	F_BLUE
edef	F_PINK


#------------------------------------------------------------------------------
# work area
#------------------------------------------------------------------------------
# 0xa0 - 0xbf ܂ŎRɎg܂B

enum 0xa0
edef	GW_MODE
edef	GW_MODE2
edef	GW_SVPARAM0
edef	GW_SVPARAM1
edef	GW_SVRX
edef	GW_SVRY
edef	GW_SVRW
edef	GW_SVRH
edef	GW_LOCK0
edef	GW_LOCK1
edef	GW_IMAGEOFFSET

define	LOCK_MAX		2

#------------------------------------------------------------------------------
# Display List
#------------------------------------------------------------------------------
# 0-15 ܂ŔC

enum 0
edef	DL_MAIN
edef	DL_REV
edef	DL_LOCK0
edef	DL_LOCK1
edef	DL_MAX
edef	DL_SUB0

#------------------------------------------------------------------------------
# Event
#------------------------------------------------------------------------------

define	PANELSIZE_W		240
define	PANELSIZE_H		128

define	EVK_KANJI		0x100

# 
func EventSelect

	# ʃTCYɂăXP[lݒ肷
	GetScreenSize
	CMP CMP_GT $GW_RETVAL0 400
	SETV	$GW_RETVAL2	$GW_STATE
	CMP CMP_GT $GW_RETVAL1 400
	OR	$GW_STATE	$GW_RETVAL2	$GW_STATE
	THEN
		SetScale	512 512
	ENDIF

	# plTCY
	SetPanelSize	PANELSIZE_W PANELSIZE_H

	# 摜Ǎ
	LoadBitmap		BMP0 "emonsip.bmp"

	# Set Normal
	SetDisplayList	DL_MAIN DLTYPE_COPY	0 0 240 128 BMP0 0 0
	SetWindowDisplayList	WIN_MAIN	DL_MAIN	DL_MAX
	SetEventTable	WIN_MAIN	ET_Normal	ET_Global

	SETV	$GW_MODE  ET_Normal
	SETV	$GW_MODE2 ET_NormalMove
	SETV	$GW_IMAGEOFFSET	0

	OpenWindow	WIN_MAIN	0 0 10 10

	SETV	$GW_LOCK0	0
	SETV	$GW_LOCK1	0
endfunc


# I
func EventDeselect
	# nop
endfunc


# Timer
func EventTimer
	CALL	F_REPEAT
	SetTimer	_UC_KEYREPEAT_TIME2
endfunc


#------------------------------------------------------------------------------
# UserFunction
#------------------------------------------------------------------------------

# m[}plI
func F_NORMAL
	CALL	F_LOCKCLEAR
	SetDisplayList	DL_MAIN	DLTYPE_COPY	0 0 240 128 BMP0 0 0
	DrawDisplayList	WIN_MAIN	DL_MAIN	1
	SetEventTable	WIN_MAIN	ET_Normal	ET_Global
	SETV	$GW_MODE	ET_Normal
	SETV	$GW_MODE2	ET_NormalMove
	SETV	$GW_IMAGEOFFSET	0
endfunc


# u[plI
func F_BLUE
	CALL	F_LOCKCLEAR
	SetDisplayList	DL_MAIN	DLTYPE_COPY	0 0 240 128 BMP0 0 128
	DrawDisplayList	WIN_MAIN	DL_MAIN	1
	SetEventTable	WIN_MAIN	ET_Blue	ET_Global
	SETV	$GW_MODE	ET_Blue
	SETV	$GW_MODE2	ET_BlueMove
	SETV	$GW_IMAGEOFFSET	128
endfunc


# sNplI
func F_PINK
	CALL	F_LOCKCLEAR
	SetDisplayList	DL_MAIN	DLTYPE_COPY	0 0 240 128 BMP0 0 256
	DrawDisplayList	WIN_MAIN	DL_MAIN	1
	SetEventTable	WIN_MAIN	ET_Pink	ET_Global
	SETV	$GW_MODE	ET_Pink
	SETV	$GW_MODE2	ET_PinkMove
	SETV	$GW_IMAGEOFFSET	256
endfunc



# ʏL[̉
#  $GW_PARAM0 = keycode
#  $GW_PARAM1 = ǉ̃fBt@CA (0Ŗ)
func F_DOWN
	LOCAL	5
	# ۑĂ (F_UP Ŏg)
	SETV	$GW_SVPARAM0	$GW_PARAM0
	SETV	$GW_SVPARAM1	$GW_PARAM1
	SETV	$GW_SVRX	$GW_RX
	SETV	$GW_SVRY	$GW_RY
	SETV	$GW_SVRW	$GW_RW
	SETV	$GW_SVRH	$GW_RH
	# 󂯎Cxg UP ɂ
	SetEventTable	WIN_MAIN	$GW_MODE2	ET_Up
	# s[gp
	SetTimer	_UC_KEYREPEAT_TIME1
	# |bvAbv
	DIV	$2	$GW_RH	2
	ADD	$1	$GW_RH	$2	# $1= $GW_RH * 1.5
	DIV	$2	$GW_RW	2
	ADD	$0	$GW_RW	$2	# $0= $GW_RW * 1.5
	DIV	$2	$2	2	# $2= $GW_RW / 4
	SUB	$2	$GW_RX	$2
	GetScreenPos	WIN_MAIN	0	$GW_RY
	ADD	$2	$2 $GW_RETVAL0
	SUB	$3	$GW_RETVAL1	$1
	OpenWindow	WIN_1	$2 $3 $0 $1
	ADD	$4	$GW_RY	$GW_IMAGEOFFSET
	SetDisplayList	DL_SUB0	DLTYPE_STRETCH	0 0 $0 $1 BMP0 $GW_RX $4 $GW_RW $GW_RH
	SetWindowDisplayList	WIN_1	DL_SUB0	1
	SetEventTable	WIN_1
endfunc




# MOVE
func F_MOVE
	LOCAL	5
	IF CMP_EQ $GW_PARAM0 $GW_SVPARAM0
	THEN
		RETURN
	ENDIF
	# L[ւꍇ̂
	# ۑĂ (F_UP Ŏg)
	SETV	$GW_SVPARAM0	$GW_PARAM0
	SETV	$GW_SVPARAM1	$GW_PARAM1
	SETV	$GW_SVRX	$GW_RX
	SETV	$GW_SVRY	$GW_RY
	SETV	$GW_SVRW	$GW_RW
	SETV	$GW_SVRH	$GW_RH
	# s[gp
	SetTimer	_UC_KEYREPEAT_TIME1
	# |bvAbv
	DIV	$2	$GW_RH	2
	ADD	$1	$GW_RH	$2	# $1= $GW_RH * 1.5
	DIV	$2	$GW_RW	2
	ADD	$0	$GW_RW	$2	# $0= $GW_RW * 1.5
	DIV	$2	$2	2	# $2= $GW_RW / 4
	SUB	$2	$GW_RX	$2
	GetScreenPos	WIN_MAIN	0	$GW_RY
	ADD	$2	$2 $GW_RETVAL0
	SUB	$3	$GW_RETVAL1	$1
	OpenWindow	WIN_1	$2 $3 $0 $1
	ADD	$4	$GW_RY	$GW_IMAGEOFFSET
	SetDisplayList	DL_SUB0	DLTYPE_STRETCH	0 0 $0 $1 BMP0 $GW_RX $4 $GW_RW $GW_RH
	SetWindowDisplayList	WIN_1	DL_SUB0	1
	SetEventTable	WIN_1
endfunc




# ۑL[̑M
#  $GW_SVPARAM0 = keycode
#  $GW_SVPARAM1 = ǉ̃fBt@CA
func F_SEND_SV
	IF CMP_EQ $GW_SVPARAM0 0
	THEN
		RETURN
	ENDIF
	IF CMP_EQ $GW_SVPARAM0 EVK_KANJI
	THEN
		ImeControl	IMECTRL_TOGGLE
		RETURN
	ENDIF
	# L[M(DOWN)
	IF CMP_NE $GW_SVPARAM1 0
	THEN
		SendVirtual	$GW_SVPARAM1 KEYEVENTF_SKEYDOWN
	ENDIF
	SendVirtual	$GW_SVPARAM0	KEYEVENTF_SKEYDOWN
	# M(UP)
	SendVirtual	$GW_SVPARAM0	KEYEVENTF_SKEYUP
	IF CMP_NE $GW_SVPARAM1 0
	THEN
		SendVirtual	$GW_SVPARAM1 KEYEVENTF_SKEYUP
	ENDIF
endfunc




# ʏL[Ƃ
func F_REPEAT
	CALL	F_SEND_SV
endfunc



# ʏL[𗣂Ƃ
func F_UP
	CALL	F_SEND_SV
	CALL	F_CANCEL

	IF CMP_EQ $GW_MODE ET_Blue
	THEN
		CALL	F_NORMAL
	ENDIF
endfunc



# ʏL[͈͊OŗƂ
func F_CANCEL
	# NA
	SetTimer	0
	CloseWindow	WIN_1
	SETV	$GW_SVPARAM0	0
	# 󂯎Cxg߂
	SetEventTable	WIN_MAIN $GW_MODE ET_Global
	#
	CALL	F_LOCKCLEAR
endfunc


# ͈͊OɈړƂ
func F_MOVEOUT
	# NÂ
	SetTimer	0
	CloseWindow	WIN_1
	SETV	$GW_SVPARAM0	0
endfunc




# Shift ̃gOL[
#  $GW_PARAM0 = vk
#  $GW_PARAM1 = ۑWX^ԍ
func F_LOCK
	LOCAL	3
	ADD		$0	$GW_PARAM1	DL_LOCK0	# DispList =  LockID + DL_LOCK0
	ADD		$1	$GW_PARAM1	GW_LOCK0	# LockVar = LockID + GW_LOCK0
	CMP CMP_EQ	$$1 0				# 0 or 1 ɕϊ
	MUL		$2	$GW_STATE	$GW_PARAM0	# $2= 0 or VK
	SETA	$1	$2			# [$1]= $2
	IF CMP_NE $2 0
	THEN
		SendVirtual	$GW_PARAM0 KEYEVENTF_KEYDOWN
		SetDisplayList	$0	DLTYPE_REVERSE	$GW_RX $GW_RY $GW_RW $GW_RH
		DrawDisplayList	WIN_MAIN	$0	1
	ELSE
		SendVirtual	$GW_PARAM0 KEYEVENTF_KEYUP
		SetDisplayList	$0	DLTYPE_REVERSE	$GW_RX $GW_RY $GW_RW $GW_RH
		DrawDisplayList	WIN_MAIN	$0	1
		SetDisplayList	$0	DLTYPE_OFF
	ENDIF
	SetEventTable	WIN_MAIN $GW_MODE ET_Global
endfunc


# gOL[̑S
#  ۑĂ̂S UP ĕ\߂B
func F_LOCKCLEAR
	LOCAL	2

	DrawDisplayList	WIN_MAIN DL_LOCK0 LOCK_MAX		# ]`悪Ή

	SETV	$1	GW_LOCK0
	DO
		SETV	$0	$$1
		IF CMP_NE $0 0
		THEN
			SendVirtual	$0 KEYEVENTF_KEYUP
		ENDIF
		SETA	$1	0
		ADD		$1	$1	1
	CMP CMP_LE $1 GW_LOCK1
	WHILE

	SetDisplayList	DL_LOCK0 DLTYPE_OFF
	SetDisplayList	DL_LOCK1 DLTYPE_OFF
endfunc



#------------------------------------------------------------------------------
# table
#------------------------------------------------------------------------------

# ʃpl
table ET_Global
dataw	5
# 5
#	Event	  x   y   w   h	func	param0	param1
dataw	EVENT_DOWN	  0  64  30  32	F_LOCK	VK_SHIFT	0	# SHIFT
dataw	EVENT_DOWN	 50  96  70  32	F_DOWN	VK_SPACE	0	# Space
dataw	EVENT_DOWN	120  96  40  32	F_DOWN	EVK_KANJI	0	# 
dataw	EVENT_DOWN	160  96  40  32	F_DOWN	VK_RETURN	0	# Enter
dataw	EVENT_DOWN	200  96  40  32	F_DOWN	VK_BACK	0	# BS
endtable


# m[}pl
table ET_Normal
dataw	24
# 8
dataw	EVENT_DOWN	  0   0  30  32	F_DOWN	'W'	0
dataw	EVENT_DOWN	 30   0  30  32	F_DOWN	'E'	0
dataw	EVENT_DOWN	 60   0  30  32	F_DOWN	'R'	0
dataw	EVENT_DOWN	 90   0  30  32	F_DOWN	'T'	0
dataw	EVENT_DOWN	120   0  30  32	F_DOWN	'Y'	0
dataw	EVENT_DOWN	150   0  30  32	F_DOWN	'U'	0
dataw	EVENT_DOWN	180   0  30  32	F_DOWN	'I'	0
dataw	EVENT_DOWN	210   0  30  32	F_DOWN	'O'	0
# 7
dataw	EVENT_DOWN	 30  32  30  32	F_DOWN	'A'	0
dataw	EVENT_DOWN	 60  32  30  32	F_DOWN	'S'	0
dataw	EVENT_DOWN	 90  32  30  32	F_DOWN	'D'	0
dataw	EVENT_DOWN	120  32  30  32	F_DOWN	'G'	0
dataw	EVENT_DOWN	150  32  30  32	F_DOWN	'H'	0
dataw	EVENT_DOWN	180  32  30  32	F_DOWN	'K'	0
dataw	EVENT_DOWN	210  32  30  32	F_DOWN	'P'	0
# 7
dataw	EVENT_DOWN	 30  64  30  32	F_DOWN	'Z'	0
dataw	EVENT_DOWN	 60  64  30  32	F_DOWN	'X'	0
dataw	EVENT_DOWN	 90  64  30  32	F_DOWN	'B'	0
dataw	EVENT_DOWN	120  64  30  32	F_DOWN	'N'	0
dataw	EVENT_DOWN	150  64  30  32	F_DOWN	'M'	0
dataw	EVENT_DOWN	180  64  30  32	F_DOWN	VK_COMMA	0	# ,
dataw	EVENT_DOWN	210  64  30  32	F_DOWN	VK_HYPHEN	0	# -
# 2
dataw	EVENT_DOWN	  0  32  30  32	F_PINK	0	0	# sN
dataw	EVENT_DOWN	  0  96  50  32	F_BLUE	0	0	# u[
endtable

# m[}pl̃hbO
table ET_NormalMove
dataw	22
# 8
dataw	EVENT_MOVE	  0   0  30  32	F_MOVE	'W'	0
dataw	EVENT_MOVE	 30   0  30  32	F_MOVE	'E'	0
dataw	EVENT_MOVE	 60   0  30  32	F_MOVE	'R'	0
dataw	EVENT_MOVE	 90   0  30  32	F_MOVE	'T'	0
dataw	EVENT_MOVE	120   0  30  32	F_MOVE	'Y'	0
dataw	EVENT_MOVE	150   0  30  32	F_MOVE	'U'	0
dataw	EVENT_MOVE	180   0  30  32	F_MOVE	'I'	0
dataw	EVENT_MOVE	210   0  30  32	F_MOVE	'O'	0
# 7
dataw	EVENT_MOVE	 30  32  30  32	F_MOVE	'A'	0
dataw	EVENT_MOVE	 60  32  30  32	F_MOVE	'S'	0
dataw	EVENT_MOVE	 90  32  30  32	F_MOVE	'D'	0
dataw	EVENT_MOVE	120  32  30  32	F_MOVE	'G'	0
dataw	EVENT_MOVE	150  32  30  32	F_MOVE	'H'	0
dataw	EVENT_MOVE	180  32  30  32	F_MOVE	'K'	0
dataw	EVENT_MOVE	210  32  30  32	F_MOVE	'P'	0
# 7
dataw	EVENT_MOVE	 30  64  30  32	F_MOVE	'Z'	0
dataw	EVENT_MOVE	 60  64  30  32	F_MOVE	'X'	0
dataw	EVENT_MOVE	 90  64  30  32	F_MOVE	'B'	0
dataw	EVENT_MOVE	120  64  30  32	F_MOVE	'N'	0
dataw	EVENT_MOVE	150  64  30  32	F_MOVE	'M'	0
dataw	EVENT_MOVE	180  64  30  32	F_MOVE	VK_COMMA	0	# ,
dataw	EVENT_MOVE	210  64  30  32	F_MOVE	VK_HYPHEN	0	# -
endtable



# u[pl
table ET_Blue
dataw	18
# 8
dataw	EVENT_DOWN	  0   0  30  32	F_DOWN	'Q'	0
dataw	EVENT_DOWN	 30   0  30  32	F_DOWN	'1'	VK_SHIFT	# !
dataw	EVENT_DOWN	 60   0  30  32	F_DOWN	'3'	VK_SHIFT	# #
dataw	EVENT_DOWN	 90   0  30  32	F_DOWN	'6'	VK_SHIFT	# &
dataw	EVENT_DOWN	120   0  30  32	F_DOWN	'7'	VK_SHIFT	# '
dataw	EVENT_DOWN	150   0  30  32	F_DOWN	VK_LBRACKET	0	# [
dataw	EVENT_DOWN	180   0  30  32	F_DOWN	VK_RBRACKET	0	# ]
dataw	EVENT_DOWN	210   0  30  32	F_DOWN	VK_EQUAL	VK_SHIFT	# ~
# 4
dataw	EVENT_DOWN	 90  32  30  32	F_DOWN	'F'	0
dataw	EVENT_DOWN	150  32  30  32	F_DOWN	'J'	0
dataw	EVENT_DOWN	180  32  30  32	F_DOWN	'L'	0
dataw	EVENT_DOWN	210  32  30  32	F_DOWN	VK_BACKQUOTE	0	# @
# 4
dataw	EVENT_DOWN	 60  64  30  32	F_DOWN	'C'	0
dataw	EVENT_DOWN	 90  64  30  32	F_DOWN	'V'	0
dataw	EVENT_DOWN	180  64  30  32	F_DOWN	VK_PERIOD	0	# .
dataw	EVENT_DOWN	210  64  30  32	F_DOWN	VK_SLASH	VK_SHIFT	# ?
# 2
dataw	EVENT_DOWN	  0  32  30  32	F_PINK	0	0	# sN
dataw	EVENT_DOWN	  0  96  50  32	F_NORMAL	0	0	# m[}
endtable

# u[pl̃hbO
table ET_BlueMove
dataw	18
# 8
dataw	EVENT_MOVE	  0   0  30  32	F_MOVE	'Q'	0
dataw	EVENT_MOVE	 30   0  30  32	F_MOVE	'1'	VK_SHIFT	# !
dataw	EVENT_MOVE	 60   0  30  32	F_MOVE	'3'	VK_SHIFT	# #
dataw	EVENT_MOVE	 90   0  30  32	F_MOVE	'6'	VK_SHIFT	# &
dataw	EVENT_MOVE	120   0  30  32	F_MOVE	'7'	VK_SHIFT	# '
dataw	EVENT_MOVE	150   0  30  32	F_MOVE	VK_LBRACKET	0	# [
dataw	EVENT_MOVE	180   0  30  32	F_MOVE	VK_RBRACKET	0	# ]
dataw	EVENT_MOVE	210   0  30  32	F_MOVE	VK_EQUAL	VK_SHIFT	# ~
# 4
dataw	EVENT_MOVE	 90  32  30  32	F_MOVE	'F'	0
dataw	EVENT_MOVE	150  32  30  32	F_MOVE	'J'	0
dataw	EVENT_MOVE	180  32  30  32	F_MOVE	'L'	0
dataw	EVENT_MOVE	210  32  30  32	F_MOVE	VK_BACKQUOTE	0	# @
# 4
dataw	EVENT_MOVE	 60  64  30  32	F_MOVE	'C'	0
dataw	EVENT_MOVE	 90  64  30  32	F_MOVE	'V'	0
dataw	EVENT_MOVE	180  64  30  32	F_MOVE	VK_PERIOD	0	# .
dataw	EVENT_MOVE	210  64  30  32	F_MOVE	VK_SLASH	VK_SHIFT	# ?
endtable



# sNpl
table ET_Pink
dataw	24
# 8
dataw	EVENT_DOWN	  0   0  30  32	F_DOWN	VK_BACKSLASH	0	# Yen
dataw	EVENT_DOWN	 30   0  30  32	F_DOWN	'4'	VK_SHIFT	# $
dataw	EVENT_DOWN	 60   0  30  32	F_DOWN	'7'	0	# 7
dataw	EVENT_DOWN	 90   0  30  32	F_DOWN	'8'	0	# 8
dataw	EVENT_DOWN	120   0  30  32	F_DOWN	'9'	0	# 9
dataw	EVENT_DOWN	150   0  30  32	F_DOWN	'8'	VK_SHIFT	# (
dataw	EVENT_DOWN	180   0  30  32	F_DOWN	'9'	VK_SHIFT	# )
dataw	EVENT_DOWN	210   0  30  32	F_DOWN	VK_HYPHEN	VK_SHIFT	# =
# 7
dataw	EVENT_DOWN	 30  32  30  32	F_DOWN	'5'	VK_SHIFT	# %
dataw	EVENT_DOWN	 60  32  30  32	F_DOWN	'4'	0	# 4
dataw	EVENT_DOWN	 90  32  30  32	F_DOWN	'5'	0	# 5
dataw	EVENT_DOWN	120  32  30  32	F_DOWN	'6'	0	# 6
dataw	EVENT_DOWN	150  32  30  32	F_DOWN	VK_SEMICOLON	0	# ;
dataw	EVENT_DOWN	180  32  30  32	F_DOWN	VK_SEMICOLON	VK_SHIFT	# +
dataw	EVENT_DOWN	210  32  30  32	F_DOWN	VK_APOSTROPHE	VK_SHIFT	# *
# 7
dataw	EVENT_DOWN	 30  64  30  32	F_DOWN	'0'	0	# 
dataw	EVENT_DOWN	 60  64  30  32	F_DOWN	'1'	0	# 
dataw	EVENT_DOWN	 90  64  30  32	F_DOWN	'2'	0	# 
dataw	EVENT_DOWN	120  64  30  32	F_DOWN	'3'	0	# 
dataw	EVENT_DOWN	150  64  30  32	F_DOWN	VK_APOSTROPHE	0	# :
dataw	EVENT_DOWN	180  64  30  32	F_DOWN	VK_SLASH	0	# /
dataw	EVENT_DOWN	210  64  30  32	F_DOWN	VK_OEM_102	VK_SHIFT	# _
# 1
dataw	EVENT_DOWN	  0  32  30  32	F_NORMAL	0	0	# m[}
dataw	EVENT_DOWN	  0  96  50  32	F_BLUE	0	0	# u[
endtable

# sNpl̃hbO
table ET_PinkMove
dataw	22
# 8
dataw	EVENT_MOVE	  0   0  30  32	F_MOVE	VK_BACKSLASH	0	# Yen
dataw	EVENT_MOVE	 30   0  30  32	F_MOVE	'4'	VK_SHIFT	# $
dataw	EVENT_MOVE	 60   0  30  32	F_MOVE	'7'	0	# 7
dataw	EVENT_MOVE	 90   0  30  32	F_MOVE	'8'	0	# 8
dataw	EVENT_MOVE	120   0  30  32	F_MOVE	'9'	0	# 9
dataw	EVENT_MOVE	150   0  30  32	F_MOVE	'8'	VK_SHIFT	# (
dataw	EVENT_MOVE	180   0  30  32	F_MOVE	'9'	VK_SHIFT	# )
dataw	EVENT_MOVE	210   0  30  32	F_MOVE	VK_HYPHEN	VK_SHIFT	# =
# 7
dataw	EVENT_MOVE	 30  32  30  32	F_MOVE	'5'	VK_SHIFT	# %
dataw	EVENT_MOVE	 60  32  30  32	F_MOVE	'4'	0	# 4
dataw	EVENT_MOVE	 90  32  30  32	F_MOVE	'5'	0	# 5
dataw	EVENT_MOVE	120  32  30  32	F_MOVE	'6'	0	# 6
dataw	EVENT_MOVE	150  32  30  32	F_MOVE	VK_SEMICOLON	0	# ;
dataw	EVENT_MOVE	180  32  30  32	F_MOVE	VK_SEMICOLON	VK_SHIFT	# +
dataw	EVENT_MOVE	210  32  30  32	F_MOVE	VK_APOSTROPHE	VK_SHIFT	# *
# 7
dataw	EVENT_MOVE	 30  64  30  32	F_MOVE	'0'	0	# 
dataw	EVENT_MOVE	 60  64  30  32	F_MOVE	'1'	0	# 
dataw	EVENT_MOVE	 90  64  30  32	F_MOVE	'2'	0	# 
dataw	EVENT_MOVE	120  64  30  32	F_MOVE	'3'	0	# 
dataw	EVENT_MOVE	150  64  30  32	F_MOVE	VK_APOSTROPHE	0	# :
dataw	EVENT_MOVE	180  64  30  32	F_MOVE	VK_SLASH	0	# /
dataw	EVENT_MOVE	210  64  30  32	F_MOVE	VK_OEM_102	VK_SHIFT	# _
endtable



# Up and Move
table ET_Up
dataw	7
# 4
dataw	EVENT_MOVE	 50  96  70  32	F_MOVE	VK_SPACE	0	# Space
dataw	EVENT_MOVE	120  96  40  32	F_MOVE	EVK_KANJI	0	# 
dataw	EVENT_MOVE	160  96  40  32	F_MOVE	VK_RETURN	0	# Enter
dataw	EVENT_MOVE	200  96  40  32	F_MOVE	VK_BACK	0	# BS
# 3
dataw	EVENT_UP	  0  0 PANELSIZE_W PANELSIZE_H	F_UP	0	0
dataw	EVENT_MOVE	  -1024 -1024 2048 2048	F_MOVEOUT	0	0
dataw	EVENT_UP	  -1024 -1024 2048 2048	F_CANCEL	0	0
endtable
