linux下获取键盘按键

Linux 按键输入驱动   按键驱动是操作 GPIO,在驱动程序中使用一个整形变量来表示按键值,应用程序通过 read 函数来读取按键值,判断按键有没有按下。 因为保存按键值的变量是个共享资源,驱动程序要向其写入按键值,应用程序要读取按键值。所以要对其进行保护,对于整形变量而言首选的是原子操作,使用原子操作对变量进行赋值以及读取。   读取按键一般采用中断的方式,并且采用定时器来实现按键消抖。此外在编写驱动的时候一定要考虑到阻塞和非阻塞的情况。对于按键输入驱动程序,最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问, 阅读详情
#include<stdio.h>
#include<termios.h>
#include<fcntl.h>
 
int main()
{
 fd_set rfds,rs;
 struct timeval tv;
   
 int i,r,q,j;
 struct termios saveterm,nt;
 int fd=0;
 unsigned char c,buf[32],str[8];
 
 tcgetattr(fd,&saveterm);
 nt=saveterm;
 
 nt.c_lflag &= ~ECHO;      
 nt.c_lflag &= ~ISIG;      
 nt.c_lflag &= ~ICANON;    
 
 tcsetattr(fd,TCSANOW,&nt);
 
 FD_ZERO(&rs);
 FD_SET(fd,&rs);    
 tv.tv_sec=0;
 tv.tv_usec=0;
 
 i=0; q=0;
 while(1)
 {
    read(fd,buf+i,1);
    sprintf(str,"<X>",*(buf+i));
    i++;
    if(i>31)
    {
       write(1,"Too many data\n",14);
       break;
    }
    write(1,str,4);
    r=select(fd+1,&rfds,NULL,NULL,&tv);    
    if(r<0)
    {
       write(1,"select() error.\n",16);
       break;
    }
    if(r==1)
        continue;    
    write(1,"\t",1);
    rfds=rs;
    for(j=0;j<i;j++)
    {
       c=buf[j];
       switch(c)
       {
           case 27 : write(1,"ESC ",4);
                 break;
               case 9 : write(1,"TAB ",4);
                   break;
           case 32 : write(1,"SPACE ",6);
                 break;
              default: if(c>=32 && c<127) write(1,buf+j,1);
               else write(1,"CTRL ",5);
                break;
        }
    }
    write(1,"\n",1);    
    if(buf[0]==27 && i==1)
    {
           if(q==0)
            q=1;
       else
        break;
    }
    else
       q=0;
    i=0;
 }
 
 tcsetattr(fd,TCSANOW,&saveterm);
 printf("\n");
 return 0;

}


说明:连续按下两次ESC键程序退出。

linux按键测试例子,获取按键状态 linux按键测试例子,/dev/input下event设备,获取按键状态并打印出来。 立即下载

相关推荐

GEO数据库数据下载方法总结

#GEO数据下载 GEO是生信分析经常用到的数据库。经常需要从中获取表达矩阵,平台信息,meta信息等,本博文总结了几种下载GEO数据的方法,各有优劣,实际应用过程中自行选择适合自己的。 ##方法一:直接从浏览器中下载 以数据集GSE1001为例, 可以直接点击“Series Matrix Files”获取该样本txt格式的表达谱数据,一般我们认为这种处理过的表达谱数据是没有问题的,当然,具体情况具体分析。 打开下载的文件可以看到许多“#”开头的行,这些是注释信息,一般关注这些注释信息中的“data pr

sakoko_的博客 4万+

Linux查看键盘的keycode值

在命令行中运行xev。

henryluoheng的博客 1109

C++游戏开发入门:从环境配置到第一个完整项目

C++ 作为游戏开发领域的关键语言,其学习路径常因语法枯燥而令初学者却步。以项目驱动的方式学编程,能帮助学习者将变量、循环、函数、指针等基础概念融入实际游戏逻辑中,获得即时反馈与完整项目经验。掌握合适的开发环境是高效实践的前提,例如在 Windows 下使用 VS Code 搭配 MinGW-w64 编译器,配合调试器与构建脚本,即可搭建轻量可扩展的 C++ 游戏开发工作流。此类课程通常面向无基础人群,从控制台小游戏逐步过渡到带游戏循环的完整作品,过程中还需关注性能观察、素材授权与版本管理。无论你是刚接触编

weixin_30621959的博客 541

linux 键盘 键值0x1e,键盘各键对应的键值

键盘各键对应的键值更新时间:2006年09月07日 00:00:00 作者:描述\r0x1鼠标左键\r0x2鼠标右键\r0x3CANCEL键\r0x4鼠标中键\r0x8BACKSPACE键\r0x9TAB键\r0xCCLEAR键\r0xDENTER键\r0x10SHIFT键\r0x11CTRL键\r0x12MENU键\r0x13PAUSE键\r0x14...

weixin_39520204的博客 1668

Keil MDK-ARM v5.43a 部署 STM32F103 开发环境全流程

嵌入式开发环境是 Cortex-M 微控制器工程落地的基础支撑,其核心在于编译器链、设备支持包(DFP)与调试驱动的协同一致性。Keil MDK-ARM 作为工业级 ARM Cortex-M 开发套件,依托 Arm Compiler 和 CMSIS 标准,提供从代码编译、外设抽象到实时调试的全栈能力。其技术价值体现在对 STM32 等主流 MCU 的深度适配、高可靠性 SWD 调试支持,以及与 HAL 库、CubeMX 工程的无缝集成。典型应用场景涵盖温湿度传感终端、工业 PLC 子模块及低功耗边缘节点开发

weixin_33750664的博客 886

深度解析direct path write temp与ASM IO性能问题:Oracle 19.17视图查询优化指南

