Linux 键盘/鼠标 按键事件 编程

Linux 键盘/鼠标 按键事件 编程

从键盘对应的字符设备文件中直接读取数据,获取键盘信息时不需要通过回车就能操作,键盘所对应的字符设备文件在/dev/input目录下的event0-4中的某一个,可以自己先测试到底是哪一个

如何测试?

  1. 先在终端进入到对应目录下,cd /dev/input/
  2. 然后依次检测文件信息,使用 sudo cat event1命令检测
  3. 执行命令后会阻塞等待,当有按键按下时,会出现咱看不懂的二进制字符,如下
    在这里插入图片描述
  4. 如果没有出现这些奇怪的东西,而是显示对应敲下的字母,就说明不是这个文件。

鼠标事件

测试了一下鼠标事件,发现在mouse0文件下可以检测到鼠标,但是读出来的事件信息都是完全一样的。
于是,又测试了event2文件,发现也可以检测到鼠标事件,虽然滚轮上下滑动检测不到,但是鼠标移动、左键单击、右键单击和中间单击都可用输入事件结构体读取分辨出来。

1. 头文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>

2. 以只读方式打开对应的字符设备文件

 int fd;
 if((fd = open("/dev/input/event1", O_RDONLY)) == -1)
 {
   
	 perror("open error");
     return -1;
 }

3. 读取文件信息

使用输入事件结构体strcut input_event,定义一个该结构体的变量,来接收输入事件信息。接收信息使用read()函数,将按键事件写入结构体即可。


struct input_event {
    
	struct timeval time; 
	
    // 保存输入类型,其中 EV_KEY 表示键盘,宏定义的数字是 0x01
    __u16 type;  

	// 保存键盘输入字符的编号,每个编号对应一个值
    __u16 code; 

	// 保存按键当前的状态值
### 解决方案 对于 VMware 虚拟环境中 Ubuntu 24.04 遇到的“主 IP 地址:网络信息不可用”的问题,可以尝试以下方法来解决问题。 #### 方法一:重置 NetworkManager 设置 当虚拟机无法上网时,可以通过停止重新启动 `NetworkManager` 来恢复网络配置。具体操作如下: ```bash sudo service NetworkManager stop sudo rm /var/lib/NetworkManager/NetworkManager.state # 删除该文件 sudo gedit /etc/NetworkManager/NetworkManager.conf # 打开 .conf 文件后,找到 [ifupdown] managed 将 managed=false 改为 managed=true。 sudo service NetworkManager start # 启动服务 ``` 执行上述命令之后,使用 `ip addr show` 查看当前系统的网络接口状态,确认是否已经获取到了有效的 IP 地址[^1]。 如果 `sudo service NetworkManager stop` 命令不起作用,则可以直接运行 `sudo dhclient` 获取 DHCP 分配的新地址。 #### 方法二:调整网络脚本设置 另一种可能的原因在于 `/etc/sysconfig/network-scripts/ifcfg-ens33` 中的相关参数未被正确设定。此时应该编辑此文件将其中 ONBOOT 的值设为 yes: ```bash vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 编辑 ifcfg-ens33 文件 # 修改 ONBOOT=no -> ONBOOT=yes # 更改此项以确保开机自动激活网卡 :wq # 保存退出 service network restart # 或者 nmcli c reload # 重启网络服务使更改生效 ``` 这一步骤能够保证每次系统启动的时候都会加载正确的网络配置[^3]。 #### 方法三:检查防火墙状态 有时防火墙可能会阻止外部访问请求,在这种情况下应当考虑暂时禁用它来进行测试: ```bash systemctl stop firewalld # 临时关闭防火墙 systemctl disable firewalld # 禁止随系统自启 reboot # 重启计算机让改动生效 ``` 以上措施有助于排除因防火墙规则不当而导致的连通性障碍。 通过实施这些策略中的任何一个或者组合起来应用,通常都能够有效地解决 VMware 下 Linux 客户端所面临的网络连接难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值