为什么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;
}

参考:

  1. http://blog.163.com/liang_w_yan/blog/static/210657088201332444016981/

转载于:https://my.oschina.net/itfanr/blog/365285

linux下的键盘检测相关推荐

  1. linux查看键盘命令,linux下的键盘检测

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

  2. linux键盘检测软件,linux下的键盘检测

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

  3. Linux下内存问题检测神器 valgrind

    Linux下内存问题检测神器:Valgrind - Madcola - 博客园 (cnblogs.com)

  4. 【调试】Linux下超强内存检测工具Valgrind

    [调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Lin ...

  5. usb设备检测linux,Linux下USB设备检测全教程(转)

    Linux下USB设备检测全教程(转)[@more@] USB设备检测也是通过/proc目录下的USB文件系统进行的.为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块.在检测开始 ...

  6. linux系统打开远程端口,linux下3种检测远程端口是否打开的方法

    原标题:linux下3种检测远程端口是否打开的方法 方法一. telnet 常用telnet ip port方式测试远程主机端口是否打开. 方法二. nmap nmap ip -p port 测试端口 ...

  7. 在Linux下禁用键盘、鼠标、触摸板(笔记本)等输入设备

    在Linux系统下禁用键盘.触摸板.鼠标等输入设备,可以通过xinput命令来实现: 主要涉及: #xinput list #xinput list-props list-number #xinput ...

  8. Linux下cppcheck静态检测工具

    1. cppcheck工具说明: cppcheck工具是一个C/C++代码缺陷静态检查工具.它不仅可以检查代码中的语法错误,还可以检查出编译器检查不出来的缺陷,从而辅助提升代码质量. 2. Linux ...

  9. Linux下使用iotop检测磁盘io使用情况

    介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...

  10. linux下开启键盘背光

    中午闲来无事,在linux下驳接了个小背光键盘,想试试能否开启背光:结果悲催的是废了九牛二虎之力,还是点不亮背光. 一怒之下,放狗搜,然后就有了下文 xset usage: xsetTo set LE ...

最新文章

  1. maven2创建或者导入eclipse工程 设置M2_REPO消除错误
  2. PL/SQL在win7/win8 x64位下使用客户端连接oracle
  3. python web开发第三方库_Python Web开发中常用的第三方库
  4. PHP的转义字符与\r\n
  5. Android Property Animation动画
  6. 自定义ActiveX组件在设计阶段,切换属性页后出现异常
  7. the deep ritz method论文梳理
  8. Crackme008
  9. PHP实现单向链表解决约瑟夫环问题
  10. OpenCV人工智能图像处理学习笔记 第5章 计算机视觉加强之图像美化
  11. 网络工程项目标书模板
  12. 超实用超全 || ZBrush笔刷大合集
  13. Vue框架入门(一)---开发简易计算器
  14. 高鸿业微观经济学第8版笔记和课后答案
  15. noexcept与栈展开(stack unwinding)
  16. 简易Java web在线聊天-websocket
  17. sqltrace相关汇总
  18. C# 运用开放协议连接拧紧枪控制器(马头)
  19. 【GZOJ】1369——小明跳楼梯
  20. Altium Designer 封装绘制时批量重命名焊盘编号

热门文章

  1. 从零实现HarmonyOS(鸿蒙)运动手表两个游戏的合并
  2. java.sql.SQLException: Access denied for user ‘crm‘@‘localhost‘ (using password: YES)
  3. 关于阻容耦合电路及阻容耦合分压
  4. 用python代码实现一个简单的FSA(有限状态自动机)
  5. Bumped! (最短路)
  6. TensorFlow Ranking框架在海外推荐业务中的实践与应用
  7. 毕业设计 基于STM32厨房环境监控报警系统
  8. uniapp字体图标的使用
  9. Oracle Becomes 2nd Largest Software Company
  10. stanford coreNLP简单使用