用Python开发输入法后台(6)——怎么判断是否按了单个键

发布时间 2023-05-28 11:01:59作者: 顺其自然,道法自然

有时候我们需要判断是否按了单个键, 比如按单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

 对了, 我的输入法基本完成了, 这篇短文就是用我自己写的输入法完成的. 下一步的目标是方便更换各种自定义的输入规则.