단축키는 어떻게 구현되었는가?
나의 구현 일지 입력 키 스택으로 받기 what is stack? 스택은 데이터를 차곡차곡 쌓을 수 있는 자료구조입니다. 만약 ctrl + shift + c 를 눌렀다면, [ctrl, shift, c] 이런 식으로 들어가 있을 것입니다. 그런데! 키를 꼭 순서대로 누르라는 법은 없기 때문에 순서는 바뀌어 있을 수도 있습니다. 세 개의 키를 한 번에 누르는 경우에는 shift + ctrl + c 이런 식으로 저장될 수도 있습니다. 해당 stack은 useKeyPress라는 파일에 상태값으로 저장되어 있습니다. pressed keys가 스택이어야 하는 이유? 같은 키를 두 번 누르는 커맨드로의 확장 가능성 다른 문자 키를 같이 누르는 커맨드 확장 가능성 → 예를 들어서 "c c" 이런 식의 커맨드와, "c f" 같은 커맨드도 가능하게 하려면 스택을 무조건 사용해야 함. 입력은 스택으로 받고, 사용은 일반 객체로 배열을 사용할 때 배열을 계속 순회하기에는 성능 이슈가 있기 때문에, 객체로 만들어서 참조한다. 즉, 키보드 입력 자체는 배열로 받고, 입력값을 사용할 때에는 이를 일반객체로 변환한다. 키가 눌린 정도에 따라 key={c:2} key={c:1,f:1} 이런 식으로 생성된다. 입력값을 받았을 때 분기처리 사진에서처럼 함수 depth가 나뉘어져 있습니다. 초록색 노드가 각 키가 어떤 행동을 하는지를 나타냅니다. Ctrl 혹은 Alt, Shift가 눌려있음에 따라 다른 행동이 실행됩니다.
- 주성진주
3