linux下的键盘检测
为什么80%的码农都做不了架构师?>>>
话说,仅仅是一个键盘检测就好麻烦。我还是懂的太少了。。。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <string.h>#define key_ESC 27void init_keyboard();void close_keyboard();int kbhit();int readch(); /* 相关函数声明 */static struct termios initial_settings, new_settings;static int peek_character = -1; /* 用于测试一个按键是否被按下 *//* 检测键盘按键的函数 */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);
}/* 用来接收按下的按键,并peek_character = -1恢复状态 */int readch(){char ch;if ( peek_character != -1 ){ch = peek_character;peek_character = -1;return(ch);}read( 0, &ch, 1 );return(ch);
}/* 配置终端函数 */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 main(int argc, char const *argv[])
{int ch = 0;init_keyboard();printf( "You can put ESC to quit!\n" );while ( ch != 27 ){if ( kbhit() ){ch = readch();if ( ch != 27 )printf( "You put %c ! Only put ESC can quit! \n", ch );}}close_keyboard();return 0;
}
参考:
http://blog.163.com/liang_w_yan/blog/static/210657088201332444016981/
转载于:https://my.oschina.net/itfanr/blog/365285
linux下的键盘检测相关推荐
- linux查看键盘命令,linux下的键盘检测
话说,仅仅是一个键盘检测就好麻烦.我还是懂的太少了... #include #include #include #include #include #include #include #include ...
- linux键盘检测软件,linux下的键盘检测
话说,仅仅是一个键盘检测就好麻烦.我还是懂的太少了... #include #include #include #include #include #include #include #include ...
- Linux下内存问题检测神器 valgrind
Linux下内存问题检测神器:Valgrind - Madcola - 博客园 (cnblogs.com)
- 【调试】Linux下超强内存检测工具Valgrind
[调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Lin ...
- usb设备检测linux,Linux下USB设备检测全教程(转)
Linux下USB设备检测全教程(转)[@more@] USB设备检测也是通过/proc目录下的USB文件系统进行的.为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块.在检测开始 ...
- linux系统打开远程端口,linux下3种检测远程端口是否打开的方法
原标题:linux下3种检测远程端口是否打开的方法 方法一. telnet 常用telnet ip port方式测试远程主机端口是否打开. 方法二. nmap nmap ip -p port 测试端口 ...
- 在Linux下禁用键盘、鼠标、触摸板(笔记本)等输入设备
在Linux系统下禁用键盘.触摸板.鼠标等输入设备,可以通过xinput命令来实现: 主要涉及: #xinput list #xinput list-props list-number #xinput ...
- Linux下cppcheck静态检测工具
1. cppcheck工具说明: cppcheck工具是一个C/C++代码缺陷静态检查工具.它不仅可以检查代码中的语法错误,还可以检查出编译器检查不出来的缺陷,从而辅助提升代码质量. 2. Linux ...
- Linux下使用iotop检测磁盘io使用情况
介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...
- linux下开启键盘背光
中午闲来无事,在linux下驳接了个小背光键盘,想试试能否开启背光:结果悲催的是废了九牛二虎之力,还是点不亮背光. 一怒之下,放狗搜,然后就有了下文 xset usage: xsetTo set LE ...
最新文章
- maven2创建或者导入eclipse工程 设置M2_REPO消除错误
- PL/SQL在win7/win8 x64位下使用客户端连接oracle
- python web开发第三方库_Python Web开发中常用的第三方库
- PHP的转义字符与\r\n
- Android Property Animation动画
- 自定义ActiveX组件在设计阶段,切换属性页后出现异常
- the deep ritz method论文梳理
- Crackme008
- PHP实现单向链表解决约瑟夫环问题
- OpenCV人工智能图像处理学习笔记 第5章 计算机视觉加强之图像美化
- 网络工程项目标书模板
- 超实用超全 || ZBrush笔刷大合集
- Vue框架入门(一)---开发简易计算器
- 高鸿业微观经济学第8版笔记和课后答案
- noexcept与栈展开(stack unwinding)
- 简易Java web在线聊天-websocket
- sqltrace相关汇总
- C# 运用开放协议连接拧紧枪控制器(马头)
- 【GZOJ】1369——小明跳楼梯
- Altium Designer 封装绘制时批量重命名焊盘编号
热门文章
- 从零实现HarmonyOS(鸿蒙)运动手表两个游戏的合并
- java.sql.SQLException: Access denied for user ‘crm‘@‘localhost‘ (using password: YES)
- 关于阻容耦合电路及阻容耦合分压
- 用python代码实现一个简单的FSA(有限状态自动机)
- Bumped! (最短路)
- TensorFlow Ranking框架在海外推荐业务中的实践与应用
- 毕业设计 基于STM32厨房环境监控报警系统
- uniapp字体图标的使用
- Oracle Becomes 2nd Largest Software Company
- stanford coreNLP简单使用