続々・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
------------------
でもこれだと、ボタンを押していない時間が長いと、ダブルプッシュ判定の変数がオーバーフローするかな。
--
検索用: nsbasic
« 続・NS Basic/PalmでWristPDAのボタン入力を判定(未完) | Main | 「尾根ギア」、「くだしあ」 »
Recent Comments