gpt4 book ai didi

python - 如何在纯 python 或 : How to bind the key left of the [1] to a shortcut in Qt 中从硬件键号/扫描码获取实际键名

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:48 25 4
gpt4 key购买 nike

我的最终目标是将 [1] 键左侧的键绑定(bind)到 pyqt 中的快捷键,无论是什么键盘布局(qwerty、qwertz、azerty...)。 qt 不直接支持。

因此,要么我正在寻找 Qt 文档中未提及(或隐藏在某处)的方法,要么更可能的是,在此之前通过将硬件 key 编号转换为程序启动时当前布局中的实际键。

然后我可以将实际 key 提供给 pyqt,或者任何其他工具包,那时不需要知道任何东西。

单键左边的键有时有键号“1”(见http://pic.dhe.ibm.com/infocenter/aix/v7r1/index.jsp?topic=%2Fcom.ibm.aix.keyboardtechref%2Fdoc%2Fkybdtech%2FKey.htm)。

如果我在 qt 中拦截这个键并打印出它的“nativeScanCode”,我得到的结果是“49”。

所以总而言之,我更喜欢仅使用 python 的解决方案,但依赖 Qt 也很好。

原因:原因是这是一个使用起来非常舒适的键(关于布局)但高度依赖于语言。在某些键盘语言中,它甚至是一个“死键”,需要第二个键来创建带有变音符号的字符。

如果您想自己测试,只需将 z 和 y 键与 qwerty 和 qwertz 一起使用,这是比左边的键更简单的示例,但原则上它是相同的问题。目标是一个快捷键,无论是qwertz还是qwerty,总是由键盘左下角的按键触发(顾名思义,这两者的区别就是z和y颠倒了)

最佳答案

如果你想实现一个独立于键盘布局的快捷方式,你需要重新实现你的小部件的 keyPressEvent 并检查 keyEvent.nativeScanCode() 值。例如,要跟踪分配给 QWERTY 中的“Z”和 QWERTZ 中的“Y”的键,您可以使用以下内容:

class MyWidget(QtGui.QWidget):
def keyPressEvent(self, event):
if event.nativeScanCode() == 52:
print "Pressed!"

请注意重音键是特殊的。在某些布局中它是一个死键,这就是为什么在某些系统中 keyPressEvent 可能直到下一个键被按下才会出现。参见 this question .

QShortCut是基于QKeySequence的,QKeySequence不支持原生扫码,所以QShortCut不能用于这个任务。

关于python - 如何在纯 python 或 : How to bind the key left of the [1] to a shortcut in Qt 中从硬件键号/扫描码获取实际键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com