« 続・NS Basic/PalmでWristPDAのボタン入力を判定(未完) | Main | 「尾根ギア」、「くだしあ」 »

2005.11.25

続々・NS Basic/PalmでWristPDAのボタン入力を判定

前回記事に、またHALさんからアドバイスをいただいた。

結局、NS Basic/PalmによるWristPDAのボタン入力判定は、以下のようになった。
これで完璧……だと思いたい。ダブルプッシュの判定もやってみた。
ダブルプッシュはsysinfo(1)で取得したTickを計測して実現。
長押し判定もやりたいけど、どうやって実現しようか?

'ダブルプッシュ判定無し版

Sub Form1003_Event()
If geteventtype() = nsbKeyOrButton Then
Select Case getkey()
Case &hb
Field1004.Text = "Page Up"
Case &hc
Field1004.Text = "Page Down"
Case &h2e
Field1004.Text = "Rocker Up"
SetEventHandled
Case &h2f
Field1004.Text = "Rocker Down"
SetEventHandled
Case &h30
Field1004.Text = "Rocker Enter"
End Select
End If

End Sub

---------------

'ダブルプッシュ判定付き版

Sub Project_Startup()
Global UpDoublePush as Integer
Global DownDoublePush as Integer
Global EnterDoublePush as Integer
End Sub

Sub Form1003_Event()
Dim DoublePushTick as Integer
DoublePushTick = Val(Field1010.Text)
If geteventtype() = nsbKeyOrButton Then
Select Case getkey()
Case &hb
Field1004.Text = "Page Up"
Case &hc
Field1004.Text = "Page Down"
Case &h2e
Field1004.Text = "Rocker Up"
If (sysinfo(1) - UpDoublepush) < DoublePushTick Then
Field1008.Text = "Up Double Push"
Else
Field1008.Text = "Not Up Double Push"
End If
UpDoublepush = sysinfo(1)
SetEventHandled
Case &h2f
Field1004.Text = "Rocker Down"
If (sysinfo(1) - DownDoublepush) < DoublePushTick Then
Field1008.Text = "Down Double Push"
Else
Field1008.Text = "Not Down Double Push"
End If
DownDoublepush = sysinfo(1)
SetEventHandled
Case &h30
Field1004.Text = "Rocker Enter"
If (sysinfo(1) - EnterDoublepush) < DoublePushTick Then
Field1008.Text = "Enter Double Push"
Else
Field1008.Text = "Not Enter Double Push"
End If
EnterDoublepush = sysinfo(1)
End Select
End If

End Sub

------------------

でもこれだと、ボタンを押していない時間が長いと、ダブルプッシュ判定の変数がオーバーフローするかな。

wristpda_getkey

--
検索用: nsbasic

|

« 続・NS Basic/PalmでWristPDAのボタン入力を判定(未完) | Main | 「尾根ギア」、「くだしあ」 »