터미널의 Shift + 화살표 키에 대한 기록은 무엇입니까?


21

왜 그런지 궁금하네요 Shift+ Arrow Key중 하나의 결과 A, B, C또는 D편지를.

왜 다른 편지가 아닌가? 왜 어떤 편지?


흥미로운 : D 내기? 텍스트 기반 게임과 관련이 있습니다 : D
Rinzwind

2
단지 관찰 : tty Shift + Arrow Keys에서는 아무것도하지 않습니다.
Radu Rădeanu

@Rinzwind : :)))
Radu Rădeanu

1
Unix / Linux Stack Exchange에서이 질문을했습니다. 유용한 답변이 있습니다. 어쩌면 당신은 그들을보고 싶어. unix.stackexchange.com/questions/73669/…
yfklon

답변:


27

같은 터미널 에뮬레이터 gnome-terminal(우분투에서 "터미널")뿐만 아니라 xtermurxvt가 컴퓨터의 유일한 표시했다 구형 단말기의 동작을 재현하기 때문에 "에뮬레이터"이름이 지정됩니다. 이러한 터미널은 텍스트 기반 프로토콜로 컴퓨터와 통신했으며 처음에는 텍스트 만 수신하도록 설계되었습니다. 신속하게 더 많은 제어가 필요했습니다. 라인을 지우는 방법? 색을 사용합니까? 아니면 커서 위치를 변경 하시겠습니까?

VT-100 터미널 출처 : 유닉스 유용성-명령 행 인터페이스

이스케이프 시퀀스는 모든 터미널이 이러한 작업을 수행하도록 설계되었습니다. ASCII 이스케이프 코드로 시작하기 때문에 이스케이프 로 이름이 지정 33됩니다. 이러한 문자를 직접 인쇄 할 수있는 방법이 없으므로 이러한 순서에 적합합니다. 우리가 여전히이 문자를 표시하고 싶을 때이 단어 ^[[가 사용됩니다. 이것이 제가 설명에 사용할 것입니다.

단말기가 수신했을 때 ^[[A"print ^ [[A" "가 아니라"사용자가 위쪽 화살표 키를 눌렀습니다 "라는 의미입니다. 여기서 "A"는 완전히 임의적입니다. DEC VT-52와 그 후속 버전 인 인기있는 VT-100 터미널이 사용했기 때문에 모두가 동의 한 문자 일뿐입니다.

DEC VT-52 유지 보수 Manuel 1976

출처 : DEC VT-52 Maintenance Manual 1976

이것은 오늘날 터미널 에뮬레이터가 작동하는 방식입니다. $TERM변수에 따라 데이터베이스 terminfo는 셸 (bash, sh, zsh ...)에 어떤 코드를 보내야하는지 알려주는 역할을합니다. 그들에게.

지금의 코드 Shift+가 up될 일이 ^[[1;2A: 터미널 에뮬레이터는 해석을 시도 쉘,이 코드를 전송 ^[[1;2하지만 그 이스케이프 시퀀스에 대해 알고하지 않기 때문에 아무것도 표시되지 않습니다. 그러나 A남겨져 표시됩니다.


5
와우, 흥미 롭군 ^[[A프로세스가 터미널에서 실행되는 동안 화살표 키를 클릭하면 모든 것이 의미가 있습니다.
Dan

4
SHIFT-UpArrow를 누르기 직전에 CTRL-v를 눌러 이스케이프 시퀀스를 원시 형식으로 '볼'수 있습니다. 기본값을 변경하지 않은 경우 ESC가 터미널 화면에 ^ [
arielf

@arielf 또한 실행 cat >/dev/null하고 입력 한 다음 완료되면 Ctrl + C (또는 Enter, Ctrl + D)를 누릅니다.
wjandrea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.