嵌入式Linux很多场景下需要自行制定Keyboard的keycode. 对于某个按键F8, Qt::Key_F8是Qt api, 是个固定值, 用于Qt application统一读取使用, 而缺省Linux把keycode映射为:

//src/plugins/generic/bsdkeyboard/qbsdkeyboard_defaultmap.h
const QBsdKeyboardMap::Mapping keymapDefault[] = {{  66, 0xffff, Qt::Key_F8,                  ModPlain,                        NoFlags, 0x0000 },
}
//qnamespace.h
Key_F8 = 0x01000037,

而嵌入式平台按键有限且要自行指定keycode, 这时不再使用上述keymapDefault的缺省实现. 比如将输入设备gpio keys实现为驱动 /dev/input/event1 (假如他的F8 keycode是82, 非66), 那么如何让Qt使用 /dev/input/event1 并使用新的 keycode--Key_F8 映射关系呢?

有以下几个步骤:

1. 使用qtapp/utilities/kmap2qmap工具将xxx.kmap(可编辑)生成xxx.qmap(二进制文件), xxx.kmap 内容可以是:

keymaps 0-127
...
#headset
keycode 82 = F8
...

2. 在启动Qt application前, 指定环境变量 QT_QPA_EVDEV_KEYBOARD_PARAMETERS, 其中包含了所使用的设备驱动/dev/input/event1 以及所定制的按键映射 xxx.qmap.  此外, 指定环境变量QT_QPA_EGLFS_NO_LIBINPUT 表示禁用 libinput 而使用 Qt 自带的 evdev handler用于接收并处理输入事件:

export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event0:/dev/input/event1:/dev/input/event2:/dev/input/event3:keymap=/usr/mbin/xxx.qmap
export QT_QPA_EGLFS_NO_LIBINPUT=1

3. 在Qt application的code中(比如qml)就可以使用通用的Qt::Key_F8了:

Item {anchors.fill: parentfocus: trueKeys.onPressed: {if (event.key >= Qt.Key_0 && event.key <= Qt.Key_9) {console.log("digit key");event.accepted = true;}}Keys.onReleased: {if (event.key == Qt.Key_F8) {console.log("headset key");event.accepted = true;} else {console.log("key=" + event.key);}}
}

参考: https://doc.qt.io/qt-6/inputs-linux-device.html

