frompynputimportkeyboard# 단축키를 눌렀을 때 실행될 함수defon_press(key):try:ifkey==keyboard.Key.ctrl_l:# 왼쪽 Ctrl 키를 눌렀을 때print("Ctrl 키가 눌렸습니다.")elifkey==keyboard.Key.alt_l:# 왼쪽 Alt 키를 눌렀을 때print("Alt 키가 눌렸습니다.")elifkey==keyboard.KeyCode.from_char('a'):# 'a' 키를 눌렀을 때print("'a' 키가 눌렸습니다.")exceptAttributeError:pass# 단축키를 놓았을 때 실행될 함수defon_release(key):ifkey==keyboard.Key.ctrl_l:# 왼쪽 Ctrl 키를 놓았을 때print("Ctrl 키가 놓아졌습니다.")elifkey==keyboard.Key.alt_l:# 왼쪽 Alt 키를 놓았을 때print("Alt 키가 놓아졌습니다.")elifkey==keyboard.KeyCode.from_char('a'):# 'a' 키를 놓았을 때print("'a' 키가 놓아졌습니다.")
on_press 함수는 사용자가 특정 키를 눌렀을 때 실행되며, on_release 함수는 사용자가 특정 키를 놓았을 때 실행됩니다.
keyboard.Key.ctrl_l : 왼쪽 Ctrl 키를 나타내는 상수입니다.
keyboard.Key.alt_l : 왼쪽 Alt 키를 나타내는 상수입니다.
keyboard.KeyCode.from_char(‘a’) : ‘a’ 키를 나타내는 상수입니다.
frompynputimportkeyboard# 단축키를 눌렀을 때 실행될 함수defon_press(key):try:ifkey==keyboard.Key.ctrl_l:# 왼쪽 Ctrl 키를 눌렀을 때print("Ctrl 키가 눌렸습니다.")elifkey==keyboard.Key.alt_l:# 왼쪽 Alt 키를 눌렀을 때print("Alt 키가 눌렸습니다.")elifkey==keyboard.KeyCode.from_char('a'):# 'a' 키를 눌렀을 때print("'a' 키가 눌렸습니다.")exceptAttributeError:pass# 단축키를 놓았을 때 실행될 함수defon_release(key):ifkey==keyboard.Key.ctrl_l:# 왼쪽 Ctrl 키를 놓았을 때print("Ctrl 키가 놓아졌습니다.")elifkey==keyboard.Key.alt_l:# 왼쪽 Alt 키를 놓았을 때print("Alt 키가 놓아졌습니다.")elifkey==keyboard.KeyCode.from_char('a'):# 'a' 키를 놓았을 때print("'a' 키가 놓아졌습니다.")# 키보드 리스너 생성withkeyboard.Listener(on_press=on_press,on_release=on_release)aslistener:listener.join()
다양한 키보드 이벤트 리스너
pynput에서 제공하는 다양한 키보드 이벤트 리스너에 대한 설명과 예제입니다.
keyboard.Listener
키보드 이벤트를 감지하는 가장 기본적인 리스너입니다. on_press와 on_release 두 가지 콜백 함수를 설정하여 사용자가 키를 누를 때와 놓을 때 원하는 동작을 실행할 수 있습니다.
macOS에서 특정 이벤트를 처리하기 위한 메서드로, macOS의 특정 기능과 관련된 이벤트를 처리할 수 있습니다.
1
2
3
4
5
6
7
8
frompynputimportkeyboarddefon_event(event):ifevent.key==keyboard.Key.ctrl_r:print("Right Control key pressed on macOS")withkeyboard.Listener.for_mac(on_event=on_event)aslistener:listener.join()
결론
pynput 라이브러리를 사용하면 파이썬으로 키보드 이벤트를 쉽게 감지하고 처리할 수 있습니다. 단축키를 감지하여 사용자 지정 동작을 수행하는 예제를 통해 구체적으로 살펴보았습니다. 이를 응용하여 다양한 키보드 이벤트를 감지하고 활용할 수 있으며, 자동화 및 사용자 경험 개선과 같은 다양한 목적을 달성할 수 있습니다.