Chúng tôi sẽ sử dụng mô-đun pynput để nghe các sự kiện của chuột. Để cài đặt mô-đun này, hãy thực thi
keyboard = Controller[]
1 trong cmd. Xem đầu ra để đảm bảo không có lỗi nào xảy ra; Để kiểm tra kỹ xem nó đã được cài đặt thành công hay chưa, hãy mở IDLE và thực hiện lệnh
keyboard = Controller[]
2; Phím mô phỏng
Tạo một tập lệnh mới và lưu nó ở đâu đó để bạn có thể dễ dàng chạy tập lệnh. Nhập
keyboard = Controller[]
3 và keyboard = Controller[]
4 từ keyboard = Controller[]
5from pynput.keyboard import Key, Controller
Tạo một biến có tên là bàn phím và đặt nó thành một thể hiện của
keyboard = Controller[]
4. Bây giờ bằng cách sử dụng biến bàn phím, chúng ta có thể nhấn và nhả phímkeyboard = Controller[]
Nhấn và nhả phím
Sử dụng
keyboard = Controller[]
7 chúng ta có thể nhấn phím và với keyboard = Controller[]
8 chúng ta có thể nhả phím. Điều này cho phép chúng ta gõ một phím bằng cách nhấn và thả. Bạn chỉ có thể cung cấp cho phương thức này một khóa tại một thời điểm. Dưới đây là một ví dụ về cách gõ chữ 'a'keyboard.press['a']
keyboard.release['a']
Nhấn và thả các phím đặc biệt
Đối với các phím đặc biệt không thể đưa vào một chuỗi như shift hoặc control, bạn cần tham khảo trang này để xem lớp Key để biết các phím được hỗ trợ. Sử dụng những điều này trong các phương pháp nhấn hoặc nhả sẽ nhấn/nhả phím phù hợp với nó. Ví dụ: nếu tôi muốn nhấn phím Windows, tôi sẽ tìm phím. 'cmd' có mô tả "Một nút lệnh chung. Trên nền tảng PC, phím này tương ứng với phím Super hoặc phím Windows và trên máy Mac, nó tương ứng với phím Command" đó là thứ tôi đang tìm kiếm. Bây giờ cho mã
keyboard.press[Key.cmd]
keyboard.release[Key.cmd]
Phương pháp này cũng cho phép chúng ta nhấn một phím trong khi giữ một phím khác, ví dụ: ctrl+c để sao chép. Để làm điều này, chúng ta sẽ cần nhấn ctrl, nhấn và nhả c rồi nhả ctrl
keyboard.press[Key.ctrl]
keyboard.press['c']
keyboard.release['c']
keyboard.release[Key.ctrl]
Dưới đây là một vài phím đặc biệt phổ biến khác
- Phím Alt trái
- xóa lùi
- Ctrl trái
- Xóa bỏ
- đi vào
- Tẩu thoát
- F1
- F5
- Tạm dừng chơi
- Trang dưới
- Phím mũi tên chỉ lên
- Phần còn lại có thể được tìm thấy trong
Gõ nhiều phím
Một tính năng thú vị được cung cấp bởi lớp là phương thức kiểu. Phương thức này cho phép chúng ta gõ nhiều phím cùng lúc nhưng phải là một chuỗi ký tự. Vì vậy, nếu chúng tôi muốn nhập "Nitratine", chúng tôi sẽ thực hiện
keyboard.type['Nitratine']
Phương pháp này cũng hỗ trợ khoảng trắng nhưng khi nhập, hãy sử dụng ký tự dòng mới [\n] và ký tự tab [\t] cho các tab
keyboard.type['This is one line.\nAnd this is the next line.\n\tThis line has been tabbed in.']
Đặt độ trễ ngẫu nhiên giữa mỗi lần nhấn phím
Để đặt độ trễ ngẫu nhiên giữa mỗi lần nhấn phím, bạn có thể sử dụng
keyboard = Controller[]
9 với một số ngẫu nhiên được truyền cho nó. Đây là một chức năng ví dụ nhỏ tôi đã thực hiệnimport time
import random
from pynput.keyboard import Controller
keyboard = Controller[] # Create the controller
def type_string_with_delay[string]:
for character in string: # Loop over each character in the string
keyboard.type[character] # Type the character
delay = random.uniform[0, 2] # Generate a random number between 0 and 10
time.sleep[delay] # Sleep for the amount of seconds generated
type_string_with_delay["This is my string typed with a delay"]
Các vấn đề và câu hỏi thường gặp
Làm cách nào tôi có thể sử dụng bộ điều khiển bàn phím và chuột cùng một lúc?
Khi bạn nhập các lớp, Trình điều khiển sẽ được đặt thành lớp được nhập cuối cùng. Để biết vấn đề là gì, hãy tự hỏi, bạn đã sử dụng bộ điều khiển nào để đặt chuột và bộ điều khiển nào để đặt bàn phím? . Vì vậy, sau đó bạn nên sử dụng
from pynput.keyboard import Key, Controller as KeyboardController
from pynput.mouse import Button, Controller as MouseController
Bây giờ khi bạn muốn sử dụng bộ điều khiển cho chuột, hãy sử dụng MouseController và KeyboardController cho bàn phím
keyboard = KeyboardController[]
mouse = MouseController[]
ModuleNotFoundError/ImportError. Không có mô-đun nào có tên 'pynput'
Bạn đã cài đặt pynput chưa? . Nếu bạn có nhiều phiên bản Python, hãy đảm bảo rằng bạn đang cài đặt pynput trên cùng phiên bản với phiên bản bạn đang chạy tập lệnh
Tôi gặp lỗi SyntaxError
Lỗi cú pháp là do bạn gây ra và tôi không thể đưa ra cách khắc phục nào ngoài việc bảo bạn đọc lỗi. Họ luôn cho biết lỗi ở đâu trong đầu ra bằng dấu ^. Nói chung, những người gặp sự cố này có cách thụt đầu dòng không chính xác, đặt dấu ngoặc ở sai vị trí hoặc viết sai chính tả. Bạn có thể đọc về SyntaxError trên tài liệu của Python
Các lần nhấn phím hoạt động trong Notepad nhưng không phải trò chơi của tôi
pynput sử dụng hàm Win32API có tên là
keyboard.press['a']
keyboard.release['a']
0. Hàm SendInput sẽ chèn các sự kiện đầu vào vào cùng một hàng đợi như một thiết bị phần cứng nhưng các sự kiện được đánh dấu bằng cờ keyboard.press['a']
keyboard.release['a']
1 có thể được phát hiện bằng móc và sau đó được lọc. Để tránh cờ này, có lẽ bạn phải viết trình điều khiển tùy chỉnh [tham khảo. stackoverflow/Anders]Hầu hết các trò chơi sẽ tìm kiếm những sự kiện này nếu họ muốn giảm hoạt động của 'bot' vì nó dừng các gói như thế này đang được sử dụng.
Trong github. com/Gautam-J/Self-Driving-Car Tôi đã thấy rằng tệp directkeys. py chứa những điều sau đây
keyboard = Controller[]
0Giấy phép cho đoạn mã này có thể được tìm thấy ở đây
Tệp này trình bày cách chúng tôi có thể nhấn các phím bằng mã phím DirectX. Liên kết trong tệp không còn tồn tại nhưng vẫn có thể tìm thấy liên kết này trên máy quay lại. Trang này cung cấp các mã khác cho các khóa có thể được mô phỏng
Thật không may, nó sẽ chỉ hoạt động trên Windows [do việc sử dụng
keyboard.press['a']
keyboard.release['a']
2] nhưng một số người có thể thấy rằng nó giải quyết được vấn đề của họ với cờ keyboard.press['a']
keyboard.release['a']
1