嵌入式Linux ,QT5 鼠标键盘设备参数指定环境变量的方法

根文件系统中,一般用mdev来管理设备,不像udev方便,有时候在执行rcS脚本的时候因为,太快,有些设备比如鼠标还没在/dev/input中生成设备文件,最好使用前用mdev -s扫描并等待几秒钟,然后就可以在input中看到event*的设备文件了,通过程序或者evtest工具可以看到每个event文件对应的是什么设备,这玩意研究了好几天,尤其鼠标设备,一开始以为是/dev/input/mice,实际并不能用这个设备文件给qt用,必须event开头的,但是evtest工具枚举并没有看到mouse字样的设备,只看到了keyboard,后来发现是mdev -s再执行一次等待几秒就能看到了,也许是设备初始化较晚的原因:

bash 复制代码
echo "scan keyboard mouse device..."
mdev -s
sleep 2

devices=$(ls /dev/input/ | grep 'event')

kbdevice=""
micedevice=""

for device in $devices; do
    device_path="/dev/input/$device"
    output=$(timeout 0.5 evtest "$device_path" 2>/dev/null)
    if echo "$output" | grep -iq 'keyboard'; then
        echo "Found keyboard device: $device_path"
        kbdevice=$device
    elif echo "$output" | grep -iqE 'mouse|touchpad'; then
        echo "Found mouse device: $device_path"
        micedevice=$device
    fi

    if [ "$kbdevice" != "" ] && [ "$micedevice" != "" ]; then
        break
    fi
done

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins
export QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
if [ "$micedevice" != "" ];then
  export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/$micedevice
fi

if [ "$kbdevice" != "" ];then
  export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/$kbdevice
fi
相关推荐
搞全栈小苏1 小时前
基于Qt QML和C++的MQTT测试客户端(CMakeLists实现)
xml·c++·qt
小蒜学长2 小时前
基于springboot 校园餐厅预约点餐微信小程序的设计与实现(代码+数据库+LW)
数据库·spring boot·微信小程序
kimble_xia@oracle2 小时前
Oracle打补丁笔记
数据库·oracle
鼠鼠我捏,要死了捏2 小时前
大规模系统中的分库分表原理深度解析与性能优化实践指南
数据库·性能优化·分库分表
Linux运维技术栈3 小时前
【实战+原理】微软云 Azure Database 私有网络接入模式全解析:从子网委派到Private Endpoint
数据库·microsoft·azure
小熊h3 小时前
MySQL集群高可用架构——组复制 (MGR)
linux·数据库·mysql
清风6666664 小时前
基于STM32单片机的无线鼠标设计
stm32·单片机·计算机外设·毕业设计·课程设计
feifeigo1234 小时前
如何使用CrowPanel ESP32-S3高级HMI显示器来创建一个语音交互聊天机器人
机器人·计算机外设
sunshine-sm4 小时前
CentOS Steam 9安装 MySQL 8
linux·运维·服务器·数据库·mysql·centos·centos stream
IT果果日记4 小时前
详解DataX开发达梦数据库插件
大数据·数据库·后端