에 NUMLOCK/CAPSLOCK/SCRLOCK 키 누르기 /의 keyup을 감지, 나는 "콜백"기능 때 등록처럼 NUMLOCK
의 키를 (또는 의 keyup)를 감지 할 눌렀다.내가 개발하고 있어요 게임에서 파이썬
주어진 시간에 상태을 읽는 것을 요구하지 않으며 I can do that already 값을 변경하고 싶지 않습니다. Keypress 이 발생하면이 발생하므로 10 분의 1 초마다 상태를 폴링 할 필요가 없습니다.
게임은 curses
을 사용하며 현재 차단은 getch()
입니다. Curses는 NUMLOCK
keypresses를 감지하지 못했고 (led- related 키보드는 어떤 키도 "생성하지"않을 것입니다), 결코 그렇게 할 수있는 방법이 없는지 궁금합니다. 주요 curses 루프를 non-blocking getch()
을 호출하고 keyboard_leds()
함수를 호출하여 현재 상태를 읽습니다.
예를 들어 : 내가 인수로 자사의 stdscr
화면을 전달 저주를 초기화 한 후 새 스레드를 시작할 수 있고, 해당 스레드는 NUMLOCK
키를 누를 때의 이벤트에 대한 콜백 함수 (예를 들어, special_keypress()
)를 등록 등록 할 것입니다. 따라서이 함수는 필요한 경우에만 keyboard_leds()
을 호출 한 다음 stdscr
을 업데이트합니다.
이것이 가능한지 확신 할 수 없으며 일부 아키텍처 종속 항목 (커널/X11 등)으로 이동해야 할 수도 있습니다. 따라서 크로스 플랫폼 솔루션 인 경우 가능하지 않다면 Linux 만 사용하는 것이 좋습니다.
가능성있는 속? http://stackoverflow.com/questions/10054681/capslock-numlock-insert-how-to-show-keyboard-status-on-screen-when-keyboard-h –
@MarcB : 관련성이 * 있습니다. * 중복과는 거리가 멀다. 그는 앱이 자신의 DE에 상태를 표시하기 위해 데몬으로 실행되기를 원합니다. 그것은 프로그래밍 문제조차되지 않습니다! – MestreLion