# uP350p{^JX^ݒ@ANV3v
# written by MacKay

# ̃t@C Hiroyuki Ogasawara@lɂ萻AJĂA
# L[{[hJX^}CYc[@em1key v1.24@p̃XNvgt@Cł

# em1keyP350ɃCXg[A
# em1keyƓtH_ɂscriptcommand.txtƓւĂg

# ANV{^͒ɂ̂ݗLɂȂAxENTERꂽƂɂȂ܂
# Av{^͕ύX

# ܂ł̎Ԃ͖1bAXNvg̓rɂ鐔l`̂Ƃŕς܂

# ̃t@C̓o[WXVɏ㏑\܂
# XVOɂ̓obNAbvĂ悤ɂĂ

# ̃XNvgt@CɂāAem1keyҗlɖ₢킹̂͂

# 2007/05/25 



#------------------------------------------------------------------------------
# system pV{`
#------------------------------------------------------------------------------
# ͏Ȃł

#define	CODEEXIT		0
define	EXIT			1
define	RETURN			2
define	JUMP			3
define	JUMPALL			4
define	LABEL			5
define	CALL			6
define	CALLVAR			7
define	SETMODIFIER		8
define	SENDKEY			9
define	SENDVAR			10
define	RAWDOWN			11
define	RAWUP			12
define	EXEC			13
define	WINCMD			14
define	ROTATE			15
define	CLEARALLSTATE	16
define	SAVETIME		17
define	SETDIFFTIME		18
define	SETGSTATE		19
define	RESETGSTATE		20
define	ALLOCVSTATE		21
define	SETVSTATE		22
define	RESETVSTATE		23
define	SETSYSFLAG		24
define	RESETSYSFLAG	25
define	TESTSYSFLAG		26
define	TESTGSTATE		27
define	TESTVSTATE		28
define	DOWNVAR			29
define	UPVAR			30
#
define	SETVAR0			32
define	SETVAR1			33
define	SETVAR2			34
define	SETVAR3			35
define	LOADVAR			36
define	STOREVAR		37
define	LOAD			38
#define	STRINGDATA		39
#define	STRINGID		40
define	MESSAGE			41
define	SETTABLE		42
define	LOADIVAR		43
define	STOREIVAR		44
define	PUSHVAR			45
define	POPVAR			46
define	PUSHIMM			47
define	IF_DOWN			48
define	IF_UP			49
define	IF_DIFFTIME		50
define	IF_TRUE			51
define	IF_FALSE		52
define	IF_VSTATE0		53
define	IF_VSTATE1		54
define	IF_VSTATE2		55
define	IF_VSTATE3		56
define	IF_CTRL			57
define	IF_SHIFT		58
define	IF_RWIN			59
define	IF_GSTATE3		60
define	CMP_EQ			61
define	CMP_LT			62
define	CMP_GT			63
define	ADDVAR			64
define	SUBVAR			65
define	ANDVAR			66
define	ORVAR			67
define	XORVAR			68
define	ADD				69
define	SUB				70
define	AND				71
define	OR				72
define	XOR				73
define	MULVAR			74
define	DIVVAR			75
define	MODVAR			76
define	SLVAR			77
define	SRVAR			78
define	CMPVAR_EQ		79
define	CMPVAR_LT		80
define	CMPVAR_GT		81
define	CALLVARDEF		82
define	CALLVAREXT		83
define	SETHELP			84
#

define	TRUE			1
define	FALSE			0

# GSTATE
define	STATE_CTRL		0
define	STATE_SHIFT		1
define	STATE_RWIN		2
define	STATE_KANATABLE		8

# VSTATE
define	VSTATE_0		0
define	VSTATE_1		1
define	VSTATE_2		2

# GVAR
define	GVAR_MODIFIER	35
define	GVAR_KEYCODE	37
define	GVAR_EVENTTIME	38

# Modifier
define	MOD_CTRL		0x01
define	MOD_SHIFT		0x02
define	MOD_RWIN		0x10
define	MOD_KANA		0x20
define	MOD_KANASHIFT	0x22

# Function Table
define	TABLE_FUNC		1
define	TABLE_DEFAULT	2
define	TABLE_EXT		4
define	TABLE_KANA		4
define	TABLE_ALLMODE	6

# SystemFlag
define	SYSFLAG_CTRLSWAP	0
define	SYSFLAG_ESCSWAP		1
define	SYSFLAG_IMESW		2
define	SYSFLAG_SCANTEST	3
define	SYSFLAG_NAVIMODE	4
define	SYSFLAG_IME			16
define	SYSFLAG_SCANVALID	17
define	SYSFLAG_SCANANY		18

