你好(我为我的英语提前道歉)我需要帮助
我是python新手,我正在尝试一些在网上找不到任何帮助的东西。长话短说,我试图创造一种方法来完成以下工作:
每当我启动脚本时,它都会更改我的键盘Live输出我不想打印。假设我打开“记事本”,开始打字。键入时,如果我按“A”,它将键入“B”
例如,如果我键入“Apple”,它将是“bhil”(它只是一个exp)
我接近这个结果的唯一方法是使用库“pynput”和“键盘”,但我这样做效率不高。我将解释这个过程:
如果我检测到字母“A”并且在我的脚本中,该字母被设置为替换为“B”,我的脚本将按“backspace”然后键入“B”。但是用这种方式,我以前对“监听器”有个问题,每次我把“a”改成“B”时,他都会陷入一个循环中,因为改变它的方式是通过“实际上是”按下并松开键盘,它会把“B”改成“C”等等。。。 我通过在发送“B”命令时停止侦听器,找到了一个解决方案
现在我遇到的问题是,脚本工作正常,但在我使用“CTRL+C”(键盘中断)停止脚本后
这是需要解释的棘手部分:
它将按键发送到我的键盘(可能是我之前按下的按键),我无法阻止它
抱歉,我不知道我是否已经说清楚了,但下面是代码,如果您能尝试一下并帮助我,我将不胜感激,是的,我的代码很混乱,是的,也许python不是做这类事情的正确语言,但我真的想用python实现它,是的,我是python新手,所以请不要对我无礼:)
from keyboard import press, release
from pynput.keyboard import Listener
class changeOutput:
def __init__(self):
self.alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
self.invertedAlpha = ['z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k',
'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
self.stop = True # Stop The Listener
def on_press(self, key):
try:
clearKey = str(key).replace("'", "") # 'a' --> a
if clearKey in self.alpha:
self.stop = False
press('backspace')
press(self.invertedAlpha[self.alpha.index(clearKey)])
self.stop = True
self.start(stop=self.stop)
except KeyboardInterrupt:
self.stop = False
self.start(stop=False)
return False
def on_release(self, key):
try:
clearKey = str(key).replace("'", "") # 'a' --> a
if clearKey in self.alpha:
release(self.invertedAlpha[self.alpha.index(clearKey)])
self.stop = True
self.start(stop=self.stop)
except KeyboardInterrupt:
self.stop = False
return False
def start(self, stop):
while stop is True:
try:
with Listener(on_press=self.on_press, on_release=self.on_release) as listener:
listener.join()
except KeyboardInterrupt:
break
if __name__ == '__main__':
changeOutput().start(stop=True)
目前没有回答
相关问题 更多 >
编程相关推荐