Thư viện keyboard trong Python là công cụ mạnh mẽ cho phép bắt và mô phỏng các sự kiện bàn phím toàn cục trên Windows và Linux. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng thư viện để tạo tổ hợp phím nóng tùy chỉnh và quản lý trạng thái, giúp bạn xây dựng các ứng dụng tương tác bàn phím hiệu quả.
1. Cài đặt và cấu hình cơ bản
Để bắt đầu, cài đặt thư viện qua pip:
pip install keyboard
Hoặc cài từ mã nguồn:
git clone https://gitcode.com/gh_mirrors/ke/keyboard
cd keyboard
python setup.py install
2. Tùy chỉnh tổ hợp phím nóng
2.1 Đăng ký phím nóng cơ bản
Hàm add_hotkey cho phép đăng ký một tổ hợp phím với callback:
import keyboard
def on_hotkey():
print("Đã kích hoạt!")
keyboard.add_hotkey('ctrl+shift+a', on_hotkey)
keyboard.wait('esc') # Thoát khi nhấn ESC
2.2 Cho phép người dùng tự định nghĩa phím nóng
Sử dụng read_hotkey để người dùng nhập tổ hợp phím:
import keyboard
print('Nhấn và thả tổ hợp phím mong muốn: ')
shortcut = keyboard.read_hotkey()
print('Phím nóng đã chọn:', shortcut)
def action():
print("Kích hoạt!")
keyboard.add_hotkey(shortcut, action)
print("Nhấn ESC để dừng.")
keyboard.wait('esc')
2.3 Quản lý trạng thái nhấn/thả
Tham số trigger_on_release cho phép phân biệt khi nhấn và khi thả phím:
import keyboard
def mute():
# logic tắt tiếng
pass
def unmute():
# logic bật tiếng
pass
keyboard.add_hotkey('win', unmute) # Khi nhấn
keyboard.add_hotkey('win', mute, trigger_on_release=True) # Khi thả
keyboard.wait()
3. Quản lý trạng thái: Ghi và phát lại thao tác bàn phím
3.1 Ghi lại thao tác
Hàm record lưu các sự kiện bàn phím cho đến khi nhấn một phím chỉ định:
import keyboard
events = keyboard.record(until='esc')
3.2 Phát lại thao tác đã ghi
Dùng play để phát lại danh sách sự kiện:
import keyboard
segment = []
print("Đang ghi... Nhấn F1 để dừng.")
keyboard.wait('F1')
keyboard.play(segment)
3.3 Chờ phím
Hàm wait dùng để tạm dừng chương trình cho đến khi phím được nhấn:
# Chờ ESC
keyboard.wait('esc')
# Chờ bất kỳ phím nào
keyboard.wait()
4. Ví dụ thực tế và thực hành tốt
4.1 Giám sát phím nóng toàn cục
import keyboard
def handle_global():
print("Phím nóng toàn cục đã được kích hoạt!")
keyboard.add_hotkey('ctrl+alt+del', handle_global, suppress=True)
print("Giám sát phím nóng toàn cục đã chạy. Nhấn ESC để thoát.")
keyboard.wait('esc')
4.2 Kết hợp tổ hợp phím và phím đơn
import keyboard
def on_complex():
print("Tổ hợp phức tạp đã được kích hoạt!")
keyboard.add_hotkey('ctrl+shift+k, space', on_complex)
keyboard.wait('esc')
5. Xử lý sự cố thường gặp
5.1 Vấn đề quyền
Trên Linux, cần quyền root để bắt sự kiện toàn cục:
sudo python script.py
5.2 Xung đột phím nóng
Dùng tham số suppress=True để chặn sự kiện truyền tiếp:
keyboard.add_hotkey('alt+tab', my_callback, suppress=True)
5.3 Tương thích đa nền tảng
Xử lý khác biệt giữa Windows và Linux:
import sys
if sys.platform.startswith('win'):
# Mã cho Windows
elif sys.platform.startswith('linux'):
# Mã cho Linux
6. Kết luận
Thư viện keyboard cung cấp khả năng xử lý sự kiện bàn phím mạnh mẽ và linh hoạt cho Python. Với các kỹ thuật tùy chỉnh tổ hợp phím nóng và quản lý trạng thái được trình bày, bạn có thể xây dựng nhiều ứng dụng tương tác bàn phím hiệu quả, từ công cụ tự động hóa đơn giản đến hệ thống ghi macro phức tạp. Hãy tham khảo thêm các ví dụ trong thư mục examples/ của dự án để khám phá thêm.