Shift-Space 감소

Shift-Space 감소

최신 웹 브라우저 및 텍스트 콘텐츠가 포함된 기타 소프트웨어에서는 Space한 화면 정도 아래로 스크롤합니다. ShiftSpace제외하고 모두 위로 스크롤합니다 less.

ShiftSpace위로 스크롤을 사용하는 방법은 무엇입니까 less? 또는 해당 작업을 수행할 수 있는 다른 호출기(POSIX 호환성이 유일한 요구 사항)가 있습니까?

일부 터미널 에뮬레이터와 일부 터미널 UI 라이브러리(ncurses?)가 인식되지 않는다고 들었습니다 ShiftSpace. 이것이 유효한 문제입니까?

답변1

기술적 한계로 인한 문화충돌을 말씀하신 것 같은데요. Shift+ 는 + Space와 동일한 출력을 생성하므로 Unix Space터미널 모델에서 동일하게 처리됩니다. 둘을 구별하려면 키 업/키 다운 이벤트를 지원하는 프로그래밍 환경이 필요합니다. 이는 키 재매핑을 지원하는 X11 및 터미널 에뮬레이터에서 가능합니다. Shift+를 Space다음으로 다시 매핑 하는 예 PageUp:

# For [u]rxvt, in ~/.Xdefaults:
URxvt.keysym.Shift-space: \033[5~

답변2

Space터미널 에뮬레이터는 및 에 동일한 문자를 보냅니다 Shift+Space. 그렇지 않은 경우 키를 누른 상태에서 텍스트를 입력하는 것이 어색해집니다 Shift(참조@egmont의 답변이 주장을 확장합니다).

Shift+Space그러나 기본적으로 공백을 삽입하게 되는 일련의 문자에 매핑하여 이 문제를 해결할 수 있으며, 예를 들어 less해당 키를 누르면 위로 스크롤하도록 애플리케이션을 구성할 수 있습니다.

예를 들어, 이러한 시퀀스는 다음과 같을 수 있습니다(BS가 ` DEL SPC로 변경되는 문자인 시스템에서는 DEL).BSerase

의 경우 xterm리소스를 추가합니다.

XTerm.VT100.translations: #override \
  Shift <KeyPress> space: string("`") string(0x7f) string(" ") 

그리고 구성 less:

printf '%s\n' '#command' '`\177\40 back-screen' | lesskey -

답변3

less현재는 지원되지 않지만당연히 추가 가능.

프로그램이 사용하는 경우xterm 제어 시퀀스터미널에 작성하여 2로 설정한 modifyOtherKeys다음 활성화된 수정자 키에 대한 추가 정보를 키에 주석으로 추가합니다. 특히 이 키의 경우 xterm에서 활성화되면 +는 가 됩니다. +로 올바르게 해석된 다음 위로 스크롤을 실행해야 합니다.\e[>4;2mxtermSpacemodifyOtherKeysShiftSpace\e[27;2;32~lessShiftSpace

이것은 확실히 xterm에서 작동하지만 모든 터미널 응용 프로그램에서 작동하지는 않습니다. 그러나 켜져 있는 이스케이프 시퀀스를 인식하지 못하는 터미널은 modifyOtherKeys이스케이프 시퀀스를 무시하고 Shift+를 누르면 프로그램에 일반 공백 문자를 계속 보냅니다 Space.

modifyOtherKeysxterm 웹사이트에는 코드 계산 방법을 설명하는 매우 자세한 페이지가 있습니다 .https://invisible-island.net/xterm/modified-keys.html

답변4

터미널 에뮬레이터에서 이 기능은 Shift 키를 누르고 있으면 공백이 포함된 대문자 텍스트 입력을 중단합니다. 예를 들어, "It's A Title"을 입력하려면 "A"와 "T" 사이에서 Shift 키를 놓아야 합니다. 누르고 있으면 커서가 다른 곳으로 이동하여 입력한 내용의 나머지 부분이 잘못 정렬됩니다. 나는 이것이 위로 스크롤 기능으로 얻는 것보다 더 짜증날 것이라고 확신합니다.

텍스트를 입력할 때 일반적인 동작을 유지하고 아래로 스크롤할 때 Space를 위로 스크롤하려면 앱의 상당한 재설계와 협력이 필요합니다(예: 앱에서 Shift+Space가 보내는 내용을 전환할 수 있음). 일어날 것이다.

주요 차이점은 GUI 응용 프로그램은 콘텐츠를 편집하거나 보는 경우 "컨텍스트"를 알고 있는 반면, 터미널 에뮬레이터는 이를 알 수 없다는 것입니다.

관련 정보