의사 터미널이 /dev/pts/{number}
X-session에서 키 입력을 추론하는 이유는 무엇입니까 /dev/input/by-id/{keyboard-device-name}
?
나는 의사 터미널이 X 세션 위에서 실행된다는 것을 알고 있습니다.
의사 터미널이 UI 터미널 보기에 표시될 데이터 읽기/쓰기를 위한 별도의 파일 위치를 가질 정도로 특별한 이유는 무엇입니까?
커널은 의사 터미널과 다른 응용 프로그램의 차이점을 어떻게 인식하여 두 개의 다른 파일 위치에 기록합니까?
답변1
의사 터미널이 UI 터미널 보기에 표시될 데이터 읽기/쓰기를 위한 별도의 파일 위치를 가질 정도로 특별한 이유는 무엇입니까?
데스크탑에는 사용자 입력에 대해 근본적으로 다른 두 가지 보기가 있기 때문입니다.
디스플레이 서버(X11 또는 Wayland 컴포지터) 처리모두하드웨어로부터의 입력은 통과합니다 /dev/input/...
( libinput
적어도 사용되는 경우). X11 및 Wayland 클라이언트는 해당 프로토콜을 통해 해당 이벤트를 수신합니다.
X11 및 Wayland 클라이언트는 아니지만 입력을 받아야 하는 프로그램은 어떤 형태의 가장을 사용하여 실행됩니다. 터미널 에뮬레이터는 이름에서 알 수 있듯이 에뮬레이트됩니다.터미널, 이와 관련하여 도움을 받았습니다.의사 터미널장비가 포함됩니다 /dev/pts/...
.
따라서 터미널 에뮬레이터에서 프로그램을 실행할 때 키 입력은 다음 경로를 따릅니다.
키보드 → 커널 → 디스플레이 서버 → 터미널 에뮬레이터(고급 이벤트로) → 의사 터미널 → 프로그램
이는 최종 프로그램에 입력(및 출력)이 터미널에 연결된 상태로 실행되고 있다는 착각을 줍니다.
커널은 의사 터미널과 다른 응용 프로그램의 차이점을 어떻게 인식하여 두 개의 다른 파일 위치에 기록합니까?
애플리케이션과 애플리케이션이 입력을 받는 위치에 대해 알지 못합니다. 이는 키보드를 인식하고 입력 장치를 통해 이벤트를 제공합니다. 또한 의사 터미널을 인식하고 이를 통해 제어 프로그램이 이벤트를 전송할 수 있도록 합니다.