Linux(deepin)使用/dev/input/event碰到的坑...

本文记录了作者在Linux Deepin系统中尝试通过/dev/input/event传递蓝牙键盘信号到电脑过程中遇到的权限、设备识别和键码问题。通过`cat /proc/bus/input/devices`找到正确设备,但依然遇到按键延迟和异常重复输入的bug。解决方案包括写入按键事件后的系统报告,但重复输入问题尚未完全解决,疑似与连接稳定性相关。
摘要由CSDN通过智能技术生成

小萌新想把蓝牙键盘的键盘信号通过手机SOCKET通讯传给电脑,用的是写入 /dev/input/event 的方法
碰到的第一个坑,是权限问题,open函数写入的权限代码不管用,最后是生成文件后,用SUDO权限跑起来的

open("/dev/input/event4",O_RDWR,0777);//除了0777,也试过好几个其他的组合,全都perror显示权限不足

碰到的第二个坑,是一开始直接抄别人的代码,用的event0,结果跑起来按键基本没反应,原本以为是完全失败了,意外按下F2和F5的时候,弹出关机…
然后去查了查,学到了用 cat /proc/bus/input/devices 来查看对应的event和设备,原来我的event0和1都是POWER BUTTON……
而且键盘显示也是两个:

I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:14.0-12/input0
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-12/3-12:1.0/0003:046D:C31C.0002/input/input4
U: Uniq=
H: Handlers=sysrq kbd event4 leds 
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f

I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:14.0-12/input1
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-12/3-12:1.1/0003:046D:C31C.0003/input/input5
U: Uniq=
H: Handlers=kbd event5 
B: PROP=0
B: EV=1b
B: KEY=2010000 397ad801d001 1e000000000000 0
B: ABS=100000000
B: MSC=10

一开始看到LEDS…我以为event5才是输入,结果试了之后,发现event4才是…
找到了键盘的event,发现还是不行,按键奇奇怪怪的,显然是键码问题,于是听了一遍实际键盘的键码,把蓝牙的键码全部switch一遍

#include <QCoreApplication>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include &l
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值