繁体   English   中英

使用eventfilter区分2个键盘击键(嵌入式linux)

[英]distinguish 2 keyboards keystrokes using eventfilter (embedded linux)

我知道有几个主题与此主题类似,他们并没有提出完全相同的问题,他们的答案也不是我所需要的。 我将尝试简要地解释我的情况。

我有两个键盘,一个是标准USB键盘(HID),另一个是GPIO键盘。 两个键盘通常都报告有键,但是我需要在Qt应用程序中采取不同的操作,具体取决于按下哪个键盘的键。

目前,两个键盘都可以同时正常工作,但我只是找不到一种方法来识别按下的键盘来自哪个键盘。

这有可能吗? 我正在使用Qt 4.8.5,可以重新编译它,以防需要完成我所需要的。

任何帮助,提示,技巧将不胜感激。

感谢您的帮助,

威廉

Qt没有此功能来检测按下哪个键盘。 您应该使用Linux事件接口来区分两个输入。 当可以从其中一种硬件获得某些输入时,可以通过读取/dev/input/目录下的字符设备来访问它。 例如,您可能有一个文件,例如/dev/input/by-id/usb-0b38_0010-event-kbd ,可以读取该文件以查看特定键盘的输入。

您可以在两个单独的线程中读取两个键盘的特定文件,并且每次从其中一个读取一些新数据时,都向主线程发送信号,以通知输入来自哪个键盘:

在第一个线程中:

QFile file("/dev/input/by-id/FileForKeyboard1");

if(file.open( QIODevice::ReadOnly | QIODevice::Text ) )
{
    QTextStream stream( &file );
    while(true)
    {
        stream.read(1);
        emit keyBoard1_Pressed();
    }
}

在第二个线程中:

QFile file("/dev/input/by-id/FileForKeyboard2");

if(file.open( QIODevice::ReadOnly | QIODevice::Text ) )
{
    QTextStream stream( &file );
    while(true)
    {
        stream.read(1);
        emit keyBoard2_Pressed();
    }
}

请注意,您应该具有root用户访问权限才能读取这些文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM