嵌入式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 小时前
SQLite3学习笔记4:打开和关闭数据库 + 创建表(C API)
数据库·学习·sqlite
Hgfdsaqwr6 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
charlotte102410247 小时前
数据库概述
数据库
清平乐的技术专栏8 小时前
HBase集群连接方式
大数据·数据库·hbase
四维碎片9 小时前
QSettings + INI 笔记
笔记·qt·算法
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大9 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
哈__9 小时前
多模融合 一体替代:金仓数据库 KingbaseES 重构企业级统一数据基座
数据库·重构
老邓计算机毕设9 小时前
SSM医院病人信息管理系统e7f6b(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·医院信息化·ssm 框架·病人信息管理
2601_9496130210 小时前
flutter_for_openharmony家庭药箱管理app实战+药品分类实现
大数据·数据库·flutter
dyyx11110 小时前
使用Scikit-learn进行机器学习模型评估
jvm·数据库·python