我正试图控制kinect的击键。例如,当我的右手向右移动时,意味着我在键盘上按住右箭头。我完成了为kinect编写代码,但我不知道如何制作自定义键盘设备。我尝试使用 SendKey 但它没有用,因为没有hold key命令。我也使用循环,线程,但它也不起作用。我尝试使用kinect通过WPF应用程序控制谷歌地球。从kinect的任何移动将被转换为键盘的按下或保持,以便它可以控制谷歌地球应用程序。有什么建议吗?
最诚挚的问候,
C.Porawat
答案 0 :(得分:1)
没有保持关键状态或事件。按住键盘上的键时,会生成多个键事件。这个win32示例模拟了永久保留的左键:
while(true)
{
INPUT input =
{
INPUT_KEYBOARD
};
KEYBDINPUT tmp =
{
VK_LEFT,
0,
0,
0,
NULL
};
input.ki = tmp;
SendInput(1, &input, sizeof(INPUT));
::Sleep(100);
}
答案 1 :(得分:1)
我得到了答案。使用 System.Windows.Interop 和 System.Runtime.InteropServices 。然后,使用:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, IntPtr dwExtraInfo);
然后,当我想通过以下方式调用键盘事件时:
keybd_event(0x27, 0, KEYEVENTF_KEYDOWN, new System.IntPtr()); //press right arrow on the keyboard