다양한 (에뮬레이션된) 터미널에서 커서 모양을 변경하고 싶습니다.
내가 원하는 모양은 5입니다(렌더링되지 않으면 죄송합니다). 이것은 오른쪽으로 열리는 삼면 상자입니다. 이렇게 하면 삽입할 위치를 볼 수 있고 커서가 "위에" 있는 문자도 볼 수 있습니다. U+2F15에서 유니코드로 이 문자를 찾았습니다.
저는 확실히 Linux의 커널 가상 터미널(++로 얻을 수 있는 것)과 GUI 터미널 에뮬레이터(예: XTerm 및 RXVT)에서 이 작업을 수행할 수 있기를 바랍니다 Control. Alt가능하다면 PuTTY나 KiTTY 같은 네트워크 터미널에서도 이 작업을 수행하고 싶습니다. 정확한 문자를 얻을 수 없다면 최소한 세 줄은 필요합니다.FN모양.
나는 이것이 터미널 에뮬레이터의 "ANSI" 이스케이프 코드 또는 (아마도) 설정과 관련이 있다는 것을 알고 있습니다(비록 이것이 Linux 내장 터미널 에뮬레이터에서는 작동하지 않는다는 점을 고려하면 권장되지 않습니다). 특정 쉘 사용에 의존하지 않는 답변을 제공하십시오. 커널 코드를 변경하지 않고도 이것이 가능합니까?
답변1
가상 및 실제 터미널에서 사용할 수 있는 커서 모양은 제한되어 있습니다. 일반적으로 말하면 기존 디스플레이 하드웨어와 일치하는 설정 모양만 활성화하며 커서가 깜박일 때 깜박임 기간과 시작 및 끝 스캔 라인만 지정할 수 있으며 때로는 시작+끝 조합의 매우 제한된 하위 집합(예: 밑줄)만 허용하는 경우가 많습니다. , 윗줄, 절반 높이, 블록).
두 가지 주요 제어 시퀀스는 DECSCUSR과 LINUXSCUSR입니다. DECSCUSR은 DEC가 이후 터미널 시리즈에서 지원하는 제어 시퀀스의 이름입니다. 다른 실제 터미널 제조업체와 마찬가지로 DEC는 설명서에서 "DEC"로 시작하는 공급업체 개인 제어 시퀀스 이름을 제공합니다. (Doco에서 Tektronix는 비교를 위해 공급업체 개인 제어 시퀀스의 이름을 지정하기 위해 "TEK" 접두사를 사용합니다.) Linux doco는 평소와 같이 매우 열악하며 명명 내용이 없습니다. 따라서 "LINUXCUSR"은 제가 만든 신조어이며 "LINUX"라는 접두어가 붙습니다.
DECSCUSR이나 LINUXSCUSR은 모두 표준화되어 있지 않습니다. 서로 다르지만 같은 시기에 발명되었기 때문에(1990년대 DEC VT 5xx에만 등장) 일반적인 DEC 선행 기술은 없습니다. ☺ Egmont Koblinger는 윙크와 모양이 혼합되어 있기 때문에 두 모델 모두 인상적이라고 다른 곳에서 언급했습니다. 사용자 지정 모양을 활성화하기 위해 DECSCUSR 0의 의미를 변경하는 방법에 대한 논의도 있습니다. 그리고 Microsoft Terminal은 DECSCUSR 모델과 Win32에서 사용되는 모델 간의 불일치를 강조합니다.편안이 메커니즘은 최대 30년(또는 OS/2 1.x의 VIO 하위 시스템과 PC/AT 비디오 펌웨어의 이전 버전을 고려하면 40년)까지 임의의 시작 라인을 허용합니다.
그 결과 보편적인 제어 시퀀스가 없으며, 두 시퀀스를 모두 지원하는 터미널 에뮬레이터가 거의 없기 때문에 세계는 현재 DECSCUSR과 LINUXSCUSR 진영으로 나뉘어 있습니다. 게다가 두 가지 접근 방식 모두 필요한 유연성을 얻을 수 없습니다. 시작+끝 스캔라인 모델의 유일한 유비쿼터스 편차는 수직 막대이며 특정 GUI 터미널 에뮬레이터(예: XTerm)를 통해서만 사용할 수 있습니다.하나다른 모양은 DECSCUSR 5 및 DECSCUSR 6입니다.
예, FreeBSD 커널, NetBSD 커널, OpenBSD 커널, Linux 내장 터미널 에뮬레이터는 물론 다양한 애플리케이션 모드 터미널 에뮬레이터(프레임 버퍼 및 X11 GUI)의 코드를 수정하여 더 많은 커서 모양을 구현할 수 있습니다. 그러나 이를 보편적으로 만드는 것은 꽤 어렵다.
나는 이미 이것을 했다내 거터미널 에뮬레이터. DECSCUSR 7/8은 개요 상자입니다. DECSCUSR 9/10은 별입니다. DECSCUSR 11/12는 밑줄 + 윗줄입니다. DECSCUSR 13/14는 거꾸로 된 "L" 모양을 가지고 있습니다. 1970년대의 오래된 문헌을 읽은 것을 바탕으로 나는 대괄호를 추가하는 것과 윗줄을 긋는 두 가지 방향을 모두 고려했습니다. 그러나 DECSCUSR은 여러분이 찾고 있는 실제 유니코드 문자의 사양에 쉽게 맞지 않습니다. LINUXSCUSR은 이 아이디어에 맞지 않습니다별말씀을요, 그리고.
추가 읽기
- 조나단 데보인 폴라드(2019).
console-terminal-emulator
. 스낵 가이드. 소프트웨어. - 조나단 데보인 폴라드(2019).
console-control-sequence
. 스낵 가이드. 소프트웨어. CONSOLE_CURSOR_INFO
구조. 마이크로소프트.VIOCURSORINFO
. 전기 스파크/2.- 케이 와이츠먼(1974). 미니컴퓨터 시스템: 구조, 구현 및 응용. 프렌티스 홀. ISBN 9780135842270.
- "Linux 콘솔의 커서 모양".리눅스 게시판. 137호. 2007년 4월. ISSN 1934-371X.
- 얀 털라만(2019-06-25). vim/기타를 돕기 위해 커서를 사용자 기본값으로 복원하려면 (VT 확장) DECSCUSR "0" 지원을 고려하십시오.. Microsoft 터미널 문제 #1604.
- VT510 비디오 터미널 프로그래머 정보. EK-VT510-RM. 1993년 11월.
- VT520/VT525 비디오 터미널 프로그래머 정보. EK-VT520-RM. 1994년 7월.