Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

윈도우 매니저 스터디: 3. 윈도우 매니저 입력

윈도우 매니저 스터디: 3. 윈도우 매니저 입력

  1. 1. nemoux00@gmail.com http://nemoux00.wordpress.com
  2. 2. 윈도우 매니저 입력 기본 동작 과정 및 포커스 모델 그랩 인터페이스 Default/Move/Resize 데이터 인터페이스 Drag & Drop Selection 가상 키보드/한글 입력 동작 과정 세션 관리
  3. 3. 제공하는 데이터 종류에 따른 분류 이벤트 장치 : 이벤트 전달 포인트 장치 : 모션과 이벤트 전달 비전 장치 : 모션과 이벤트, 그리고 제스처(모양)까지 전달 event device point device mouse (relative) touch (absolute) keyboard myo tuio evdev (mtdev) vision device leapmotion kinect evdev evdev openni … … type A type B : event : motion : event : gesture : motion : event openkinect sensorkinect
  4. 4. 입력 이벤트 수집 (장치  커널  컴포지터) 입력 이벤트 전달 (컴포지터  클라이언트) 윈도우 매니저에 바인딩되어있는 이벤트 우선 처리 포커스(surface)를 소유 중인 클라이언트에게 해당 이벤트 전달 CLIENT WAYLAND/WESTON (screen) SURFACE CLIENT SURFACE wl_keyboard wl_pointer seat0 touch pointer keyboard pointer keyboard
  5. 5. 포커스(focus) 모델 Click to Focus  마우스(혹은 터치)로 클릭 Focus Follows Mouse  마우스 포인터의 현재 위치 이용 Sloppy Focus  패널이 아닌 윈도우만 포커스 그랩(grab) 인터페이스 마우스 버튼 (or 터치) 다운 + 모션 … + 업 이벤트 전달 방식 윈도우 이동/크기 변환/…, 드래그&드롭, … 일반 사용자에게 익숙한 인터페이스 방식 SCREEN WINDOW WINDOW press motion release
  6. 6. 초록색 창으로 키보드 입력을 전달하기 위한 과정 마우스 이동  마우스 포커스 변경 마우스 클릭  윈도우 우선순위 변경, 키보드 포커스 변경 키보드 입력  wl_keyboard 프로토콜의 key 이벤트 전달 SCREEN WINDOW SCREEN WINDOW WINDOW WINDOW
  7. 7. 키보드/마우스/멀티터치 지원 EVDEV/MTDEV 프로토콜 사용 그랩 인터페이스 (default, move, resize, …) 지원 CLIENT WAYLAND/WESTON kernel touch mtdev udev seat touch pointer mouse evdev wl_seat wl_touch wl_pointer grab (default) grab (default) button motion key modifiers default move resize … keyboard keyboard wl_keyboard evdev (+xkb) grab (default) touch motion
  8. 8. 그랩 인터페이스 지원 기본(default) 그랩 인터페이스  포커스 윈도우로 이벤트 전달 하드웨어/커널  이벤트(evdev)  그랩(grab)  클라이언트 키보드 vs 마우스 vs 터치 WAYLAND/WESTON CLIENT MOUSE wl_event_source evdev motion event button event focus motion button cancel default grab leave motion button axis enter
  9. 9. MOVE/RESIZE 그랩 인터페이스 동작 과정 이벤트 시리얼 확인 필수 (시리얼  이벤트 고유 번호  이벤트 검증/장치 구분) 모션 이벤트에서 포커스 변경 X CSD (Client Side Decoration)  XDG 인터페이스 MOVE 리퀘스트 WAYLAND/WESTON CLIENT wl_event_source motion event button event focus motion button cancel move grab view up : restore default grab : change geometry WAYLAND/WESTON CLIENT wl_event_source motion event button event focus motion button cancel default grab button down : check device’s grab serial : change move grab xdg_surface_move(serial) : click frame : serial
  10. 10. 드래그 & 드롭 동작 과정 DATA_DEVICE(공통), DATA_SOURCE(보내는 쪽), DATA_OFFER(받는 쪽) 드래그 그랩 인터페이스 동작 과정 ■다운[보내는 쪽]  드래그 그랩 인터페이스 시작 (MIME 등록) ■모션[받는 쪽]  데이터 사용 여부 검증 (MIME 검증) ■업[받는 쪽]  데이터 수신 실제 데이터 전송 과정 ■받는 쪽에서 파이프 생성 후, 보내는 쪽으로 파일디스크립터 전송 (SCM_RIGHT) ■보내는 쪽에서 해당 파일디스크립터로 데이터 전송 CLIENT (receiver) WAYLAND/WESTON CLIENT (sender) target(mime) accept(mime) offer(mime) start_drag(source) offer(mime) focus motion button : drag grab change drag surface : send(mime, fd) receive(mime, fd) write data to fd : drop : change drag grab : data_source : data_device : data_offer : data_device : data_offer : data_offer : data_source : data_source
  11. 11. 셀렉션 동작 과정 SET_SELECTION  보내는 쪽에서 데이터 등록 키보드 포커스, 윈도우 활성화, …  받는 쪽으로 데이터 알림 실제 데이터 전송 과정은 드래그 & 드롭과 동일 ■앞에서는 드롭에 의해 데이터 전송이 이루어졌지만 셀렉션은 임의의 방식 사용 ■Control-V, … 클립보드  윈도우 서버가 데이터를 미리 전송받아 보관 CLIENT WAYLAND/WESTON CLIENT offer(mime) set_selection(source) offer(mime) send(mime, fd) receive(mime, fd) write data to fd : : data_source : data_device : data_offer : data_offer : data_source keyboard : focus : activate : … clipboard receive(mime, fd) : data_offer
  12. 12. 터미널에서의 셀렉션 사용 방식 기본적인 터미널 동작 방식  PTY 를 이용한 쉘 에뮬레이션 파이프 대신 쉘과의 통신에 사용되는 파일디스크립터 전송 TERMINAL (receiver) /bin/bash WAYLAND/WESTON LINUX KERNEL KEYBOARD EVDEV … wl_keyboard wl_surface stdin stdout FB/OPENGL GPU TERMINAL (sender) write data to fd :
  13. 13. 가상 키보드 동작 과정 키보드 클라이언트  INPUT_PANEL_SURFACE 생성 & 등록 ■화면 상에 뜨는 가상 키보드 서페이스 관리 일반 클라이언트  TEXT_INPUT 활성화 요청 키 입력 전달 전달 과정 ■키보드 클라이언트(input_method_context)  윈도우 서버  일반 클라이언트(text_input) KEYBOARD WAYLAND/WESTON input_method CLIENT input_panel input_method_ context text_input_manager text_input wl_keyboard LINUX KERNEL KEYBOARD EVDEV … grab : key : modifier : cancel wl_pointer wl_touch input_panel_ surface
  14. 14. 한글 입력 동작 과정 일반 클라이언트  TEXT_INPUT 활성화 요청 키보드 클라이언트  INPUT_METHOD 그랩 인터페이스 요청 ■일반 클라이언트가 포커스되어있지만, 이벤트는 키보드 클라이언트로 전달 키 입력 전달 과정 ■키보드 이벤트  키보드 클라이언트  윈도우 서버  일반 클라이언트 KEYBOARD WAYLAND/WESTON input_method CLIENT input_method_ context text_input_manager text_input wl_keyboard LINUX KERNEL KEYBOARD EVDEV … grab : key : modifier : cancel
  15. 15. 텍스트 모드 vs 그래픽 모드 텍스트 기반 가상 터미널 ■커널에서 현재 활성화된 가상 터미널의 입출력 이벤트 관리 그래픽 기반 윈도우 서버 ■윈도우 서버에서 장치 직접 접근/관리 VT 시그널 처리 문제 (activate/deacitvate) ■윈도우 서버가 적절히 VT 시그널을 처리 못할 때는 전체 시스템 다운 session1 session2 session# VT1 VT2 VT# event0 event1 … card0 card1 … session1 session2 session# VT1 VT2 VT# event0 event1 … card0 card1 … : only VT signals
  16. 16. SYSTEMD/LOGIND MultiSeat 지원 가능 (다양한 시나리오 지원 가능) 파일디스크립터 통합 관리 (SCM_RIGHT 소켓 확장 기능 이용) 세션에서 문제 발생시 LOGIND 에서 해결 가능 KMS/DRM 기반 가상 터미널 에뮬레이터 (kmscon) ■커널 기반 가상 터미널 대체 session1 session2 session# event0 event1 … card0 card1 … logind :

    Be the first to comment

    Login to see the comments

  • twkwon

    Dec. 6, 2014
  • bluezery

    Jan. 28, 2015
  • JiHyeonGim

    May. 9, 2015
  • woosokyang

    May. 20, 2016
  • DaekyeongKim4

    Jan. 21, 2019

Views

Total views

1,332

On Slideshare

0

From embeds

0

Number of embeds

5

Actions

Downloads

35

Shares

0

Comments

0

Likes

5

×