keypad
은 1로 설정되어 있습니다. 예를 들어, 아래의 예에서 나는 KEY_DOWN
을 감지하려고합니다. keypad
이 꺼져 있으면 작동하지 않습니다.). 그러나 문자가 인쇄 가능한지 여부를 감지해야합니다. 내가 [[:print:]]
를 사용할 수 있다고 생각했지만 뭔가 오해했습니다. 예를 들어, 다음 MWE를 실행하고 백 스페이스를 입력하면 263
의 결과를 얻지 만 출력은 not printable
입니다. 나는 length(character) == 1
에 컨디셔닝하여이 문제를 해결하려고 노력할 수 있지만 이것은 피해야하는 해킹처럼 보입니다. 올바른 방법을 배우고 싶습니다. 내가 저주와 당신이 비판에 연민을 취할 필요가 없습니다 (입력 문자가 처리와 초보자,하지만 난 당신이 정말 난 모르는 것을 알고 바로 그래서이 말을ncurses : 키패드로 인쇄 가능한 문자 감지
#!/usr/bin/perl -w
use strict;
use Curses;
initscr();
my $good_win = newwin(1, 2, 3, 1);
keypad($good_win, 1);
my $character = $good_win->getch();
if ($character eq KEY_DOWN) {
print "you did a down arrow";
}
if ($character =~ "[[:print:]]") {
print "you entered: $character\n";
}
else {
print "not printable\n";
}
exit();
주 자세한 설명은 감사하겠습니다).
'getch()'가 정수를 반환하지 않습니까? 그렇다면 항상 인쇄 가능합니다. – mob