社区
C语言
帖子详情
如何判断按键是否为按住状态?
灼眼的超哥
2011-08-14 10:48:40
如题,C语言的,系统是linux系统。
写个游戏,用键盘控制,windows下的getch()函数和kbhit()函数已经模拟实现。
可是,怎么判断我是否按住某个键?
比如:我按住右键,小人往右走,松开按键后,小人停止走动。
...全文
1120
17
打赏
收藏
如何判断按键是否为按住状态?
如题,C语言的,系统是linux系统。 写个游戏,用键盘控制,windows下的getch()函数和kbhit()函数已经模拟实现。 可是,怎么判断我是否按住某个键? 比如:我按住右键,小人往右走,松开按键后,小人停止走动。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
swimming
2012-03-09
打赏
举报
回复
晕 和楼主一样 求子代码
灼眼的超哥
2011-08-15
打赏
举报
回复
难道没人会?还是这个问题太简单,懒得打字???
灼眼的超哥
2011-08-15
打赏
举报
回复
[Quote=引用 11 楼 bokutake 的回复:]
ncurses里可以用keypad()功能启用功能键,用getwch()就可以读到方向键等。
如果不用curses/ncurses,也可以通过ioctl切换键盘模式到K_RAW或K_MEDIUMRAW模式,就能直接获得键盘扫描码了。
http://hi.baidu.com/waiwai75/blog/item/05066f42efe5ba189313c63b.html
ncurses的……
[/Quote]
找到了这个:
http://blog.csdn.net/shark0001/article/details/2638187
灼眼的超哥
2011-08-14
打赏
举报
回复
[Quote=引用 7 楼 jernymy 的回复:]
引用 4 楼 gsy999 的回复:
引用楼主 liuchao35758600 的回复:
如题,C语言的,系统是linux系统。
写个游戏,用键盘控制,windows下的getch()函数和kbhit()函数已经模拟实现。
可是,怎么判断我是否按住某个键?
比如:我按住右键,小人往右走,松开按键后,小人停止走动。
#define KEY_DOWN(vk_code) (……
[/Quote]
消息模式?怎么实现?
jernymy
2011-08-14
打赏
举报
回复
[Quote=引用 4 楼 gsy999 的回复:]
引用楼主 liuchao35758600 的回复:
如题,C语言的,系统是linux系统。
写个游戏,用键盘控制,windows下的getch()函数和kbhit()函数已经模拟实现。
可是,怎么判断我是否按住某个键?
比如:我按住右键,小人往右走,松开按键后,小人停止走动。
#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_……
[/Quote]
消息模式比较好
jialejiahi
2011-08-14
打赏
举报
回复
linux做小游戏可以参考下curses库。
灼眼的超哥
2011-08-14
打赏
举报
回复
[Quote=引用 3 楼 alweeq86 的回复:]
OnLButtonDown 走
OnLButtonUp 停
[/Quote]
这是哪里的函数?
gsy999
2011-08-14
打赏
举报
回复
[Quote=引用楼主 liuchao35758600 的回复:]
如题,C语言的,系统是linux系统。
写个游戏,用键盘控制,windows下的getch()函数和kbhit()函数已经模拟实现。
可是,怎么判断我是否按住某个键?
比如:我按住右键,小人往右走,松开按键后,小人停止走动。
[/Quote]
#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEY_UP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
if (KEY_DOWN(VK_ESCAPE) || KEY_DOWN(VK_SPACE))
PostMessage(main_window_handle, WM_DESTROY,0,0);
alweeq86
2011-08-14
打赏
举报
回复
OnLButtonDown 走
OnLButtonUp 停
灼眼的超哥
2011-08-14
打赏
举报
回复
[Quote=引用 1 楼 tianmo2010 的回复:]
Linux下也可以用getchar()等,然后根据ASCLL码判断
[/Quote]
关键是如何判断我是一直按住按盘,还是只按一下按键。
如何检测按键被按下,以及检测按键是否释放?
tianmo2010
2011-08-14
打赏
举报
回复
Linux下也可以用getchar()等,然后根据ASCLL码判断
Jacky_Ben
2011-08-14
打赏
举报
回复
可以用等键来判断!
灼眼的超哥
2011-08-14
打赏
举报
回复
[Quote=引用 12 楼 bokutake 的回复:]
抱歉,直接看这个就行了,不用ncurses
http://stackoverflow.com/questions/3962263/checking-if-a-key-was-pressed
[/Quote]
虽然现在用getch()函数和kbhit()函数实现了,但是,效果还没那么完美;
用kbhit()检测是否有按键输入;
有的话,执行相关语句,并且,开始计数;
之后,继续循环,当计数超过最大值后,kbhit()函数还没检测到按键再次输入,判断为该按键已释放;
相反,判断为该按键处于按住状态。
辰岡墨竹
2011-08-14
打赏
举报
回复
抱歉,直接看这个就行了,不用ncurses
http://stackoverflow.com/questions/3962263/checking-if-a-key-was-pressed
辰岡墨竹
2011-08-14
打赏
举报
回复
ncurses里可以用keypad()功能启用功能键,用getwch()就可以读到方向键等。
如果不用curses/ncurses,也可以通过ioctl切换键盘模式到K_RAW或K_MEDIUMRAW模式,就能直接获得键盘扫描码了。
http://hi.baidu.com/waiwai75/blog/item/05066f42efe5ba189313c63b.html
ncurses的详细教程是:http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html
一般来说K_MEDIUMRAW就足够了。
灼眼的超哥
2011-08-14
打赏
举报
回复
[Quote=引用 7 楼 jernymy 的回复:]
引用 4 楼 gsy999 的回复:
引用楼主 liuchao35758600 的回复:
如题,C语言的,系统是linux系统。
写个游戏,用键盘控制,windows下的getch()函数和kbhit()函数已经模拟实现。
可是,怎么判断我是否按住某个键?
比如:我按住右键,小人往右走,松开按键后,小人停止走动。
#define KEY_DOWN(vk_code) (……
[/Quote]
怎么实现?
灼眼的超哥
2011-08-14
打赏
举报
回复
[Quote=引用 6 楼 jialejiahi 的回复:]
linux做小游戏可以参考下curses库。
[/Quote]
是个通过famebuffer显示图形的图形游戏,图形倒是可以显示,现在就是按键控制的问题。
python
按键
按住
不放持续响应的实例代码
今天小编就为大家分享一篇python
按键
按住
不放持续响应的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
单片机
按键
处理单片机
按键
处理.doc
单片机
按键
处理单片机
按键
处理
GHED-1006
按键
盘程序
按键
的
状态
机时序图
GHED-1006
按键
盘程序
按键
的
状态
机时序图
key.rar_
按键
程序_
按键
长按_
按键
长按累加_短按_长按
按键
消抖、长按、短按处理,包括连续累加累减,
按键
功能旗标的置起
key_driver.tar.gz_长按短按检测
可以检测
按键
长按还是短按功能的一个
按键
驱动,里面实现了一个小型的
状态
机,蛮不错的哦。
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章