本文深度解析了Oracle 19.17版本中复杂视图查询出现`direct path write temp`与`ASM IO for non-blocking poll`性能瓶颈的根本原因。通过对比11.2.0.4版本的执行计划差异,文章提供了从CBO参数调整、存储层优化到SQL架构重构的完整实战调优指南,帮助DBA有效解决升级后的查询性能问题。

2y3u4i5o6p的博客 1100

Linux下的串口编程

在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。 字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设备

学海无涯,回头是岸........ 1362

LangChain入门(二)-通过 Google 搜索并返回答案

并复制他给我们生成 api key。(博主使用了GitHub账号登录)-邮箱验证-手机号验证-订阅-api-key。Serpapi 提供了 google 搜索的 api 接口。首先需要我们到 Serpapi 官网上注册一个用户,

Good Luck 1万+

linux 读取键盘值

linux读取键盘值。

u011444756的博客 2112

YOLOv8改进,MobileNetV3轻量化架构改进特征提取网络,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3835

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 477

Linux C实现实时获取键盘按键

在Linux系统中,termios结构体用于表示终端接口的各种配置选项。通过修改termios结构体中的相应字段,可以控制终端的各种行为,包括将终端设置为原始模式(raw mode)。原始模式下的终端通常用于需要高精度键盘输入的程序,如某些游戏或者需要检测按键扫描码的低级输入处理程序。

罗伯特祥的博客 1447

基于深度学习YOLOv10的障碍物检测系统

为了方便用户使用,我们将开发一个图形用户界面(GUI),允许用户上传图像或视频流并查看检测结果。我们使用PySide6开发GUI界面,它是Qt框架的Python绑定,适用于开发跨平台的桌面应用程序。本文详细介绍了如何基于YOLOv10模型构建一个障碍物检测系统,包括数据集准备、模型训练和推理到图形用户界面的开发。通过这一系统,用户可以方便地上传图像或视频流并进行障碍物检测,广泛应用于自动驾驶、机器人导航等领域。

斌擎科技 1052

shell命令获取按键值_linux shell获取键盘输入

linux shell从键盘获取输入代码1:#!/bin/bash#提示“Input your choice:”,把用户的输入保存入变量choice_user中read -p "Input your choice:" choice_userecho "your choice:${choice_user}"#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中read -t 30 -p ...

weixin_30475939的博客 2509

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

arm shell 获取本地键盘输入值_linux下获取按键响应事件【转】

1、问题通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序代码是在unbuntu10.04编译执行通过的2、input_event描述在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作就是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过input_event结构体描述),不再...

weixin_42365401的博客 541

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

linux 终端termios NONICANON模式 获取键盘按键

linux 终端termios NONICANON模式 获取键盘按键

yvee的博客 752

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

arm shell 获取本地键盘输入值_【记录】ARM-linux开发之按键控制

【记录】ARM-linux开发之按键控制[复制链接]本帖最后由 ywlzh 于 2016-7-30 11:19 编辑驱动框架:采用混杂驱动程序的框架,具体细节在下面这个帖子二楼做过描述http://bbs.eeworld.com.cn/thread-495558-1-1.html硬件电路图:QQ图片20160730083821.jpg (31.87 KB, 下载次数: 0)2016-7-30 08...

weixin_35702295的博客 267

linux系统下键盘按键的重新映射——xmodmap工具和xev工具

linux系统下键盘按键的重新映射——xmodmap工具和xev工具

河海大学研究生在读的学习笔记 3166

linux方向键ascii_在线获取键盘按键值(ascii码)工具

RTSP协议媒体数据发包相关的细节最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下.基本的RTSP协议交 ...C&num;Winform版获取Excel文件的内容public MainForm() { InitializeComponent(); //this...

weixin_35857552的博客 627

linux下获取按键响应事件(转)

1、问题 通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序 代码是在unbuntu10.04编译执行通过的2、input_event描述 在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作就是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过input_event结构...

mwttry的专栏 1665

Linux键盘输入读取

1. 找到键盘设备 linux的键盘设备在 /dev/input/eventX 中,通过 ls /dev/input 通常会看到很多个eventX 那么哪个才是键盘?继续使用指令 cat /proc/bus/input/devices 查看各个设备的描述,通过关键字 keyboard 可以定位到 event1 2. 读取按键 按照linux “一切皆文件” 的特点,读取按键只需三步,open、read和解析,特别注意的是读取的数据为 struct input_event 结构 #include <

SGuniver_22的博客 1万+

Android 底层按键获取

好久没来更新文章了,因为没有找到自己的博客地址。。。我也说不清楚是怎么回事,几乎把所有的用户名密码都试过来了,就是没有找到,忽然间又找到了,神奇^-^ 写的不好,但也不想就此荒芜,继续更新!希望对你有用。          看这篇文章的同学们应该对getevent,sendevent这两个命令比较熟吧,我就不罗嗦了,还不熟悉的同学可以自己查一下。 一、Android中按键为什么需要进

流鼻涕的猪 7792

linux下获取按键响应事件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34336526的博客 410

linux下获取按键响应事件【转】

本文转载自:https://my.oschina.net/u/157503/blog/91548 1、问题通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序代码是在unbuntu10.04编译执行通过的2、input_event描述在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工...

weixin_30576859的博客 87

linux C获取键盘信息

#include <stdio.h> #include <unistd.h> #include <termios.h> static struct termios initial_settings, new_settings; static int peek_character = -1; void init_keyboard(void); void clo...

哈哈一笑 5712
上一篇: TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节
下一篇: TCP/IP详解学习笔记(6)-UDP协议
simonjay2007
博客等级 码龄17年 104粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值