如何在VB.NET中获得原始键盘输入?

如何在VB.NET中获得原始键盘输入?,vb.net,input,keyboard,ascii,Vb.net,Input,Keyboard,Ascii,我知道我可以使用KeyDown、KeyUp和KeyPress事件来处理键盘输入,但输入使用ASCII输入,这意味着它不平滑,即当我按住一个键时,事件会重复,就像我在键入什么一样:触发它一次,等待半秒,然后再重复。如何从键盘获取原始按键输入,直接检查按键是否按下,而不是查看键盘缓冲区?只有按键事件才会查看键盘缓冲区 当按下某个键时,会触发KeyDown事件,如果不是控制键shift、ctrl、alt等,还会为键盘缓冲区生成一个字符,从而触发KeyPress事件 只要按下该键,就会为键盘缓冲区生成更

我知道我可以使用KeyDown、KeyUp和KeyPress事件来处理键盘输入,但输入使用ASCII输入,这意味着它不平滑,即当我按住一个键时,事件会重复,就像我在键入什么一样:触发它一次,等待半秒,然后再重复。如何从键盘获取原始按键输入,直接检查按键是否按下,而不是查看键盘缓冲区?

只有按键事件才会查看键盘缓冲区

当按下某个键时,会触发KeyDown事件,如果不是控制键shift、ctrl、alt等,还会为键盘缓冲区生成一个字符,从而触发KeyPress事件

只要按下该键,就会为键盘缓冲区生成更多字符,每个字符都会触发另一个按键事件

释放钥匙时,会触发KeyUp事件

要跟踪按下的键,请使用KeyDown和KeyUp事件。无法直接检查按键是否按下,键盘只通过发送按键的上下事件与计算机通信

请注意,对于同一个键,KeyDown事件之后并不总是有keydup事件,但这些事件可能会重叠。例如,键入大写字母A通常会生成以下KeyDown和keydup事件:


所以,如果我想跟踪某个时刻持有哪些关键点,我需要使用布尔值,将它们的值在KeyDown时更改为True,在keydup时更改为False?@7yphoid:没错。嗯,它不一定是布尔值,例如,你可以有一个当前按下的键的列表,这取决于你使用的方便程度。
KeyDown for shift
KeyDown for a
KeyUp for a
KeyUp for shift