Linux C语言监听键盘输入
本文主要介绍Linux下使用C语言实现监听键盘输入的功能。附:源代码下载Linux C语言监听键盘输入.zip
·
一、前言
本文主要介绍Linux下使用C语言实现监听键盘输入的功能。
二、代码实现
#include <stdio.h>
#include <termio.h>
/*
* 方法一:
* 调用函数时配置键盘监听事件,退出则关闭监听并恢复原始配置
*/
// linux 监听键盘事件(按下键盘的时候程序立刻读取),阻塞读取
// 返回值:输入该键的ASCII码值
int scanKeyboard()
{
int in;
struct termios new_settings;
struct termios stored_settings;
tcgetattr(0, &stored_settings); // 读取原始配置信息
new_settings = stored_settings;
new_settings.c_lflag &= (~ICANON); // 屏蔽整行缓存,不需要回车,输入单个字符即可输出
new_settings.c_cc[VTIME] = 0;
new_settings.c_cc[VMIN] = 1;
tcsetattr(0, TCSANOW, &new_settings); // 设置新的配置信息
in = getchar();
tcsetattr(0, TCSANOW, &stored_settings); // 恢复原始配置信息
return in;
}
/*
* 方法二:
* 1、初始化键盘监听事件的配置信息
* 2、监听键盘输入
* 3、关闭键盘监听,恢复原始配置信息
*/
static struct termios new_settings;
static struct termios init_settings;
// 初始化键盘监听事件
void init_keyboard()
{
tcgetattr(0, &init_settings); // 读取原始配置信息
new_settings = init_settings;
// new_settings.c_lflag |= ICANON; // 启用标准输入处理,需要回车结束输入
new_settings.c_lflag &= (~ICANON); // 不启用标准输入处理,屏蔽整行缓存,不需要回车,输入单个字符即可输出
new_settings.c_lflag |= ECHO; // 启动输入字符的本地回显功能
// new_settings.c_lflag &= (~ECHO); // 不启动输入字符的本地回显功能
new_settings.c_lflag |= ISIG; // 启动信号
new_settings.c_cc[VTIME] = 0;
new_settings.c_cc[VMIN] = 1;
tcsetattr(0, TCSANOW, &new_settings); // 设置新的配置信息
}
// 关闭键盘监听事件,恢复原始配置
void close_keyboard()
{
tcsetattr(0, TCSANOW, &init_settings); // 恢复原始配置信息
}
// 键盘输入事件监听,阻塞读取
// 返回值:输入该键的ASCII码值
int scan_keyboard()
{
return getchar();
}
// 测试程序
int main(int argc, char *argv[])
{
init_keyboard();
while(1)
{
printf(":%d\n", scan_keyboard());
}
close_keyboard();
}
附:源代码下载
更多推荐
已为社区贡献1条内容
所有评论(0)