首页
学习
活动
专区
圈层
工具
发布

13.Linux键盘按键驱动 (详解)

在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标:        实现键盘驱动,让开发板的4个按键代表键盘中的L、S、空格键、回车键...//键盘变量定义在:include/linux/input.h, 比如: KEY_L(按键L) unsigned long relbit[NBITS(REL_MAX)]; //存放支持的相对坐标值...); module_exit(buttons_exit); MODULE_LICENSE("GPL v2"); 3.测试运行: 挂载键盘驱动后, 如下图,可以通过  ls -l /dev/event*   ...在上一节输入子系统里分析到:输入子系统的主设备号为13,其中event驱动本身的此设备号是从64开始的,如上图,内核启动时,会加载自带触摸屏驱动,所以我们的键盘驱动的次设备号=64+1 3.1测试运行有两种...,然后打印在tty1终端上 方法2: exec 0键盘驱动就会直接打印在tty1终端上 3.2 调试: 若测试不成功

6.9K70

21.Linux-写USB键盘驱动(详解)

本节目的:     根据上节写的USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样:...所以我们要修改id_table,使这个驱动为键盘的驱动,如下图所示: ? 然后修改中断函数,通过printk()打印数据: 我们先按下按键A为例,打印出0x04,如下图: ?...发现该数组的0X04就是0X30,看来要写个键盘驱动,还需要上面的数组才行....4.本节键盘代码如下: #include linux/kernel.h> #include linux/slab.h> #include linux/module.h> #include linux...,比如鼠标,键盘等 然后make uImage 编译内核 将新的键盘驱动模块放入nfs文件系统目录中 5.2然后烧写内核,装载触摸屏驱动模块 如下图,当我们插上USB键盘时,可以看到该VID和PID,和电脑上的键盘的参数一样

