我想要做的是处理一个事件,其中最终用户用他的手掌,拳头,脸等敲击键盘。听起来很荒谬,但它将被用作高功率激光实验室的补充安全功能。我正想着看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)+一个额外的键。
答案 0 :(得分:1)
我认为你不能同时处理超过4个键(例如,同时5个字母的字符不起作用) - 这是当今大多数键盘的硬件限制,即它们是如何连接的内部。支持同时按下所有按键的键盘可能非常昂贵,而且我还没有看到一个直播。您可以查看this thread以获取更多信息。还讨论了on tomshardware。