입력
vrOS의 모든 상호작용 요소는 포커스를 받을 수 있고, 레이블이 붙어 있으며, 정해진 이동 순서 안에 있습니다. 호버로만 닿는 것은 없습니다. 시선만으로 실행되는 것도 없습니다. 되돌릴 수 없는 동작은 언제나 두 단계이며, 응시 한 번으로 끝나지 않고, 포커스의 기본값도 아닙니다.
| 방식 | 가리키기 | 확정 | 스크롤 | 텍스트 |
|---|---|---|---|---|
| 레이저와 컨트롤러 | 광선 | 트리거 | 스틱 또는 드래그 | VR 키보드 |
| 시선과 확정 (설계됨, 빌드에는 없음) | 시선 | 바인딩된 버튼, 또는 선택하면 응시 | 스틱 | VR 키보드 |
| 게임패드 전용 | 포커스 이동(D-패드 또는 스틱) | A | 스틱 | D-패드로 키를 옮기고 A로 누름 |
| 데스크톱 | 마우스 | 클릭 | 휠 | 실제 키보드 |
히트 영역의 크기는 픽셀이 아니라 각도로 정합니다. 레이저에는 최소 2.0도, 시선 가리키기가 켜져 있으면 3.0도이고, 시선 대상 사이에는 최소 0.75도를 둡니다. 사용 가능한 방식의 조합이 바뀌면 화면은 더 적고 더 큰 컨트롤로 재배치됩니다. UI 배율 1.25x 이상에서도 같은 일이 일어납니다.
레이저와 컨트롤러
섹션 제목: “레이저와 컨트롤러”광선으로 가리키고, 트리거를 당겨 클릭하세요. 스크롤은 스틱으로 합니다.
클릭과 드래그는 어떤 이벤트도 OS에 닿기 전에 구분됩니다. 트리거를 누르면 작은 각도 데드존이 준비되고, 그 안에서 떼면 누른 지점에서 깔끔한 클릭이 되며, 그 범위를 벗어나면 누른 지점에서부터 드래그가 시작되어 움직임을 하나도 잃지 않습니다. 데드존(0.30도)과 플릭 허용치(0.80도)는 설정 → 접근성에 있습니다.
바인딩은 vrOS가 만들어 낸 제스처가 아니라 SteamVR 안에 있습니다. 기본값에서는 왼쪽 컨트롤러의 페이스 버튼을 두 번 누르면 키보드가 표시되고 숨겨지며, 오른쪽 컨트롤러에서 같은 동작을 하면 대시가 표시되고 숨겨집니다. 그것이 어느 물리 버튼인지는 컨트롤러 프로필에 따라 다릅니다. 설정의 컨트롤 화면은 SteamVR가 보고하는 바인딩 단어를 표시하고, SteamVR의 바인딩 편집기를 열 수 있습니다. VR 런타임이 실행 중이지 않은 데스크톱에서는 그 버튼이 숨겨지지 않고 흐리게 표시됩니다.
시선과 확정
섹션 제목: “시선과 확정”시선은 처음부터 설계에 들어가 있습니다. 레이아웃은 3.0도 하한을 지키고, 포커스 획득에는 히스테리시스를 써서 흔들림이 포커스를 깜박이게 하지 못하며, 시선 아래에서는 아무것도 움직이거나 애니메이션하지 않습니다 — 한곳을 응시하는 눈이 대상을 쫓아다녀야 할 일은 없어야 합니다. 응시는 들어올 때 선택 사항이고, 800 ms이며, 되돌릴 수 없는 동작에서는 1600 ms입니다.
게임패드 전용
섹션 제목: “게임패드 전용”이동은 위에서 아래로 진행됩니다. 좌우는 값을 5% 단위로 조정합니다. 화살표는 목록 끝에서 멈추고, Tab은 처음으로 돌아갑니다. 클릭과 포커스는 싸우지 않습니다. 클릭은 눈에 보이는 링을 빼앗지 않고 동작하지만, 이동 커서를 클릭한 곳으로 옮깁니다. 그래서 다음 D-패드 입력은 링이 마지막에 있던 자리로 돌려보내는 대신 옆의 컨트롤에 링을 씌웁니다.
데스크톱 마우스와 키보드
섹션 제목: “데스크톱 마우스와 키보드”데스크톱 창은 같은 화면들을 데스크톱 밀도로 실행합니다 — 52 px 행, 28 px 대상, 1 px 테두리 — 그리고 호버가 툴팁과 행 동작으로 돌아오되, 언제나 그 옆에 오른쪽 클릭이나 키보드로 하는 같은 동작이 있습니다. 데스크톱 앱을 참고하세요.
입력을 누가 쥐고 있는가
섹션 제목: “입력을 누가 쥐고 있는가”vrOS는 화면 키보드나 원격 데스크톱 클라이언트가 하는 것처럼, 컨트롤러 클릭과 VR 키 입력을 사용자 자신의 포커스된 창으로 전달합니다. 언제 그럴 수 있는지는 명시된 규칙 하나가 정합니다.
물리 마우스나 키보드에 손을 대는 순간 vrOS는 입력을 양보합니다. 커서 다툼도, 포커스 가로채기도, 엉뚱하게 주입되는 이벤트도 없습니다. 시작할 때부터 그 상태입니다. VR에서 무언가를 의도적으로 클릭하기 전까지 vrOS는 아무것도 주입하지 않습니다.
무엇이 입력을 넘겨주는지
섹션 제목: “무엇이 입력을 넘겨주는지”- 진짜 물리 마우스 이벤트라면 무엇이든 — 버튼, 휠, 1 픽셀의 움직임 — 바로 그 이벤트에서 입력을 데스크톱으로 넘깁니다.
- 글자를 입력하는 키는 입력을 넘겨줍니다. 보조 키 단독, F 키, 화살표, Escape는 넘기지 않습니다. 그래서 VR에 바인딩된 매크로 키가 커서를 책상으로 끌고 오지 않습니다.
- 실제 입력과 주입된 입력은 구분됩니다. Windows에서는 문서화된 주입 플래그와, vrOS가 내보내는 모든 이벤트에 붙이는 자체 표식으로 구분합니다. Linux에서는 장치 신원으로 구분합니다. vrOS 자신의 가상 장치가 아닌 것은 전부 사용자입니다.
- 드래그 도중의 전환도 깔끔하게 끝납니다. vrOS가 누르고 있던 버튼은 제대로 떼어지고, 그 떼기가 vrOS가 보내는 마지막 이벤트입니다. 양보한 뒤에 주입되는 이벤트는 0개입니다.
무엇이 입력을 되찾는지
섹션 제목: “무엇이 입력을 되찾는지”캡처 패널에서 트리거를 명시적으로 당기는 것뿐입니다. 컨트롤러의 움직임으로는 되찾지 못하고, 호버로도 되찾지 못합니다. 당기는 손은 추적되고 있고 사용 중이어야 하므로, 책상에 놓아 둔 컨트롤러가 트리거에 부딪혀 커서를 낚아채는 일은 없습니다.
먼저 두 채널이 모두 조용해져야 하고, 얼마나 오래 조용해야 하는지는 방금 무엇을 했는지에 달려 있습니다.
| 무엇을 했는지 | 되찾기가 막히는 시간 |
|---|---|
| 마우스를 스쳤을 때(몇 px, 클릭 없음) | 400 ms |
| 마우스를 썼을 때(300 ms 안에 약 40 px 이동, 또는 클릭이나 휠) | 1 s |
| 입력했을 때 | 3.5 s |
입력에 가장 긴 시간이 붙는 이유는, 읽고 생각하느라 1초에서 3초쯤 멈추는 일이 흔하고, 문장 도중에 커서를 넘겨 버리는 쪽이 기다리는 쪽보다 나쁘기 때문입니다.
책상이 입력을 쥐고 있는 동안에도 되는 것
섹션 제목: “책상이 입력을 쥐고 있는 동안에도 되는 것”레이저는 vrOS 자신의 화면에서 계속 동작합니다. 손을 키보드에 둔 채로도 컨트롤러로 패널을 옮기고, 슬라이더를 끌고, 설정을 바꿀 수 있습니다 — 그중 어느 것도 다른 창에 무언가를 주입하지 않으므로, 어느 것도 조정자를 거치지 않습니다.
VR 키보드는 있던 자리에 그대로 있지만 캡처된 창에 대해서는 반응하지 않습니다. 키 상태도, 클릭음도, 진동도 없습니다. 아무것도 입력하지 않은 키가 입력한 것처럼 느껴져서는 안 됩니다. vrOS 자신의 텍스트 필드에 입력하는 것은 계속 되고, 조합 중이던 글자도 전환을 견딥니다 — VR 키보드를 참고하세요.
입력 칩
섹션 제목: “입력 칩”지금의 모드는 대시와 데스크톱 창 양쪽에서 레일 아래쪽의 점 하나와 단어 하나로 언제나 보입니다. 데스크톱 창에는 확정된 두 모드만 보이고, 전환은 대시에 보입니다.
| 칩 | 뜻 |
|---|---|
| VR | VR 포인터가 주입할 수 있습니다. 트리거 클릭이 캡처된 창에 도달합니다. |
| 데스크톱 | 책상이 입력을 쥐고 있습니다. vrOS는 아무것도 주입하지 않습니다. |
| 전환 | 책상이 입력을 쥐고 있고, 되찾기 잠금이 아직 진행 중입니다. 트리거를 당겨도 아직 아무 일도 일어나지 않습니다. |
뜻을 담는 것은 단어이고, 점의 색은 그것을 거들 뿐입니다. 캡처된 창에서 클릭이 아무 일도 하지 않는다면 칩부터 읽으세요 — 문제 해결을 참고하세요.