키보드 제어 · 학습

실행 조건

입력 이벤트 목록으로 동작을 재현합니다. 실제 키보드·장치 연결은 같은 처리 함수를 이벤트 수신부와 연결하는 별도 단계입니다.

이번에 배울 내용

키를 누른 순간뿐 아니라 놓거나 통신이 끊긴 뒤의 동작도 정해야 움직이는 장치를 멈출 수 있습니다.

전체 흐름

영상·입력 사건 → 좌표·유효성 검사 → 제한된 명령 → 경로·실패 확인

입력 사건에서 상태로

키를 누른 사건은 속도 명령을 설정하고, 놓은 사건은 해제합니다. 이벤트를 받을 때마다 거리를 더하면 반복 입력 횟수와 처리 속도에 따라 움직임이 달라질 수 있습니다. 상태를 유지하고 시간 간격으로 위치를 적분합니다.

명령의 유효 시간

입력이 오지 않을 때 마지막 속도를 계속 유지하면 위험합니다. 마지막 수신 시각과 Timeout을 두고 오래된 명령은 정지로 바꿉니다. 정상 종료·통신 공백·중복 입력을 각각 시험합니다.

풀이 예제

t=[00.10.20.30.40.5]t=\begin{bmatrix}0&0.1&0.2&0.3&0.4&0.5\end{bmatrix} s, key=[w,w,release,d,quit,w]. w=(1,0), d=(0,-1) m/s로 둡니다.

events=list(zip([0,.1,.2,.3,.4,.5],['w','w','release','d','quit','w']))
key_velocity={'w':(1.,0.),'s':(-1.,0.),'a':(0.,1.),'d':(0.,-1.)}

참고 예제

추가 예제 보기

참고 자료