模拟转换输入设备的软件GlovePIE 编程文档的部分中文翻译
GlovePIE是一个模拟和转换输入设备的软件。例如可以让Wii手柄信号模拟为键盘、鼠标或游戏手柄在电脑上打游戏,可以用Wii手柄控制Midi输出,不过这需要编写一些脚本实现。GlovePIE现在能接受的设备有鼠标、键盘、游戏手柄、PPJoy(一种虚拟游戏手柄)、P5数据手套、Wii Remote、MIDI和语音识别输入。
GlovePIE编程文档的部分中文翻译
文内符号说明:“[]”内是可用可不用的项,“|”两边是单选项。
注释可以为以下几种
// 注释
' 注释
REM 注释
% 注释
/* 多行
注释 */
建议用“//”
debug=变量
就能在调试窗口实时显示变量值
---------------------------------------
赋值语句
有向前赋值和向后赋值两种形式,等价的。
向前赋值语句如下
变量名 = 表达式 [;]
或
变量名 := 表达式 [;]
向后赋值语句如下
表达式 => 变量名 [;]
例如
Ctrl = var.a
Ctrl = var.b
它有类似的效果: Ctrl = var.a or var.b
------------------------------------------
IF语句
有以下句法
if 条件 then 语句 [;]
if (条件) [then] 语句 [;]
if 条件 [then] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end [if]] [;]
if 条件 [then] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end] else [begin] [{]
语句 [;]
语句 [;]
...
[}] [end [if]] [;]
if 条件 [then] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end] (else if|elseif) 条件2 [then] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end] (else if|elseif) 条件3 [then] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end] else [begin] [{]
语句 [;]
语句 [;]
...
[}] [end [if]] [;]
--------------------------------------------
WHILE循环语句
当条件为真则循环
有以下句法
while 条件 do 语句 [;]
while (条件) [do] 语句 [;]
while 条件 [do] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end [while]] [;]
任何循环*多只运行0.2秒,超过就强制中止。
--------------------------------------------
FOR循环语句
有以下句法
for 变量 (=|:=) 初始量 (to|downto) 结束量 [step 步长] do 语句 [;]
for 变量 (=|:=) 初始量 (to|downto) 结束量 [step 步长] [do] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end [for]]
for (赋初值 ; 条件 ; 增量) [do] 语句 [;]
for (赋初值 ; 条件 ; 增量) [do] [begin] [{]
语句 [;]
语句 [;]
...
[}] [end [for]]
任何循环*多只运行0.2秒,超过就强制中止。
--------------------------------------------
等待命令
有以下句法
wait 持续时间 [;]
wait(持续时间) [;]
通常为持续时间指定单位。有效的单位是:ms, s, minutes, hours, days
--------------------------------------------
增减语句
有以下句法
var.x++
++var.x
Inc(var.x)
var.x--
--var.x
Dec(var.x)
--------------------------------------------
位移语句
有以下句法
左移变量N位
shl var.x, N
右移变量N位
shr var.x, N
--------------------------------------------
“说”命令
Say "句子"
或
Say("句子")
发出合成语音
--------------------------------------------
其他命令
ExitScript
退出当前脚本运行
ExitPIE
退出GlovePIE软件
FlashPieWindow
闪GlovePIE的窗口
HidePie
隐藏GlovePIE
ShowPie
显示GlovePIE
RestorePie
复位GlovePIE的窗口
MinimizePie
*小化GlovePIE的窗口
MaximizePie
*大化GlovePIE的窗口
UnMinimizePie
反*小化GlovePIE的窗口
UnMaximizePie
反*大化GlovePIE的窗口
Execute(文件名)
执行外部程序
Chain(文件名)
调用运行另一脚本
PlaySound(文件名)
播放音频文件
Beep([频率, 持续时间])
响单频率声
BeepAsterisk
响*音效
BeepExclamation
响!音效
BeepHand
响!音效
BeepQuestion
响?音效BeepDefault
响缺省音效
Display(text)
输出信息
DebugPrint(text)
调试窗口输出信息
OutputToFile(text)
输出信息到文件里
AddCode(text)
不知道
Type(字符串)
模拟键盘打入字符串
TypeUnicode(字符串)
模拟键盘打入Unicode字符串
Press(键)
按下键
Release(键)
释放键
Toggle(键)
如果键当前是按下状态,则释放键,如果键当前是释放状态,则按下键。
SendOsc(ip, port, address, [p1, p2, p3…])
BroadcastOsc(port, address, [p1, p2, p3…])
这两个是网络发送信息的函数
ControlPanel, ControlPanelKeyboard, ControlPanelJoystick, ControlPanelMouse, ControlPanelP5, ControlPanelPPJoy, ControlPanelSpeech, ControlPanelMidi, ControlPanelDisplay这些都是打开各个设备的控制面板。
================================================================
GlovePIE内置函数
三角函数
单位是度
Standard trig functions: sin(x), cos(x), tan(x), sec(x), cosec(x), cotan(x)
Hyperbolic trig functions: SinH(x), CosH(x), TanH(x), SecH(x), CosecH(x), CotH(x)
Inverse trig functions: aSin(x), aCos(x), aTan(x), aSec(x), aCosec(x), aCotan(x)
Inverse Hyperbolic trig functions: aSinH(x), aCosH(x), aTanH(x), aSecH(x), aCosecH(x), aCotanH(x)
2D inverse tan function: atan2(x)
----------------------------------------------
舍入函数
ceil(x): 向正无穷方向取整
floor(x): 向负无穷方向取整
trunc(x), int: 向零方向取整
round(x): 四舍五入法取整 .5取*接近的偶数(银行家舍入法)
frac(x): 取小数部分。 例如 Frac(-1.32) = -0.32
RoundTo(x, 位): 如果“位”是负或零,则按位数使用银行家舍入法。如果“位”是正,则(rounds to that power of ten using Banker's Rounding.)
SimpleRoundTo(x [,位]): 和RoundTo函数基本一样,除了只四舍五入,不用银行家舍入法。位缺省值是-2。
--------------------------------------------------
正负函数
Sign(x): 如果x是正返回1,如果x是零返回0,如果x是负返回-1。
Abs(x): 返回x的绝对值。
--------------------------------------------------
指数和开方函数
sqr(x): x^2
sqrt(x): x^(1/2)
power(x,y): calculates x^y
intPower(x,y): x和y取整后算 x^y
exp(x): e^x. e is 2.71828
Ldexp(s,p): s * (2^p)
Poly(x, a0, [a1, [a2, [a3, [a4, [a5, [a6]]]]]]): a0 + a1*x + a2*(x^2) + a3*(x^3) + a4*(x^4) + ...
Log10(x): 10为底数的对数
Log2(x): 2为底数的对数
LogN(N, x): N为底数的对数
Ln(x): 自然对数
LnXP1(x): x+1的自然对数
--------------------------------------------------
比较函数
IsZero(x): 如果是0返回真
IsInfinite(x): returns true if x is infinite
IsNaN(x): 如果不是数字返回真
SameValue(a, b [, epsilon]): 如果a和b相等返回真, or differ by no more than epsilon
InSet(x,a,b,c,d,e,f,g,...): 如果x匹配后面任意一值,则返回真
max(a,b): 返回较大的值
min(a,b): 返回较小的值
--------------------------------------------------
范围函数
EnsureRange(x, a, b): 如果x在[a,b]区间,返回x,如果小于a则返回a,大于b则返回b。
InRange(x, a, b): 如果x在[a, b]区间内返回真
MapRange(x, a, b, c, d): 根据x在[a, b]范围的比例映射[c, d]范围。例如MapRange(2, 1, 3, 10, 30)返回20
EnsureMapRange(x, a, b, c, d): 和MapRange类似,只是当x超出[a,b]区间按EnsureRange反应。例如EnsureMapRange(4, 1, 3, 10, 30)返回30
--------------------------------------------------
随机函数
Random: 返回0到1间的随机数
Random(n): 返回0到n-1的随机整数
RandomRange(a,b): 返回a到b-1的随机整数
RandG(mean, StandDev): 返回高斯分布随机数
--------------------------------------------------
序数函数
odd(n): 如果是奇数返回真
pred(n): 返回 n-1
succ(n): 返回 n+1
--------------------------------------------------
时间函数
Now: 返回当前时间日期在1899.12.30之后多少天(非整数)
Time: 返回Now函数的小数部分
Date: 返回Now函数的整数部分
Tomorrow: 等于Date+1
Yesterday: 等于Date-1
CurrentYear: 返回当前年份