话说,仅仅是一个键盘检测就好麻烦。我还是懂的太少了。。。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define key_ESC 27

void 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/

原文:http://my.oschina.net/itfanr/blog/365285

linux键盘检测软件,linux下的键盘检测相关推荐

  1. mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...

    Mats显存检测软件是一款专业的显卡检测工具,全系统都是中文的,是一款装机必备的硬件工具,帮助你了解自己的显卡运作情况,有任何问题都可以第一时间暂停,看完的小伙伴可以关注微侠网下载最新版软件以及查看最 ...

  2. linux图片相似度检测软件下载,文档相似性检测工具

    文档相似性检测工具是通过比对源文档和目标文档的相似性给出相似度结果的一种信息处理系统.可以分段粘贴进去查 的确很给力哦.文档相似性检测工具和其他系统覆盖文献有80%以上不同,本系统通过混合引擎覆盖18 ...

  3. linux命令查找软件,linux指令速查器下载

    linux指令速查器最新版(linux指令查询)是一款最新免费包含linux命令查询.搜索功能的linux命令查询软件,它介绍了超过300条指令的用法,对各种用法做了详细的中文说明,非常适合于新手玩家 ...

  4. seo排名检测软件-免费SEO排名监管检测工具-自动检测网站排名

    seo排名检测软件,什么是SEO排名检测软件.SEO排名检测软件有什么作用?今天给大家分享一款免费批量检测网站排名.以及网站蜘蛛的工具.支持按月查询以曲线图的方式展示.不仅可以查询排名,还可以查询收录 ...

  5. 测试手机硬件检测软件是什么,手机硬件检测工具_手机硬件检测软件_手机硬件检测软件哪个好【最新】-太平洋电脑网...

    win7系统怎么检测电脑硬件的散热功能 win7系统怎么检测电脑硬件的散热功能 驱动人生硬件检测功能 驱动人生使用方法 驱动人生硬件检测功能使用方法来咯~有些朋友不知道驱动人生硬件检测怎么用,这个实用 ...

  6. 电路板测试机检测软件,PCB线路板板智能检测的方法

    原标题:PCB线路板板智能检测的方法 根据PCB板的具体特点,选择在线测试的方法将一种或多种工序结合在一起,取长补短,综合运用.下面小编来介绍一下关于PCB线路板板智能检测的方法. 首先,在PCB板机 ...

  7. linux 强行安装软件,Linux下强制不检测依赖安装VNC

    近日需要给一个Linux服务器安装VNC服务端,在光盘中找到了相关的RPM包,但是在安装的时候提示有依赖关系,尝试在网上找了一下相关资料也没有答案,无奈之下选择了不检查依赖进行安装 rpm -ivh ...

  8. linux类似360软件,linux下有什么类似鲁大师查看电脑配置的软

    满意答案 drqyna 2017.05.26 采纳率:40%    等级:11 已帮助:5455人 linux如何查看系统的硬件配置如何在linux系统下查看系统配置?在图形模式下我们可以很方便的利用 ...

  9. linux卸载常用软件,Linux 下软件安装卸载常用方法

    1.软件安装卸载,分几种情况: A:RPM包,这种软件包就像Windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便,在图形界面里你只需要双 ...

最新文章

  1. 原生Android也能做Web开发了
  2. java 通道 双向原理_Java-NIO(四):通道(Channel)的原理与获取
  3. remmina连接xfce桌面的centos7
  4. echarts柱形图x轴y轴互换_数控机床在加工零件时,突然出现X、Y、Z轴失控?如何处理...
  5. sql 基础增删改查语句
  6. webrtc 渲染_[WebRTC架构分析]采样率转换
  7. Python——上下文管理器
  8. BP神经网络matlab程序运行问题
  9. 海尔智能微型计算机,微型计算机 Microcomputers
  10. TCP/UDP Socket调试工具(SocketTool) v4
  11. 用计算机证明的定理,定理机器证明
  12. 芋头哥:从码农到农民,靠微博3个月卖出20万斤
  13. CentOS6.4x84挂载U盘
  14. pb调用计算机默认游览器,PB打开ole控件IE浏览器版本问题_指定Webbrowser控件所用IE内核版本(转)...
  15. Linux面板体验与推荐 AMH、AppNode、WDAP、宝塔
  16. 数据仓库中各个常用英文简写的代表意义
  17. 上海计算机考试分值,上海高考科目及分值
  18. SASS的概念和使用
  19. 实用主义 | 如何定制化群发你的微信消息
  20. java农夫过河问题_农夫过河问题——C语言程序设计(转)

热门文章

  1. windows重建图标缓存(解决快捷方式图标丢失,图标加载时间长问题)
  2. 基于Bootstrap简洁的后台UI框架
  3. 【ubuntu】ubuntu 如何解压zip文件
  4. java关闭ftp 连接_Java语言实现简单FTP软件------gt;连接管理模块的实现:主机与服务器之间的连接与关闭操作(八) - 移动编程 - ITeye博客...
  5. 基于EfficientNetB0的车辆品牌识别
  6. 大佬手把手教你如何仿写出大厂的APP,原理+实战+视频+源码
  7. 计算机网络中和通信相关,计算机网络和通信基础知识
  8. 4、Horizon 连接服务器安装配置
  9. (xml+flash)flash播放器代码!
  10. profile参数详解