如何修改QT键值映射

      最近在做一个数控机床CNC的嵌入式QT项目,当用户按设备上的小键盘区1 - 9的按键时,需要映射到其它的键值,而不是Qt::Key_1 - Qt::Key_9。

      尝试过单独起一个线程,从linux直接读取键值,用open("/dev/input/event3", O_RDWR)这种方法;也尝试过直接调QKeyEvent的nativeScanCode()方法获取硬件按键的键值。但这两种方法都有同一个问题,就是如果我有文本编辑器控件,这时用户按了小键盘的1,虽然我可以捕获这个scan code硬件按键的键值去处理自己的逻辑,但我却无法阻止文本编辑器上输入了个1,当然,我更不想自己去自定义一个文本编辑器。

      最后,我想到了改QT源码中键值映射这部分的代码,然后重新编译QT库放到板卡上。

 

      下面来看QT这部分的源码:

      首先看qkbdlinuxinput_qws.cpp

QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, const QString &device)

    : m_handler(h), m_fd(-1), m_tty_fd(-1), m_orig_kbmode(K_XLATE)

{

                                                .

                                                .

                                                .

    QString dev = QLatin1String("/dev/input/event1");

                                                .

                                                .

                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值