문제

저는 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top