私がやろうとしているのは、エンドユーザーが手のひら、拳、顔などでキーボードを叩くイベントを処理することです。ばかげているように聞こえますが、高出力レーザーラボの補助的な安全機能として使用されます。4つ以上の鍵を探すことを考えていました。有効な組み合わせの例:
- u{f5}7hby6
- 6g3.io{alt}mn'
- p9hyi
- {tab}2{f2}56{shift}z
- {alt}{windows}\{ctrl}{f8}
- basically anything else that can be typed with a face
私はこの方法を試しましたが、特に複数のキーが押されたときにすべてのKeyUpまたはKeyDownイベントが処理されるわけではないため、機能しません。
Private keez As New List(Of Integer)
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
keez.Add(e.KeyValue)
If keez.Count >= 4 Then MessageBox.Show("I handled it!")
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
Try
keez.Remove(AscW(e.KeyChar))
Catch
End Try
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
keez.Remove(e.KeyValue)
End Sub
この方法では、キーが絶えず失われます。連続して押された複数のキーを処理する方法を誰かが知っているかどうか疑問に思います。ほとんどのGoogle検索は、ほとんどの場合、修飾子(ctrl、alt、shift)+1つの追加キーを含む標準のキーコンボに関連しています。