9.9K92
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    200-CH582M学习开发-蓝牙键盘例程测试

    说明 一般现在卖的蓝牙键盘或者鼠标都是自动配对的, 要测试这节例程呢,需要有个蓝牙接收器模块;  现在有的电脑带了蓝牙接收器, 如果电脑没有的话需要先买一个 搜索:蓝牙适配器 测试 1,把下面这节的代码下载到开发板...2,然后把蓝牙适配器插到电脑USB, 选择显示蓝牙设备 3,会显示一个名字为 HID Keyboard 的蓝牙设备 3,点击配对 你会发现你的键盘上自动输入了 蓝牙键盘例程上默认提供的是把...a,b,c,d,e,f,g,h....键盘值循环的发送给电脑 程序细节 1.这个地方显示的是搜索的蓝牙设备的名字 2.这个地方显示的是配对成功以后显示的蓝牙的名字 3.这个地方是循环发送键盘值...默认从4开始发送, 注意哈 4代表键盘的a;  补充:关于电脑键盘HID码值,可以百度下 4.现在发送呢是发送了单个按键 后面还可以组合发送5个按键 5.对了, 其实上面的buf[0] 也是代表了按键值...,不过是代表了特殊按键 以 Shift按键为例:  咱的键盘上左边和右边都有Shift按键 假设下面的按键咱只按下了左边的Shift按键, 那么数据就是 0000 0010 (0x02) 6,假设我现在按下了左面的

    3.1K20

    STM32硬核DIY机械键盘|蓝牙USB双模|灯控

    因为想着以后用这把键盘,闯荡天下,制造更多东西,就像一个创世神一样,所以就叫创世一号WorldEdit了 创世一号采用STM32F103RCT6主控,整合有锂电池充放电管理,稳压,蓝牙串口HID,USB-HID...,LED灯阵列驱动,按键检测电路。...可实现蓝牙连接模式(支持IOS、Android等平台),和USB连接模式。蓝牙连接时响应时间约15ms,USB连接模式主控响应时间约为0.3Ms。 靓照如下: ?...到这里,键盘配列就完成了。然后去网上冲浪 淘一淘 , 买键帽、蓝牙HID模块、主控啊、一些电容电阻啊、锂电池啊、等等需要用到的东西。 2....三、优化程序代码 代码部分的思路就是检查键盘消息是否更新,更新了就生成按键数据包,然后串口传输给蓝牙模块。如果是USB模式的话就直接USB发送给电脑主机。

    6K41

    蓝牙技术揭秘:驱动智能时代的无线革命!

    蓝牙技术揭秘:从国王名字到无线连接的全球标准每个人都听说过蓝牙,而且几乎每个人都在使用它。不论是在手机、耳机、扬声器还是其他智能设备中,蓝牙技术都无处不在。那么,蓝牙究竟是什么?...为什么它会以“蓝牙”这个名字为人熟知?与其他无线连接协议相比,蓝牙到底有什么独特之处呢?...最初的蓝牙技术主要用于无线耳机和键盘等外围设备的连接,但随着技术的发展,它逐步扩展到了更多领域,包括智能家居、汽车、工业自动化等。...跳频扩频技术是蓝牙通信的核心之一。在这种技术下,蓝牙设备不断改变其通信频率,在多个频道间快速切换。通过这种方式,蓝牙能够避免与其他设备(如Wi-Fi、无线鼠标或键盘)共用同一频段而导致的干扰。...例如,在一个高密度的办公环境中,很多设备都可能在相同的 2.4 GHz 频段工作,如Wi-Fi路由器、蓝牙耳机、无线键盘等。

    1.9K10

    hook键盘驱动中的分发函数实现键盘输入数据的拦截

    用这种方式时首先根据ObReferenceObjectByName函数来根据对应的驱动名称获取驱动的驱动对象指针。...,以便在hook之后调用或者在驱动卸载时恢复 接下来hook相关函数,要截取键盘的数据,一般采用的是hook read函数 在read函数中设置IRP的完成例程,然后调用原始的分发函数,一定要注意调用原始的分发函数...下面是具体的实现代码 #define KDB_DRIVER_NAME L"\\Driver\\KbdClass" //键盘驱动的名称为KbdClass NTSTATUS ObReferenceObjectByName...ParseContext, PVOID *pObject); extern POBJECT_TYPE IoDriverObjectType; PDRIVER_OBJECT g_pKdbDriverObj; //键盘的驱动对象...IRP的数量,当键盘的请求没有被处理完成时不能卸载这个驱动 VOID DriverUnload(PDRIVER_OBJECT DriverObject) { LARGE_INTEGER WaitTime

    1.8K20

    RK61 蓝牙机械键盘配合 karabiner 软件适配 MAC 系统脚本

    RK61 蓝牙机械键盘配合 karabiner 软件适配 MAC 系统脚本 在 mac 升级到 10.12 之后,karabiner 软件就一直在开发中。以至于我一直都没有使用这个软件来修改键盘映射。...最近,我入手了一块 RK61 蓝牙机械键盘,准备用在 mac 笔记本上。但是默认的键盘布局让我十分恶心,主要是向上的方向键和斜线问号键是集成在一起的。而默认输入的是向上键。...首先是准备刷键盘固件的。和官方联系拿到了固件,但是在刷的过程中出现了问题,一直连接不上。...当然,你可以自己慢慢配置,但是我已经配置好了,所以,如果你和我使用同样的键盘的话,可以直接使用我的配置哦。...fn 的做法,这样比较符合我们正常的习惯 ctrl+esc ` 反正不能直接输入反引号了,默认fn+esc可以输入,但是需要两个手,所以用这个快捷键来代替 另外,键盘有有线模式和蓝牙模式,所以简单配置的部分

    2K90

    Deepin 使用笔记

    Deepin 深度操作系统 - Linux 发行版 前言 因为最近电脑中了恶意软件的圈套,清除又恨麻烦。...蓝牙键盘 我的蓝牙键盘罗技 Keyboard K480,连接时还需要输入配对码,所以不能简单通过系统自带蓝牙连接上。...scan on # 扫描其它蓝牙设备 pair YourDeviceMacAddress # 与设备配对(请把 YourDeviceMacAddress 换成你蓝牙键盘的 MAC 地址) # 这时终端应该会显示如下类似信息...# 连接该设备 # 这时候键盘上的指示灯不再闪烁,则键盘已成功连接 or blueman 一款功能强大的蓝牙管理器 sudo apt install blueman deepin 连接罗技蓝牙键盘...K380 打印机 打印机 - deepin wiki Deepin 上使用惠普打印机 - deepin wiki 首先按照官方教程,安装好相关厂商打印机的驱动。

    1.4K10

    Linux——Linux驱动之基本理论常识总结(什么是Linux驱动?Linux驱动需要掌握哪些?)

    2 Linux驱动程序需要掌握的内容 3 Linux驱动可参考的资源 4 ARM处理器体系架构 5 ARM的前世今生 ---- 0 引言 前面Linux专题中关于Linux下系统编程总结了17篇博文,主要是为了提高...Linux下的C编程应用能力,熟悉Linux编程应用环境,从此篇博文起开始Linux驱动的总结,后面计划加一些综合实践项目练习。...Linux驱动可参考的资源 Linux本身就是一个开源软件,开源的好处大家都知道,资料丰富,我们做Linux驱动开发,能找到技术支持和相应资源的有如下,列出的,对于新手来说,建议最佳的顺序是从1到5:...对上:Linux设备驱动给上层提供调用的接口; 对中:Linux设备驱动要注册到内核中,标准说法是 挂载在总线上; 对下:直接操作硬件,如GPIO、IIC、SPI、PWM等; 以上三个,Linux内核都提供了大量的接口函数...、结构体,其实Linux驱动,就是掌握了这些东西怎么用,适应到自己要写的驱动程序中。

    14K30

    Linux驱动之网卡驱动剖析

    Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送的接口。...传递的数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中的各层之间传输数据,该结构在整个网络收发过程中贯穿始终...设备驱动功能层 类似于字符设备,struct net_device结构体也提供了一个操作函数集struct net_device_ops来描述对网卡的各种操作。...源码分析 笔者基于的是 S5PV210 的 DM9000 驱动,会大体上对 DM9000 的驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 的驱动是基于 platform...return platform_driver_register(&dm9000_driver); } 该函数调用了 platform_driver_register 函数注册了一个平台总线驱动

    63.7K22

    【Linux笔记】Linux驱动基础

    上一篇分享的:从单片机工程师的角度看嵌入式Linux中有简单提到Linux的三大类驱动: ? 我们学习编程的时候都会从hello程序开始。...同样的,学习Linux驱动我们也从最简单的hello驱动学起。...但是,在嵌入式Linux中,驱动和应用的分层是特别明显的,最直观的感受就是驱动程序是一个.c文件里,应用程序是另一个.c文件。...我们前面说了驱动的装载方式之一的动态装载:把驱动程序编译成模块,再动态装载。动态装载的体现就是开发板已经启动运行了Linux内核,我们通过开发板串口终端使用命令来装载驱动。...以上就是分享关于驱动一些内容,通过以上分析,我们知道,其是有套路(就是常说的驱动框架)可寻的,比如: #include linux/module.h> #include linux/kernel.h

    32.2K55

    Linux驱动开发: USB驱动开发

    例如: 对于键盘,需要在数据包中指明按键的值,报告描述符把这些数据打包发给主机,主机对发来的数据进行处理。...四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似...(中断传输方式) 5.1 USB驱动注册框架代码 #include linux/init.h> #include linux/module.h> #include linux/usb.h> /*...鼠标驱动代码: 该模板适用于键盘驱动。...#include linux/hid.h> /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉 */ //定义USB的IDTAB 24ae:2002 static

    79K23

    Linux SPI 驱动

    四、指纹SPI设备驱动框架 在对硬件有了较高的基础理解后,其实代码主要就是开始对SPI的接口做的软件实现了。...由于平台厂商通常给我们做好了spicontroller以及spicore部分,接下来的总结主要是针对SPI设备驱动部分的。...代码部分均来自于linuxkernel开源代码https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?...五、总结 个人理解现在这个科技发展的风口下,手机、IOT、车机等终端设备齐放异彩的大背景下,新终端生态的搭建、基础智能设备的整合、大健康的趋势下,Sensor的发展是一个非常关键的驱动力,基础驱动软件能力的掌握也是重中之重...,linux给了我们一个很好的平台让我们能在前辈的肩上进行各种高质量的代码学习,我们也需抓住这个机会,在做好本质工作的基础上静心努力钻研,不断前行,祝愿各位也祝愿我自己在技术的道路上越走越远。

    24.1K12
    领券