有时候我们需要判断是否按了单个键, 比如按单shift键, 进行中英文切换, 但是shift+字母就表示输入大写字母, 那么怎么区分这两种情况呢?
我想了一个办法, 按下shift时记录shift键被按下, 此时如果又按下其他键, 就记录其他键被按下, 最后当shift抬起的时候, 判断是否按了其他键, 就能确定是否按了单个键.
下面是示例代码:
1 _IsPressTargetKey = False # 是否按了目标键 2 _IsPressOtherKey = False # 是否按了目标键之后,又按了其他键 3 4 def CheckSingleKey(curKeyCode:int,targetKeyCode:int): 5 ''' 6 用于检验和记录是否只按了targetKeyCode, 也就是说按了targetKeyCode之后没有按其他键; 7 这样在targetKeyCode的up消息中可以获得这个信息; 8 注意: 此函数只用于filterKeyDown消息中 9 ''' 10 global _IsPressTargetKey,_IsPressOtherKey 11 # 目标键的处理 12 if curKeyCode==targetKeyCode: _IsPressTargetKey = True; _IsPressOtherKey = False 13 # 如果是非目标键, 并且目标键已经按过, 那么设置按了其他键 14 elif _IsPressTargetKey==True: _IsPressOtherKey = True 15 16 def IsPressSingleKey(curKeyCode:int,targetKeyCode:int)->bool: 17 ''' 18 是否按了单个的目标按键 19 注意: 此函数只用于filterKeyUp消息 20 ''' 21 if curKeyCode==targetKeyCode and _IsPressOtherKey==False: return True 22 return False
对了, 我的输入法基本完成了, 这篇短文就是用我自己写的输入法完成的. 下一步的目标是方便更换各种自定义的输入规则.
标签:输入法,False,Python,IsPressOtherKey,shift,后台,targetKeyCode,True From: https://www.cnblogs.com/huzhongqiang/p/17437890.html