首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pynput键盘侦听器按shift时返回shift,但不修改shift_pressed

pynput键盘侦听器按shift时返回shift,但不修改shift_pressed
EN

Stack Overflow用户
提问于 2017-06-08 17:36:24
回答 2查看 5.4K关注 0票数 0

我有一个简单的程序来熟悉使用pynput的键盘听者。它所做的并不重要。重要的是,shift_pressed属性似乎永远不会更改为True。我的程序目前看起来如下:

代码语言:javascript
复制
from pynput.keyboard import Controller, Listener

boo = True
keyboard = Controller()

fib_lst = [0, 1]


def on_press(key):
    print(key)
    print(keyboard.shift_pressed)


Listener(on_press=on_press).start()

while boo:
    nxt = fib_lst[-1] + fib_lst[-2]
    input(nxt)
    fib_lst.append(nxt)

我试图在on_press (或on_release)中这样做:

代码语言:javascript
复制
def on_press(key):
    if key == Key.delete:
        if keyboard.shift_pressed:
            func1()

        else:
            func2()

此代码应该在按shift时执行func1,如果没有按shift,则执行func2。但是它目前只做func2,因为shift_pressed永远是假的。为了让shift_pressed按其应有的方式工作,我可以做什么不同的事情呢?

编辑1:更清楚地指定期望的最终结果。

编辑2:将附加字符串更改为两个不同的函数,以增加更多的清晰度。

编辑3:更改最后一个问题的参数以匹配最近的示例

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-08 21:55:02

这是pynput 1.3.5文档中的一个错误。

各种修饰符状态属性(alt_pressedalt_gr_pressedctrl_pressedshift_pressed)仅反映Controller实例的状态;它维护内部修饰符状态,当按下各种键时应用该状态--例如,支持它的脚本中的大写字符。

此状态与当前操作系统状态是分开的,只有在使用该特定控制器发送键按下时才会发生更改。

没有检索当前全局修饰符状态的通用pynput方法。

票数 0
EN

Stack Overflow用户

发布于 2017-06-08 17:47:37

我不是百分之百肯定,但当我与pynput一起工作时,我注意到我可以处理键释放时的操作,而不是键按,所以您可以尝试如下所示:

代码语言:javascript
复制
from pynput import keyboard

def on_press(key):
    if key == keyboard.Key.shift: # handles if key press is shift
        print('foo', end='')

def on_release(key):
    if key == keyboard.Key.shift:
        print()
    elif key == keyboard.Key.delete:
        print('bar')
    elif key == keyboard.Key.esc:
        return False

def get_current_key_input():
    with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()

get_current_key_input()

如果你需要其他帮助,告诉我你的具体动机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44442256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档