zhaoyuan863 发表于 2024-2-3 19:49

解决单个按键连击1.0

本帖最后由 zhaoyuan863 于 2024-2-3 19:51 编辑

收了一个X220笔记本,本来说好键盘是正常的,结果有个按键有问题,即R键连击。很痛苦,用了几天受不了了,下单新键盘说年前只能顺丰到付。
算了,比较贵,先将就一下,用软件解决一下先吧。

下载了几个软件,但都是全局的,其他按键也受影响,系统自带的也是,想想算了,下载个python自己写一个吧。
代码倒是简单,但是python安装PyHook3这个麻烦的很,还下了VS编译,如果我会VC,我就用VC写了,无奈菜,不会VC……

python写好了后用pyinstaller打包成.exe,7.5M左右,上传不上来,只好把源码打包了,自己用python运行吧。




依赖包叫:PyHook3
这个不好安装,自己查教程安装吧。

预祝新年快乐!



zhaoyuan863 发表于 2024-2-3 20:02

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()
   

zhaoyuan863 发表于 2024-2-3 20:05

随手写的代码,比较简单,能用就行,不改了,虽然代码看起来好丑……

bbs119 发表于 2024-2-4 10:19

mark一下,说不定哪天就需要应急了

jokony 发表于 2024-2-4 11:02

我的 ctr 键也坏了,怎么弄? 哈哈

szypptz1qdfp 发表于 2024-2-4 12:04

用python运行?不懂哦,只会伸手···

jstar 发表于 2024-2-4 14:03

厉害了,不知道能不能解决鼠标左键连击的问题了

zhaoyuan863 发表于 2024-2-4 21:25

本帖最后由 zhaoyuan863 于 2024-2-4 21:26 编辑

jstar 发表于 2024-2-4 14:03
厉害了,不知道能不能解决鼠标左键连击的问题了
这个应该可以做到。用的是鼠标的钩子。

zhaoyuan863 发表于 2024-2-4 21:33

jokony 发表于 2024-2-4 11:02
我的 ctr 键也坏了,怎么弄? 哈哈

在kbm.ini清空内容,如果是左侧ctrl坏了,写:Lcontrol
右侧坏了,写:Rcontrol

zhaoyuan863 发表于 2024-2-4 22:17

https://zhaoyuan.lanzn.com/iilb31nctlyb

蓝奏云分享,这个是EXE打包后的,可以直接使用。
页: [1]
查看完整版本: 解决单个按键连击1.0