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 访问权限。