吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1328|回复: 7
收起左侧

[求助] python keyboard.add_hotkey 怎么区分小键盘区的按键

[复制链接]
happyfish 发表于 2022-8-17 13:34
本帖最后由 happyfish 于 2022-8-17 13:36 编辑

import keyboard

def ceshi(keya):
    print(keya)

keyboard.add_hotkey("ctrl + Num 1",ceshi,args=('aaa',))
keyboard.wait("ctrl + esc")

新手练习python
想设置快捷键为ctrl+小键盘区的1,但是现在ctrl+1 也会触发,怎么区分呢
求大神帮忙

免费评分

参与人数 1热心值 +1 收起 理由
guotao669988 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

不带口罩 发表于 2022-8-17 16:26
本帖最后由 不带口罩 于 2022-8-17 16:27 编辑

发送ascii码。
https://pynput.readthedocs.io/en/latest/keyboard.html#pynput.keyboard.Key
boxer 发表于 2022-8-17 16:42
可以用键盘扫描码区分, 数字1是2, 小键盘的1是79
pzx521521 发表于 2022-8-18 10:44

ascii 码是没有问题的 2, 4 L 说的都对, 但是没有给出解决方案
主页是这个
源码在这里
看了一下  确实没有现成的办法-> 那就修改源码吧
直接修改
keyboard.add_hotkey
源码位于:
\Lib\site-packages\keyboard\__init__.py

line640:
原本为:

steps = parse_hotkey_combinations(hotkey)

修改为:

    if isinstance(hotkey, tuple):
        steps = hotkey
    else:
        steps = parse_hotkey_combinations(hotkey)

运行的代码改为:

import keyboard

def ceshi(keya):
    print(keya)

steps = keyboard.parse_hotkey_combinations("left ctrl+1")
print(steps)
# (((2, 29), (29, 79)),)
# 29 指ctrl   2指1   79指小键盘1
steps_new = tuple([tuple([tuple([2, 29])])])
# keyboard.add_hotkey(steps,ceshi,args=('test',))
keyboard.add_hotkey(steps_new,ceshi,args=('test',))

整体逻辑就是
他本身解析的满足不了这种情况, 自己来解析

pzx521521 发表于 2022-8-18 10:49
重新看了一下  有api了:
[Python] 纯文本查看 复制代码
import keyboard

def ceshi(keya):
    # 79 means Num 1
    if keyboard.is_pressed(79):
        print(keya)

keyboard.add_hotkey("ctrl + Num 1",ceshi,args=('aaa',))
keyboard.wait("ctrl + esc")

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
happyfish + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| happyfish 发表于 2022-8-18 15:17
pzx521521 发表于 2022-8-18 10:49
重新看了一下  有api了:
[mw_shl_code=python,true]import keyboard

谢谢了,我试一下,万分感谢
 楼主| happyfish 发表于 2022-8-18 15:25
pzx521521 发表于 2022-8-18 10:49
重新看了一下  有api了:
[mw_shl_code=python,true]import keyboard

确实可以了,谢谢了,我照着你的思路学习一下这个79是怎么的出来的
 楼主| happyfish 发表于 2022-8-18 15:36
pzx521521 发表于 2022-8-18 10:49
重新看了一下  有api了:
[mw_shl_code=python,true]import keyboard

这个应该是做了2次判断了吧,按CTRL+1 跟CTRL+NUM 1都会触发测试,在ceshi函数里再次判断按下按键的ascii码,学习了,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表