社区
Linux/Unix社区
帖子详情
如何判断键盘击键?
liwz123
2003-06-13 01:42:18
如题。
我知道在windows里有个_kbhit的函数来判断,但在linux下如何判断?
望高手请教。
...全文
91
7
打赏
收藏
如何判断键盘击键?
如题。 我知道在windows里有个_kbhit的函数来判断,但在linux下如何判断? 望高手请教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mingjava
2003-06-14
打赏
举报
回复
好像只能捕获字母 对方向键有点无能为力,我运行了一下。
另外录入有点错误,
int readcn();//should change to int readch();
int main(void)
{
int ch = 0;
init_keyboard();
/* Looping, press q to quit */
while (ch != 'q') {
printf("Looping\n");
sleep(1);
if (kbhit()) {
ch = readcn();//should change ro ch = readch();
谁有判断方向键按下的函数 谢谢
Joran
2003-06-13
打赏
举报
回复
我给你敲进来,干脆。
#include <stdio.h>
#include <termios.h>
#include <term.h>
#include <curses.h>
#include <unistd.h>
static struct termios initial_settings;
static struct termios new_settings;
static int peek_character = -1;
void init_keyboard();
void close_keyboard();
int kbhit();
int readcn();
int main(void)
{
int ch = 0;
init_keyboard();
/* Looping, press q to quit */
while (ch != 'q') {
printf("Looping\n");
sleep(1);
if (kbhit()) {
ch = readcn();
printf("You hit %c\n", ch);
}
}
close_keyboard();
exit(0);
}
void init_keyboard()
{
tcgetattr(0, &initial_settings);
new_settings = initial_settings;
new_settings.c_lflag &= ~ICANON;
new_settings.c_lflag &= ~ECHO;
new_settings.c_lflag &= ~ISIG;
new_settings.c_cc[VMIN] = 1;
new_settings.c_cc[VTIME] = 0;
tcsetattr(0, TCSANOW, &new_settings);
}
void close_keyboard()
{
tcsetattr(0, TCSANOW, &initial_settings);
}
int kbhit()
{
char ch;
int nread;
if (peek_character != -1) {
return 1;
}
new_settings.c_cc[VMIN] = 0;
tcsetattr(0, TCSANOW, &new_settings);
nread = read(0, &ch, 1);
new_settings.c_cc[VMIN] = 1;
tcsetattr(0, TCSANOW, &new_settings);
if (nread == 1) {
peek_character = ch;
return 1;
}
return 0;
}
int readch()
{
char ch;
if (peek_character != -1) {
ch = peek_character;
peek_character = -1;
return ch;
}
read(0, &ch, 1);
return ch;
}
wwwunix
2003-06-13
打赏
举报
回复
1.先安装console-tools的源码包.用rpm
2.在/usr/src/redhat可以找到源码,用tar 解开里面的.bz的包
3.查看showkey.c
mingjava
2003-06-13
打赏
举报
回复
怎么看showkey德源代码?能不能都说的清楚点
liwz123
2003-06-13
打赏
举报
回复
to Joran(老朱)
在哪里?
具体点好吗?
多谢了!
Joran
2003-06-13
打赏
举报
回复
BLP 上有个例子
wwwunix
2003-06-13
打赏
举报
回复
建议参考showkey的源代码.可以实现你的需求.
键盘
类函数
本文详细介绍了Windows环境下
键盘
交互的相关API,包括获取
键盘
状态、
判断
按键、模拟
击键
等功能,并提供了丰富的示例代码。
[Win32]
键盘
接口简介
本文介绍了Win32环境下
键盘
输入焦点的原理,包括如何
判断
窗口是否具有输入焦点,以及系统消息队列和同步机制。详细阐述了
击键
消息和虚拟键代码,强调了系统
击键
和非系统
击键
的区别,并讨论了虚拟键代码的作用。最后,探讨了
击键
消息的标记信息和如何利用GetKeyState函数检查键的状态,以及
击键
消息在应用程序中的实际应用,如文本编辑和光标移动。
Windows程序设计--
击键
消息和字符消息
本文详细介绍了
键盘
消息和字符消息的区别与使用方法,包括
击键
消息与虚拟键码,以及如何通过GetKeyState和GetAsyncKeyState函数
判断
按键状态。同时,文章还讲解了字符消息的工作原理和常见ASCII值的对应,最后介绍了与
键盘
操作相关的API函数及使用场景。
《Windows程序设计》读书笔记之六
本文介绍了Windows程序获得
键盘
输入的方式,包括
键盘
消息传递、活动窗口
判断
、消息分类(
击键
和字符)、消息参数含义等。还提及了获取
键盘
状态的函数,字符消息的产生,以及插入符相关函数和使用注意事项。
windows程序设计笔记4
本文详细解析了
键盘
消息处理流程,包括消息队列的同步机制、
击键
与字符消息的区别、功能键
判断
、
键盘
操作规则及插入符函数使用。重点阐述了WM_KEYDOWN、WM_CHAR等消息类型及其在不同场景下的应用。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章