嵌入式Linux为Qt定制keymap相关推荐

  1. 嵌入式Linux的Qt

    嵌入式Linux的Qt 嵌入式Linux的Qt 配置特定设备 嵌入式Linux设备的平台插件 EGLFS LinuxFB 输入 使用libinput 鼠标Mouse 键盘 触碰 笔式平板电脑 调试输入 ...

  2. qt 调用linux键盘输入,嵌入式linux上QT标准键盘输入的实现

    1.嵌入式linux上QT标准键盘输入的实现 在嵌入式平台上运行QTE时,使用的键盘通常不是标准键盘,而是嵌入式设备外扩的普通按键.那么实现QTE键盘输入的方法大体上可以分为两类: (1)编写一个普通 ...

  3. linux系统下Qt应用程序重启,嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)...

    嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws) 应用软件一般都有这样的业务需求: 当有新版本的APP,则程序就需要执行更新,更新完毕后(所谓的更新大多就是以覆盖的方式),不需要关 ...

  4. 嵌入式Linux的QT版本,嵌入式Linux版本Qt5.4快速部署

    关键词: 摘要:Qt是一个领先 的跨平台应用和UI 开发框架(Framework),使用标准C++,适用于桌面,嵌入式和移动平台.本文着重就利用Boot to Qt 软件包来实现Qt5在嵌入式ARM平 ...

  5. 毕设教程:基于嵌入式Linux和Qt实现的视频监控系统(Arm/树莓派/jetson)

    本文章将教你做一个用嵌入式linux开发板和Qt来实现的视频监控系统. 知识点:嵌入式 Linux V4L2 socket QT 本项目是博主大学时的毕业设计题目,现分享给大家,需要其他题目可点如下链 ...

  6. 嵌入式linux安装qt,树莓派上安装qt

    在树莓派上安装了官方的raspbian系统.为了在能在上面开发程序,在系统上安装了qt4 .参考链接http://qt-project.org/wiki/apt-get_Qt4_on_the_Rasp ...

  7. QT接收Linux内核,嵌入式linux上QT标准键盘输入的实现

    在嵌入式平台上运行QTE时,使用的键盘通常不是标准键盘,而是嵌入式设备外扩的普通按键.那么实现QTE键盘输入的方法大体上可以分为两类: (1)编写一个普通按键驱动,然后开辟一个QT线程读取按键值,在通 ...

  8. 嵌入式linux配置qt,基于qt的嵌入式Linux开发环境搭建

    摘要:本文主要介绍在PC机上搭建基于QT的嵌入式开发环境,其中很多源文件都是开发板自带,需要相应资料的可以评论留下邮箱地址. 版本:交叉编译工具链:GCC 4.7.3  [gcc-linaro-arm ...

  9. qt linux软键盘拼音,嵌入式linux上Qt键盘输入实现拼音输入法

    作者:刘洪涛, 在嵌入式平台上运行QTE时,使用的键盘通常不是标准键盘,而是嵌入式设备外扩的普通按键.那么实现QTE键盘输入的方法大体上可以分为两类: (1)编写一个普通按键驱动,然后开辟一个QT线程 ...

  10. 嵌入式linux上QT标准键盘输入的实现

    作者:刘洪涛,华清远见嵌入式学院讲师. 在嵌入式平台上运行QTE时,使用的键盘通常不是标准键盘,而是嵌入式设备外扩的普通按键.那么实现QTE键盘输入的方法大体上可以分为两类: (1)编写一个普通按键驱 ...

最新文章

  1. (四十七)Quartz2D引擎初步
  2. Object Detection+目标检测概述及其常见模型总结
  3. redis list操作
  4. ubuntu如何更改用户名和密码
  5. c语言个人账册报告的课题来源,C语言个人账簿管理系统报告
  6. 电子设计竞赛(三)-SPWM与PID
  7. 这几款前端必备构建工具合辑,我们帮你整理好了!
  8. [delphi]极域学生端解除键盘鼠标锁定退出全屏广播-强制窗口化-源代码
  9. 全国计算机一级12月考试答案,12月到12月全国高校计算机等级考试(广西考区)一级笔试真题及答案...
  10. windows “文件大小”与“占用空间”、文件系统与文件拷贝
  11. 数字电视智能卡的定义
  12. 计算机网络与多媒体专科测试,上海第二工业大学2021年专科层次依法自主招生生考试职业技能测试考纲...
  13. 5 个接私活必备的 Java 开源项目!
  14. markdown编辑器使用测试-RAYTRACE
  15. 2022-2027(新版)中国工业5G技术行业发展动态与前景规划分析报告
  16. C/C++找工作这点事
  17. ANSYS APDL学习(3):ANSYS APDL 导入x_t格式模型并受力分析范例
  18. iOS静态库SDK制作(包含第三方静态库)
  19. 【RocketMQ】玩转各种类型的消息
  20. 处理textarea的空格和换行

热门文章

  1. IT项目的常见风险及应对措施
  2. gaster字体转换器_哥特字体在线生成,哥特字体在线生成器,哥特字体在线转换
  3. 家谱系统php,家谱信息管理系统
  4. CPU 性能优化的几个思路
  5. ftp服务器匿名账号,登陆ftp服务器的匿名账号
  6. oracle中alter用法,Oraclealter用法
  7. IntelliJ IDEA设置豆沙绿背景
  8. 均线颜色怎么区分_均线入门:一图学会区分不同均线的颜色与炒股技巧
  9. 东信杯题解详细版本附带代码(还有日常琐碎bb)
  10. 通俗易懂说单因素方差分析表