我知道我可以使用KeyDown
,KeyUp
和KeyPress
事件来处理键盘输入,但输入使用ASCII输入,这意味着它不流畅(即,当我按住一个键时,事件会重复,好像我在键入一些东西:触发一次,等待半秒,然后才重复)。如何从键盘上获取原始键输入,直接检查键是否被按下,而不是查看键盘缓冲区?
答案 0 :(得分:0)
它只是查看键盘缓冲区的KeyPress
事件。
当按下某个键时,会触发KeyDown
事件,如果它不是控制键(shift,ctrl,alt等),它还会产生键盘缓冲区的字符,触发KeyPress
事件。
只要按下该键,就会为键盘缓冲区生成更多字符,每个字符都会触发另一个KeyPress
事件。
释放密钥后,会触发KeyUp
事件。
要跟踪按下的按键,您可以使用KeyDown
和KeyUp
事件。无法直接检查是否按下了某个键,键盘只通过向下发送键的事件与计算机进行通信。
请注意KeyDown
事件并不总是跟随同一个键的KeyUp
事件,但事件可能会重叠。例如,键入大写字母A通常会生成以下KeyDown
和KeyUp
个事件:
KeyDown for shift
KeyDown for a
KeyUp for a
KeyUp for shift