解决单个按键连击1.0
本帖最后由 zhaoyuan863 于 2024-2-3 19:51 编辑收了一个X220笔记本,本来说好键盘是正常的,结果有个按键有问题,即R键连击。很痛苦,用了几天受不了了,下单新键盘说年前只能顺丰到付。
算了,比较贵,先将就一下,用软件解决一下先吧。
下载了几个软件,但都是全局的,其他按键也受影响,系统自带的也是,想想算了,下载个python自己写一个吧。
代码倒是简单,但是python安装PyHook3这个麻烦的很,还下了VS编译,如果我会VC,我就用VC写了,无奈菜,不会VC……
python写好了后用pyinstaller打包成.exe,7.5M左右,上传不上来,只好把源码打包了,自己用python运行吧。
依赖包叫:PyHook3
这个不好安装,自己查教程安装吧。
预祝新年快乐!
import PyHook3 as pyhook
import pythoncom
def OnKeyboardDown(event):
global tr1,key_list,ti
if event.Key in key_list:
if tr1 ==0:
tr1=event.Time
return True
elif event.Time-tr1<ti: #100毫秒
print('连击的按键为:',event.Key)
return False
else:
tr1=0
return True
return True
def main():
try:
hm = pyhook.HookManager()
hm.KeyDown = OnKeyboardDown #将OnKeyboardEvent函数绑定到KeyDown事件上
hm.HookKeyboard() #设置键盘钩子
pythoncom.PumpMessages()
except Exception as err:
print(err.__repr__())
input('Error! Any key to Exit. > ')
finally:
hm.UnhookMouse() #取消鼠标钩子
hm.UnhookKeyboard() #取消键盘钩子
if __name__=="__main__":
print('2024-02-03')
tr1=0
try:
t=input('间隔时间:(ms),Enter for 100ms. > ')
ti=int(t)
except:
print('Inter Error. Default is 100ms ')
ti=100 #100毫秒。
print('间隔时间设置为{}毫秒'.format(ti))
print('读取连击按键键值,如需修改,请自行修改本程序下的kbm.ini文件,每行一个键符')
try:
key_list=[]
with open('kbm.ini','r',encoding='utf-8')as fr:
all_lines=fr.readlines()
for each in all_lines:
key_list.append(each.strip())
print('要处理的按键为:',key_list)
if len(key_list)==0:
print('文件读取失败,默认处理R键。')
key_list=['R']
except Exception as err:
print(err.__repr__())
print('文件读取失败,默认处理R键。')
key_list=['R']
print('*'*32,'\n程序运行中……')
main()
随手写的代码,比较简单,能用就行,不改了,虽然代码看起来好丑…… mark一下,说不定哪天就需要应急了 我的 ctr 键也坏了,怎么弄? 哈哈 用python运行?不懂哦,只会伸手··· 厉害了,不知道能不能解决鼠标左键连击的问题了 本帖最后由 zhaoyuan863 于 2024-2-4 21:26 编辑
jstar 发表于 2024-2-4 14:03
厉害了,不知道能不能解决鼠标左键连击的问题了
这个应该可以做到。用的是鼠标的钩子。 jokony 发表于 2024-2-4 11:02
我的 ctr 键也坏了,怎么弄? 哈哈
在kbm.ini清空内容,如果是左侧ctrl坏了,写:Lcontrol
右侧坏了,写:Rcontrol https://zhaoyuan.lanzn.com/iilb31nctlyb
蓝奏云分享,这个是EXE打包后的,可以直接使用。
页:
[1]