模擬轉(zhuǎn)換輸入設(shè)備的軟件GlovePIE 編程文檔的部分中文翻譯
GlovePIE是一個(gè)模擬和轉(zhuǎn)換輸入設(shè)備的軟件。例如可以讓W(xué)ii手柄信號(hào)模擬為鍵盤、鼠標(biāo)或游戲手柄在電腦上打游戲,可以用Wii手柄控制Midi輸出,不過這需要編寫一些腳本實(shí)現(xiàn)。GlovePIE現(xiàn)在能接受的設(shè)備有鼠標(biāo)、鍵盤、游戲手柄、PPJoy(一種虛擬游戲手柄)、P5數(shù)據(jù)手套、Wii Remote、MIDI和語音識(shí)別輸入。
GlovePIE編程文檔的部分中文翻譯
文內(nèi)符號(hào)說明:“[]”內(nèi)是可用可不用的項(xiàng),“|”兩邊是單選項(xiàng)。
注釋可以為以下幾種
// 注釋
' 注釋
REM 注釋
% 注釋
/* 多行
注釋 */
建議用“//”
debug=變量
就能在調(diào)試窗口實(shí)時(shí)顯示變量值
---------------------------------------
賦值語句
有向前賦值和向后賦值兩種形式,等價(jià)的。
向前賦值語句如下
變量名 = 表達(dá)式 [;]
或
變量名 := 表達(dá)式 [;]
向后賦值語句如下
表達(dá)式 => 變量名 [;]
例如
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循環(huán)語句
當(dāng)條件為真則循環(huán)
有以下句法
while 條件 do 語句 [;]
while (條件) [do] 語句 [;]
while 條件 [do] [begin] [{]
語句 [;]
語句 [;]
...
[}] [end [while]] [;]
任何循環(huán)*多只運(yùn)行0.2秒,超過就強(qiáng)制中止。
--------------------------------------------
FOR循環(huán)語句
有以下句法
for 變量 (=|:=) 初始量 (to|downto) 結(jié)束量 [step 步長] do 語句 [;]
for 變量 (=|:=) 初始量 (to|downto) 結(jié)束量 [step 步長] [do] [begin] [{]
語句 [;]
語句 [;]
...
[}] [end [for]]
for (賦初值 ; 條件 ; 增量) [do] 語句 [;]
for (賦初值 ; 條件 ; 增量) [do] [begin] [{]
語句 [;]
語句 [;]
...
[}] [end [for]]
任何循環(huán)*多只運(yùn)行0.2秒,超過就強(qiáng)制中止。
--------------------------------------------
等待命令
有以下句法
wait 持續(xù)時(shí)間 [;]
wait(持續(xù)時(shí)間) [;]
通常為持續(xù)時(shí)間指定單位。有效的單位是: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("句子")
發(fā)出合成語音
--------------------------------------------
其他命令
ExitScript
退出當(dāng)前腳本運(yùn)行
ExitPIE
退出GlovePIE軟件
FlashPieWindow
閃GlovePIE的窗口
HidePie
隱藏GlovePIE
ShowPie
顯示GlovePIE
RestorePie
復(fù)位GlovePIE的窗口
MinimizePie
*小化GlovePIE的窗口
MaximizePie
*大化GlovePIE的窗口
UnMinimizePie
反*小化GlovePIE的窗口
UnMaximizePie
反*大化GlovePIE的窗口
Execute(文件名)
執(zhí)行外部程序
Chain(文件名)
調(diào)用運(yùn)行另一腳本
PlaySound(文件名)
播放音頻文件
Beep([頻率, 持續(xù)時(shí)間])
響單頻率聲
BeepAsterisk
響*音效
BeepExclamation
響!音效
BeepHand
響!音效
BeepQuestion
響?音效BeepDefault
響缺省音效
Display(text)
輸出信息
DebugPrint(text)
調(diào)試窗口輸出信息
OutputToFile(text)
輸出信息到文件里
AddCode(text)
不知道
Type(字符串)
模擬鍵盤打入字符串
TypeUnicode(字符串)
模擬鍵盤打入U(xiǎn)nicode字符串
Press(鍵)
按下鍵
Release(鍵)
釋放鍵
Toggle(鍵)
如果鍵當(dāng)前是按下狀態(tài),則釋放鍵,如果鍵當(dāng)前是釋放狀態(tài),則按下鍵。
SendOsc(ip, port, address, [p1, p2, p3…])
BroadcastOsc(port, address, [p1, p2, p3…])
這兩個(gè)是網(wǎng)絡(luò)發(fā)送信息的函數(shù)
ControlPanel, ControlPanelKeyboard, ControlPanelJoystick, ControlPanelMouse, ControlPanelP5, ControlPanelPPJoy, ControlPanelSpeech, ControlPanelMidi, ControlPanelDisplay這些都是打開各個(gè)設(shè)備的控制面板。
================================================================
GlovePIE內(nèi)置函數(shù)
三角函數(shù)
單位是度
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)
----------------------------------------------
舍入函數(shù)
ceil(x): 向正無窮方向取整
floor(x): 向負(fù)無窮方向取整
trunc(x), int: 向零方向取整
round(x): 四舍五入法取整 .5取*接近的偶數(shù)(銀行家舍入法)
frac(x): 取小數(shù)部分。 例如 Frac(-1.32) = -0.32
RoundTo(x, 位): 如果“位”是負(fù)或零,則按位數(shù)使用銀行家舍入法。如果“位”是正,則(rounds to that power of ten using Banker's Rounding.)
SimpleRoundTo(x [,位]): 和RoundTo函數(shù)基本一樣,除了只四舍五入,不用銀行家舍入法。位缺省值是-2。
--------------------------------------------------
正負(fù)函數(shù)
Sign(x): 如果x是正返回1,如果x是零返回0,如果x是負(fù)返回-1。
Abs(x): 返回x的絕對(duì)值。
--------------------------------------------------
指數(shù)和開方函數(shù)
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為底數(shù)的對(duì)數(shù)
Log2(x): 2為底數(shù)的對(duì)數(shù)
LogN(N, x): N為底數(shù)的對(duì)數(shù)
Ln(x): 自然對(duì)數(shù)
LnXP1(x): x+1的自然對(duì)數(shù)
--------------------------------------------------
比較函數(shù)
IsZero(x): 如果是0返回真
IsInfinite(x): returns true if x is infinite
IsNaN(x): 如果不是數(shù)字返回真
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): 返回較小的值
--------------------------------------------------
范圍函數(shù)
EnsureRange(x, a, b): 如果x在[a,b]區(qū)間,返回x,如果小于a則返回a,大于b則返回b。
InRange(x, a, b): 如果x在[a, b]區(qū)間內(nèi)返回真
MapRange(x, a, b, c, d): 根據(jù)x在[a, b]范圍的比例映射[c, d]范圍。例如MapRange(2, 1, 3, 10, 30)返回20
EnsureMapRange(x, a, b, c, d): 和MapRange類似,只是當(dāng)x超出[a,b]區(qū)間按EnsureRange反應(yīng)。例如EnsureMapRange(4, 1, 3, 10, 30)返回30
--------------------------------------------------
隨機(jī)函數(shù)
Random: 返回0到1間的隨機(jī)數(shù)
Random(n): 返回0到n-1的隨機(jī)整數(shù)
RandomRange(a,b): 返回a到b-1的隨機(jī)整數(shù)
RandG(mean, StandDev): 返回高斯分布隨機(jī)數(shù)
--------------------------------------------------
序數(shù)函數(shù)
odd(n): 如果是奇數(shù)返回真
pred(n): 返回 n-1
succ(n): 返回 n+1
--------------------------------------------------
時(shí)間函數(shù)
Now: 返回當(dāng)前時(shí)間日期在1899.12.30之后多少天(非整數(shù))
Time: 返回Now函數(shù)的小數(shù)部分
Date: 返回Now函數(shù)的整數(shù)部分
Tomorrow: 等于Date+1
Yesterday: 等于Date-1
CurrentYear: 返回當(dāng)前年份