2012-09-03 3 views
2

사용자에게 묻지 않고 콘솔 응용 프로그램에서 키 누르기를 감지해야합니다. 기본적으로, 내 애플 리케이션은 일반적으로 특별한 입력 장치를 듣는 데몬이지만, 대화 형 모드에서 키보드를 사용하여 dev 상자에서 시뮬레이션해야합니다. 어떻게해야합니까? - 리눅스 시스템에.콘솔 응용 프로그램에서 키 누르기를 감지합니까?

+0

알 수 있습니다 - 리눅스, 키보드 입력, 저주 –

+0

가능한 복제본 [C의 GNU/Linux에서 키 캡처] (http://stackoverflow.com/questions/1485116/capturing-keystrokes-in-gnu-linux) -in-c) –

답변

0

당신은 대답의 소스 확인 (일반적으로 /dev/input/event0) 입력 이벤트

또는 직접 읽을하는 방법에 대해 설명이 answer 확인 :

이 크레딧이 나에게 가지 마세요를이 코드에서 가져옵니다 Ventriloctrl은 키 입력을 해킹합니다. 입력을 기다리는 동안 차단할 수없는 경우 http://public.callutheran.edu/~abarker/ventriloctrl-0.4.tar.gz

2

, 당신은 예를 들어, 사용할 수 있습니다 select을 사용하여 STDIN_FILENO 파일 디스크립터가 읽을 준비가되었는지 확인한 다음 정상 입력 기능 (scanf, fgetsstd::getline 등)을 사용할 수 있습니다.

+0

실제로 작동합니까? 내 테스트 (select man 페이지의 예제를 사용)에서 select는 CR이 보일 때까지 stdin이 읽을 준비가되었음을보고하지 않습니다. –

+0

@JoeStrout ['tcsetattr'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/tcsetattr.html)을 사용하여 터미널 플래그도 업데이트해야합니다. –

+0

예, 적어도 내 테스트 시스템의 경우 인 것 같습니다 (하나의 OS X, 하나의 우분투). –

관련 문제