Shell Script에서 PgUp, PgDn Key를 어떻게 인식할 수 있을까요?
글쓴이: hyper9 / 작성시간: 화, 2008/10/28 - 5:04오전
Shell Script에서 PgUp, PgDn Key를 처리해야 할 일이 생겼습니다.
그런데, 이 key를 어떻게 받아들여서 어떻게 처리해야 할지 감이 오질
않네요.
예를 들면, 어떤 Txt file을 보여주면서 PgDn key를 누르면 아래로
내려가서 더 보여주고, PgUp key를 누르면, 이전 page를 보여주는
내용은 단순한 걸 만들어 보려고 하는데요,
다른 건 다 됐는데, PgUp, PgDn key인식 및 처리를 못하고 있습니다.
조언을 좀 부탁드리고 싶은데요 ..
감사합니다.
Forums:
터미널이란게 그리
터미널이란게 그리 간단치 않습니다.
page-down 을 했을 때 몇줄이나 내려가실건가요 ?
한 줄에 몇 글자 찍을 건가요 ?
PgUp/PgDn 과 바인딩 된 키코드 시퀀스는
$TERM 환경변수를 보고 현재 터미널의 종류를 알아낸 후,
/etc/termcap 에서 적절한 항목을 찾고,
그 중에서 kP 와 kN 이 뭘로 지정되어 있는지 다시 찾아야 합니다.
kP 와 kN 은 각각 page-next(PgDn), page-previous(PgUp) 을 가리킵니다.
(키코드 중 \E 라고 되어있는 것은 그 자리에 0x27 코드가 들어간다는 의미입니다)
stty 명령으로 현재 터미널의 echo 를 꺼버리고,
read -n 1 로 한글자씩 입력(stdin)에서 읽으며 원하는 시퀀스대로 키코드가 들어오면
page up/down 처리를 해주면 됩니다.
스크립트 종료 시엔 다시 터미널의 echo 를 살려줘야 합니다.
혹 /usr/bin/less 가 너무 밋밋해서 다른 뭔가를 찾으시는 거라면 /usr/bin/dialog 를 사용해보시고요.
OTL
답변 감사드립니다..
예를 들어 일단 User가 PgUp Key를 눌렀을때, "PgUp Key is pressed"
또 PgDn Key를 눌렀을 때, "PgDn Key is pressed" 라는 문장을
display하는 정도면 충분하다고 생각을 했습니다.
120줄쯤 되는 Txt문서를 display하면서 24줄 단위로 PgUp, PgDn으로
문서를 navigate할 수 있도록 간단히 만들려다 보니까..다른 건 다 되었는데요
PgUp, PgDn key를 인식하는 문제를 해결하지 못해서 질문을 드린 것이었고요.
PgUp key대신에 "U" key를 PgDn key대신에 "D" key를 써서
script자체는 다 만들어 놓은 상태 입니다.
하지만, "U", "D" 보다는 PgUp, PgDn key를 User가 사용하도록 하는 것이
더 자연스러울 것 같아서요 .
입력되는 걸 찾아보니까요.
PgUp인 경우는 0x1b,0x5b,0x35,0x7e
PgDn인 경우는 0x1b,0x5b,0x36,0x7e
순서로 Key입력이 들어오는데요 ~
read -n 1로 한 글자를 읽고 그 글자가 0x1b 인가를
검사해서 나중에 나오는 3글자를 더 읽을지, 아니면 일반 문자라면
거기서 읽는것을 마칠지를 결정하는 짧은 code를 만들어
보려고 했는데요.
read -n 1에서 읽어들인 문자를 다른 변수에 저장을 한다거나
또는 화면에 display하려면 어떻게 하는 지를 몰라서 헤매고 있습니다.
조언 주시면 감사하겠습니다 .~ ^^
무슨 이유에서 text
무슨 이유에서 text view를 직접 shell script로 작성하는지는 모르겠지만, more(1)나 less(1)를 직접 쓰는 것이 좋을 것 같군요.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
별다른 이유는 없구요..
회사에서 시켜서 합니다.. ㅜㅜ
댓글 달기