BOSIO × BoAYo 개발 문서 전체 소스 ↗
핵심 시스템 · 외부 포인터 입력

추적기와 제스처 연결

관성 추적기·카메라 손동작 인식기 같은 별도 입력 프로세스를 구면 포인터에 연결합니다.

BOSIO의 포인터는 USB 마우스나 PYNQ 버튼에만 묶여 있지 않습니다. 관성 추적기, 카메라 손동작 인식기, 시선 추적기 같은 별도 프로세스도 공개 입력 API로 같은 구면 포인터를 움직이고 클릭할 수 있습니다.

연결 구조

외부 센서·카메라입력 인식 데몬bosio_input_client.pyBosio IPC포커스·클릭·드래그

입력 데몬은 영상을 그리거나 창을 소유하지 않습니다. 장치별 측정값을 구면의 방위각·고도각으로 바꾼 뒤 /tmp/bosio-wm.sock에 전달합니다. Bosio 창 관리자가 그 위치의 최상위 창을 찾고 기존 마우스·BTN2와 같은 규칙으로 이벤트를 보냅니다.

빠른 예제

from bosio_input_client import BosioInputClient

with BosioInputClient("camera-gesture") as pointer:
    pointer.move_absolute(azimuth=25.0, elevation=-18.0)
    pointer.click()

드래그는 버튼을 누른 뒤 포인터를 계속 옮기고 마지막에 놓습니다.

pointer.button(True)
pointer.move_relative(delta_azimuth=4.0, delta_elevation=0.0)
pointer.button(False)

입력 API

함수기능
move_absolute(azimuth, elevation)포인터를 도 단위의 절대 구면 위치로 옮깁니다.
move_relative(delta_azimuth, delta_elevation)현재 위치에서 각도만큼 상대 이동합니다.
button(pressed, button="left")누름·놓기를 전달합니다. 누른 상태로 이동하면 드래그가 됩니다.
click(button="left")한 번의 누름과 놓기를 한 요청으로 전달합니다.
scroll(delta)스크롤 변화량을 전달합니다.
state()포인터 위치, 맞닿은 창, 현재 버튼 상태를 읽습니다.

좌표와 보정

API 좌표는 도 단위입니다. 방위각은 -180°..+180°에서 이어지고 고도각은 -89.5°..+89.5°로 제한됩니다. 카메라 픽셀이나 정규화 좌표를 그대로 보내지 않고, 입력 데몬에서 카메라 시야각·센서 장착 방향·중립점을 적용해 방위각과 고도각으로 바꿉니다.

장치 보정은 입력 데몬이 담당합니다

그래야 Bosio는 장치 종류를 몰라도 되고, 서로 다른 센서가 같은 입력 API를 사용할 수 있습니다.

여러 입력원과 비정상 종료

각 연결은 독립된 입력원으로 구분됩니다. 여러 입력원이 같은 버튼을 눌렀다면 마지막 입력원이 놓을 때 버튼이 해제됩니다. 입력 프로세스가 버튼을 누른 채 종료되거나 소켓 연결이 끊기면 Bosio가 그 입력원에 속한 버튼을 자동으로 놓아 드래그가 계속 남지 않게 합니다.

직접 실행해 보기

python3 bosio_input_demo.py --azimuth 0 --elevation -59
python3 bosio_input_demo.py --azimuth 0 --elevation -59 --drag-degrees 12

Python 이외의 언어에서는 한 줄 JSON IPC의 input_warp, input_move, input_button, input_click, input_scroll, input_status 호출을 사용할 수 있습니다.

원본 문서와 코드

외부 포인터 입력 API 문서와 Python 입력 클라이언트에서 전체 내용을 볼 수 있습니다.

화면 회전·반전 상태에서 이동

위 구면 API의 방위각·고도각 의미는 그대로입니다. 화면 기준 이동이 필요하면 최신 BosioWMClient의 input_display_move(dx, dy)를 사용하세요. 각도 단위로 +x는 화면 오른쪽, +y는 아래이며 실제 적용된 출력 방향을 역변환합니다. evdev 마우스도 이 보정을 사용합니다. 회전·반전 설정과 함께 사용할 수 있습니다.

BOSIO × BoAYo · 문서 저장소 · 구현 원본은 각 소스 저장소에서 확인하세요.