模拟键盘方向键出现卡的现象

timebomb 2011-06-29 09:42:12
自己做了一个手势识别方向的程序,控制键盘左右键来达到玩极品飞车的目的。

用的winio来模拟键盘加载按键到驱动,但是现在一个问题是我的程序卡

具体描述是我的按键速度是很快的,但是反应起来像是有点迟钝,比如在拖动网页的滚动条时,显示按下键的速度是很快的,但是反应到网页上,出现一卡一卡的拖动滚动条的现象,不知道大家是否有什么办法帮帮我,自己对这方面不是很懂。具体按键的代码在这里,基本每30ms处理一次,因为视频每帧大约也就25-30ms


		if(Length.y < -10)
{
//这个是处理按下下方向键的情况。

UINT vkCode = MapVirtualKey(VK_DOWN, 0);

KbcWait4Ibe();
SetPortVal(0x64, 0xd2, 1); // 非扩展键不用写这条语句
KbcWait4Ibe();
SetPortVal(0x60, 0xe0, 1); // 非扩展键不用写这条语句

KbcWait4Ibe();
SetPortVal(0x64, 0xd2, 1);
KbcWait4Ibe();
SetPortVal(0x60, vkCode, 1);

Sleep(10);

KbcWait4Ibe();
SetPortVal(0x64, 0xd2, 1); // 非扩展键不用写这条语句
KbcWait4Ibe();
SetPortVal(0x60, 0xe0, 1); // 非扩展键不用写这条语句

KbcWait4Ibe();
SetPortVal(0x64, 0xd2, 1);
KbcWait4Ibe();
SetPortVal(0x60, vkCode | 0x80, 1);
cout << "down\t";
}

...全文
251 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
timebomb 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gamemagic 的回复:]

楼主是要模拟按键,不是接受按键
[/Quote]

没有明白你的意思,我想法就是模拟键盘发出指令,比如手势做出一个加速的动作,程序就会发出跟键盘一样的命令做加速。实质就是这样

至于你说底层响应用户层速度很慢,我现在的做法是用的winio,好像他们说这个是直接将命令注入底层驱动,响应速度是可以的,不知道我的是什么原因导致的卡
xuexiaodong2009 2011-06-29
  • 打赏
  • 举报
回复
做了个active?有难度啊
gamemagic 2011-06-29
  • 打赏
  • 举报
回复
问题出在底层驱动上了。有时候底层响应到用户层的速度是很慢的
gamemagic 2011-06-29
  • 打赏
  • 举报
回复
楼主是要模拟按键,不是接受按键
xychzh 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 timebomb 的回复:]
引用 1 楼 xuexiaodong2009 的回复:

做了个active?有难度啊


呵呵,没有做那些东西,还从来没有接触过呢,就是简单的利用WinIo将虚拟键灌入到键盘的底层驱动中,快速的执行响应,因为极品飞车这样的需要极高响应的游戏获取按键不是基于windows的消息机制的。
[/Quote]

DirectInput就可以在后台获取按键信息。PC平台没有比这个还快吧?
随便写个空窗口应用程序,然后使用DirectInput,并设置DISCL_BACKGROUND属性,这样,就可以捕获任何从键盘触发的消息了。
timebomb 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuexiaodong2009 的回复:]

做了个active?有难度啊
[/Quote]

呵呵,没有做那些东西,还从来没有接触过呢,就是简单的利用WinIo将虚拟键灌入到键盘的底层驱动中,快速的执行响应,因为极品飞车这样的需要极高响应的游戏获取按键不是基于windows的消息机制的。

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