# WINCMD
define	WINCMD_CLOSE		0x41
define	WINCMD_ALTTAB		0x42
define	WINCMD_IMESW		0x43
define	WINCMD_GETIMEMODE	0x44

# KeyCode
define	VK_BACK			0x08	# [BS]
define	VK_TAB			0x09	# [TAB]
define	VK_RETURN		0x0d	# [Enter]
define	VK_SHIFT		0x10	# [Shift]
define	VK_CONTROL		0x11	# [Ctrl]
define	VK_MENU			0x12
define	VK_KANA			0x15
define	VK_KANJI		0x19
define	VK_ESCAPE		0x1b
define	VK_CONVERT		0x1c
define	VK_NCONVERT		0x1d

define	VK_SPACE		0x20
define	VK_PRIOR		0x21	# PageUp
define	VK_NEXT			0x22	# PageDown
define	VK_END			0x23
define	VK_HOME			0x24
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
define	VK_INSERT		0x2d
define	VK_DELETE		0x2e
define	VK_HELP			0x2f

define	VK_LWIN			0x5b
define	VK_RWIN			0x5c
define	VK_F1			0x70	# SoftKey1
define	VK_F2			0x71	# SoftKey2
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_LMENU		0xa4	# ALT
define	VK_RMENU		0xa5
define	VK_SEMICOLON	0xba	# ;
define	VK_EQUAL		0xbb	# =
define	VK_COMMA		0xbc	# [,;]
define	VK_HYPHEN		0xbd	# [-=]
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
define	VK_APOSTROPHE	0xde
define	VK_OEM_102		0xe2
define	VK_DBE_ALPHANUMERIC	0xf0
define	VK_DBE_SBCSCHAR	0xf3
define	VK_DBE_DBCSCHAR	0xf4

#------------------------------------------------------------------------------
# system pV{`܂
#------------------------------------------------------------------------------




#------------------------------------------------------------------------------
# XNvg̃vOJn
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# uP350p{^JX^ݒ@ANV3v
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# l`
#------------------------------------------------------------------------------

# ̐l邱ƂŒ̔莞Ԃς邱Ƃł܂B
#  40msec PʁB25Ŗ1b

define	KEEPTIME		25



#------------------------------------------------------------------------------
# ֐
#-----------------------------------------------------------------------------

#  NɌĂ΂
func TABLE_FUNC	0

	# 
	CLEARALLSTATE
	WINCMD WINCMD_GETIMEMODE

	RESETGSTATE	10
	LOAD	0
	STOREVAR	11

	# ԂŎgpL[e[ȗI
	#   1=TABLE_DEFAULT
	#   2=TABLE_EXT
	SETTABLE	1

	# ^Cgwvݒ
	string	0	"P350p{^JX^ݒ@ANV3"
	SETHELP		0
	string	0	"@ANV{^͒ɂ̂ݗL"
	SETHELP		1
	string	0	"@Av{^͕ύX"
	SETHELP		2

endfunc


#------------------------------------------------------------------------------
# ֐Ɗ֐ԍ̊蓖
#------------------------------------------------------------------------------

define	STATE_F23	10

# TABLE_FUNC ̊֐}bv
# 0x00` system p

# define	_selAPP	0x13

#------------------------------------------------------------------------------



# ANV{^̋

func TABLE_ALLMODE	VK_F23

		ALLOCVSTATE 0

		# F23_E
		IF_DOWN	10

		# F23Abv
		RESETVSTATE	VSTATE_0
		RESETVSTATE	VSTATE_1
		RESETGSTATE	STATE_F23
		EXIT	TRUE

	LABEL	10
		SETGSTATE	STATE_F23	# F23tO
		IF_VSTATE0	30		# łɃ^[MĂ

		IF_VSTATE1	16

		SAVETIME	0
		SETVSTATE	VSTATE_1

		EXIT	TRUE

	LABEL	16
		# keep press
		SETDIFFTIME	KEEPTIME	# 莞Ԑݒ
		IF_DIFFTIME	20		# ԈȏoĂ
		EXIT	TRUE

	LABEL	20
		RAWDOWN	VK_F23
		RAWDOWN	VK_RETURN		# ^[M
		RAWUP	VK_RETURN
		RAWUP	VK_F23
		SETVSTATE	VSTATE_0	# ^[Mς݃tO
		EXIT	TRUE

	LABEL	30
		EXIT	TRUE

endfunc




# ̃^[ƃANV{^̈Ⴂ̔

func TABLE_ALLMODE	VK_RETURN

		TESTGSTATE	STATE_F23
		IF_TRUE	10
		EXIT	FALSE

	LABEL	10
		EXIT	TRUE
endfunc




#-----------------------------------------------------------------------------
# uP350p{^JX^ݒ@ANV3v܂
#-----------------------------------------------------------------------------
