• 6631阅读
  • 8回复

[提问]如何获得Qt::Key的本地键码? [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2011-09-23
Qt中是如何对将本地键码和Qt::Key之间进行映射的?我想将Qt::Key转换为本地的keycode,然后调用本地函数。由于没下Qt源码所以不知道该怎么找。请问哪位对这个比较熟悉?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 1楼 发表于: 2011-09-23
回 楼主(roywillow) 的帖子
自动弄个map
离线roywillow

只看该作者 2楼 发表于: 2011-09-23
回 1楼(dbzhang800) 的帖子
所以说……这个map该怎么弄呢?qt有提供好的?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jyw0113
只看该作者 3楼 发表于: 2011-09-23
这个map要自己写的把
离线roywillow

只看该作者 4楼 发表于: 2011-09-23
QxtGlobalShortcut有这方面的一个函数,难道要用那个么……mac下的那个因为没有测试结果看完表示深刻的怀疑,太复杂了……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 5楼 发表于: 2011-09-23
引用第4楼roywillow于2011-09-23 16:23发表的  :
QxtGlobalShortcut有这方面的一个函数,难道要用那个么……mac下的那个因为没有测试结果看完表示深刻的怀疑,太复杂了……


看你自己需求了,如果QxtGlobalShortcut 中的那个够用的话直接用就好了,Qt源码中用的比这个复杂多了。你可以直接去看 qkeymapper_{win/mac/x11/s60/qws/}.cpp 这些文件
离线roywillow

只看该作者 6楼 发表于: 2011-09-23
回 5楼(dbzhang800) 的帖子
原来还真在这里面啊……之前碰到这个翻了一下结果晕死了……
其实我是想写一个获得按键状态的函数,因为auto repeat的原因通过pressEvent和releaseEvent这两个函数很难处理,所以就想通过系统api来解决
windows下还好办,感觉对应的还挺清晰,文档也好找
x11下就挺纠结的,所以顺便问一下XQueryKeymap返回的那个map中每个位究竟对应哪个键?找了很久没找到想要的
然后mac好像就更复杂了,我都不知道问题该怎么问了……
这方面有没有别人的实现可以参考一下?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 7楼 发表于: 2011-09-23
X11下似乎成功实现了
XQueryKeymap返回的map需要用keycode来索引,keycode则可以通过keysym获得(XKeysymToKeycode),而keysym的定义就跟qt的key很类似了,基本上是一一对应的
QxtGlobalShortcut在X11上的那一段对大部分的按键可行,但是对于shift、ctrl和类似capslock的按键无法成功获得,因为QKeySequence获得的字符串与XStringToKeysym要求的字符串有少许差别,并且qt不分左右,但是x11区分……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 8楼 发表于: 2011-09-24
哎,文档没看仔细,isAutoRepeat()直接让我避开了平台api……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个