Python密钥交换程序



我有一个键盘与一个不工作的窗口键。我试着用Python修复它,如果我按下>键,程序将按Windows键,但它不工作。下面是代码:

import msvcrt
import pyautogui
while True:
if msvcrt.kbhit():
key_stroke = msvcrt.getch()
if key_stroke == b'>':
pyautogui.press('super')
print(key_stroke)

有人能帮我吗?由于

如果你想在python中重新映射键,keyboard模块就是你要找的。

请先安装键盘包(pip install keyboard)。文档

remap_hotkey函数完全可以满足您的需求。

键盘。Wait阻塞代码的执行,直到按下一个键。

import keyboard
keyboard.remap_hotkey("Shift+.", "windows")
while True:
keyboard.wait()

注意"Shift+."可能会根据您的键盘布局而更改。

点击">"你需要按两个键& & shift&;+ ".",当你释放";键你注册了&;&;&;是一个按键。但到那时,你们还没有释放"转移"。关键。

简而言之,当你在第7行执行pyautogui.press('super')时,你已经按下了"shift"键,然后发送"超级"。关键命令。

解决你的问题很简单,释放"shift"。键,然后发送pyautogui.press('super') cmd。

下面的代码将解决您的问题。

请先安装pynput包(pip install pynput)。pynput文档

解决方案- 1(修改代码)

import msvcrt
import pyautogui
from pynput import keyboard
kb = keyboard.Controller()
while True:
if msvcrt.kbhit():
key_stroke = msvcrt.getch()
if key_stroke == b'>':
kb.release(keyboard.Key.shift)
pyautogui.press('super')
print(key_stroke)

解决方案- 2(这将给你更多的控制键盘事件)要退出shell,请按&;esc &;关键。

from pynput import keyboard
kb = keyboard.Controller()
def on_press(key):
try:
print('alphanumeric key {0} pressed'.format(
key.char))
except AttributeError:
print('special key {0} pressed'.format(
key))
def on_release(key):
print('{0} released'.format(
key))
if hasattr(key, 'char') and key.char == ">":
kb.release(keyboard.Key.shift)
kb.press(keyboard.Key.cmd)
kb.release(keyboard.Key.cmd)
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
# ...or, in a non-blocking fashion:
listener = keyboard.Listener(
on_press=on_press,
on_release=on_release)
listener.start()

最新更新