Ruby와 함께 Stdin에서 비 캐논 모드 설정
문제
저는 Ruby와 함께 간단한 터미널 기반 게임을 만들고 있으며 현재 터미널에서 입력을 읽는 방법을 생각해 내려고 노력하고 있습니다.
지금까지 나는 사용하고 있습니다 gets
, 그러나 새로운 라인을 필요로하지 않고 게임을 즉시 반응하고 싶습니다 (따라서 키를 누른 다음 입력 할 필요가 없습니다).
터미널을 비정규 모드에 넣어야한다는 것을 알았으며 전화를 통해 그렇게 할 수 있다고 가정합니다. $stdin.ioctl
. 문제는, 내가 이것에 전달 해야하는 주장이나 깃발이 확실하지 않으며, 문서와 검색은 단지 기본 C 기능에 대한 정보로 이어집니다.
누구든지 내가 무엇을 불러야하는지 말해 줄 수 있습니까? $stdin.ioctl
와 함께? OSX Leopard에서 Terminal.app/tcsh를 사용하고 있습니다.
편집 : 이것은 Markusq 덕분에 내가 사용한 것입니다.
%x{stty -icanon -echo}
key = STDIN.read(1)
해결책
당신의 문제는 루비 외부입니다.
가장 쉬운 답변 : io를 %x {stty -raw echo} 및 %x {stty -raw echo}로 래핑하여 Stty로 모드를 변경하십시오.
종료 할 때 모드가 다시 설정되도록 출구 처리기를하고 싶을 것입니다.
- Markusq
제휴하지 않습니다 StackOverflow