首页 > 编程语言 >用Python开发输入法后台(6)——怎么判断是否按了单个键

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

时间:2023-05-28 11:14:12浏览次数:32  
标签:输入法 False Python IsPressOtherKey shift 后台 targetKeyCode True

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

相关文章

  • Python 中的类
    在Python中,类是一种用于创建对象的蓝图或模板。类定义了对象的属性和方法,用于描述对象的行为和状态。通过类,我们可以创建多个具有相同属性和方法的对象。下面是一个简单的Python类的示例:classPerson:def__init__(self,name,age):self.name=nameself.a......
  • Python 标准类库-因特网数据处理之Base64数据编码
    该模块提供将二进制数据编码为可打印ASCII字符并将这种编码解码回二进制数据的功能。它为RFC3548中指定的编码提供编码和解码功能。定义了Base16、Base32和Base64算法,以及事实上的标准Ascii85和Base85编码。RFC3548编码适用于对二进制数据进行编码,以便可以安全地通过电子邮件......
  • python自学笔记
    变量类型:整型int,字符串str,浮点型float;算术运算:+、-、*、/、%、**(乘方)、//(整除);逻辑运算:not、and、or;布尔类型:True、False;比较运算:>、>=、<、<=、==、!=;变量命名规则:字母+数字+下划线、区分大小写、数字不开头、不能用空格、不能用保留字;输入input()、输出print();字符串拼接:prin......
  • python3异常处理
    1、语法错误和异常语法错误是在代码执行前可以检测的,由于不符合代码语法规范引起的异常指程序运行过程中导致的超出预期处理能力的情况常见的异常:0作为除数未定义的对象被直接使用,比如参与运算或者调用其属性和方法str类型直接和非str类型相加输入输出与系统异常等异常有两......
  • python3 \r和\n
    1、说明\n:换行符,跳到下一行\r:回车,跳到当前行的首部,\r会占据一个字符长度windows下enter是\r\n; linux/unix下是\n; mac下是\r网络协议的头部字段间隔也是\r\n2、比较分析print('abc123zzz')print('abc\n123\rzzz\n1234\r',end='')print('000')""&quo......
  • python3反射
    脚本语言系列之Python|Python反射-知乎(zhihu.com)1、基本使用hasattr(obj,name_str)判断输入的name_str字符串在对象obj中是否存在(属性或方法),存在返回True,否则返回False。getattr(obj,name_str)将按照输入的name_str字符串在对象obj中查找,如找到同名属性,则返回该......
  • python3多线程
    1、线程和进程计算机资源,指的是cpu计算资源、内存资源、接口读写资源等。进程:计算机中用于分配资源的最小个体。不同进程之间并不共享内存。线程:是进程内部的资源分配对象,一个进程最少会有一个线程。同一进程下的不同线程可以共享内存。2、并行和并发并行:同一时间段,交替前行。并......
  • python输出列表索引
    输出列表索引列表的索引输出方法较为简单>>>a=[1,2,3,4,5,6]>>>a.index(2)1>>>#此处的列表a是一个没有重复元素的列表,所以输出的2索引就是1(因为python)的索引是从0开始计起>>>#假如对于一个列表中指定的元素不单一,输出的结果是怎么样的>>>b=[11,2,11,12,33,12]>......
  • python3函数
    1、介绍def函数名(参数列表):函数体在python中,可以直接在.py文件中,通过关键字def创建函数。2、函数与解释型python是解释型编程语言,从上到下解析,所以在调用函数时,该函数必须已经被声明。如果是在函数B声明之前,py文件中直接调用B,那么pycharm会提示异常如果是在函数B声明......
  • 全国计算机二级python考试学习信息 二级python考试练习习题 二级python考试资料 二级p
    Python加入计算机考试多久了计算机考试的全名叫做全国计算机等级考试,它每年考试的时间和开放的科目也是不同的。Python这个编程语言是在2018年的9月才加入全国计算机等级考试二级之中的,以前只有C、Java、C++等语言是作为考试科目的。Python列为国家等级考试的意义主要有以下几......