Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > linux下读取键盘扫描码
【标  题】:linux下读取键盘扫描码
【关键字】:linux
【来  源】:http://blog.csdn.net/ma100/archive/2007/02/07/1504270.aspx

linux下读取键盘扫描码

Your Ad Here  键盘扫描码有两种:  
  一个是make   code,也就是键被按下和按住不放时产生  
  另一种是break   code,在键被释放时产生。  
  每个键都有自己唯一的make   code和break   code。  
  提供一个我在Linux下的实现,就是使用ioctl   改变终端I/O模式。  
  测试程序在“a”健被按下时退出。  
#include   <stdio.h>  
#include   <stdlib.h>  
#include   <termios.h>  
#include   <sys/ioctl.h>  
#include   <unistd.h>  
#include   <linux/kd.h>  
int   main(void)  
{  
 struct   termios     oldtermios,newtermios;  
 int         oldmode;  
 unsigned   short   key;  
 int   i;  
 if((tcgetattr(fileno(stdin),&oldtermios))<0)  
 {  
  perror("tcgetaddr   error");  
  exit(1);  
 }  
 if((tcgetattr(fileno(stdin),&newtermios))<0)  
 {  
  perror("tcgetaddr   error");  
  exit(1);  
 }  
 newtermios.c_lflag   &=   ~(ICANON|ECHO|ISIG);  
 newtermios.c_iflag   =   0;  
 newtermios.c_cc[VMIN]   =   0;  
 newtermios.c_cc[VTIME]   =   1;  
 if(tcsetattr(fileno(stdin),TCSAFLUSH,&newtermios))  
 {  
  perror("tcsetattr   error");  
  exit(1);  
 }  
 ioctl(fileno(stdin),KDGKBMODE,&oldmode);  
 if(ioctl(fileno(stdin),KDSKBMODE,K_RAW))  
 {  
  perror("ioctl   error");  
  exit(1);  
 }  
 while(1)  
 {  
  if(read(fileno(stdin),&key,sizeof(key))>0)  
   printf("   key   =   0x%x   \n",key);  
  if   (key   ==   0x1e)//key   a   down   ,   exit.  
   break;  
  key   =   0;  
 }  
 ioctl(fileno(stdin),KDSKBMODE,oldmode);  
 tcsetattr(fileno(stdin),TCSANOW,&oldtermios);  
 return   0;  
}  
1.2 连接信号和响应函数:【上一篇】
rpm命令的正常用法,可以总结为安装,升级,删除和查询。:【下一篇】
【相关文章】
  • 关于Linux下C/C++程序编译
  • Linux下编程开发初学
  • Linux网关服务器实现静态IP/MAC捆绑
  • Linux分区表示法
  • Linux LVM 的使用详解
  • 嵌入式linux入门学习
  • 如何在linux下挂载windows分区
  • 转载:从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
  • linux下关机命令详解
  • Linux应用程序开发学习笔记
  • 【随机文章】
  • 关于没有outgoing call情况下的fxo占线情况的解决
  • Flash 按下按钮后打开链接或发送邮件
  • 创建扩展图元
  • 给自己备忘的东西
  • 动态SQL四种类型的语句格式
  • 收到QQ尾巴送来的“我的近照11.zip”
  • 在VMWARE SERVER 中使用 NAT 连接
  • 中文版Windows XP也安装英文SP2
  • Web编程语言 之 我选择我喜欢
  • C++面试题2
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.