자동완성 기능을 위한 키보드 이벤트 분기 처리 - boostcamp-2020/Project15-B-Client-Based-Formula-Editor GitHub Wiki
Backslash()를 입력했을 때 입력 가능한 명령어들이 포함된 레이아웃을 미리보기로 제공하여 LaTeX 명령어를 직접 다 입력하지 않고 선택한 명령어가 바로 입력되도록 하여 자동완성 기능을 구현했습니다.
keyup 이벤트 함수에서는 Backslash, Backspace, Delete 키에 대한 이벤트를 처리했습니다. backslash를 입력하면 자동완성 레이아웃이 나타나도록 했습니다. 그리고 backslash를 입력한 이후 입력되는 Alphabet들을 buffer에 저장되록 했습니다. Backspace와 Delete키가 입력되면 buffer에 있는 값 중에서 가장 최신 값을 삭제하도록 했습니다.
keydown 이벤트 함수에서는 Down(↓), Up(↑), Enter, Space, Tab 키에 대한 이벤트를 처리했습니다. Down(↓), Up(↑)이 입력되면 자동완성 레이아웃에 포함된 아이템들 중에서 특정 아이템을 가리키도록 했습니다. Enter, Space, Tab이 입력되면 현재까지 입력된 LaTeX 명령어를 수식 기호로 바꿔줍니다. 자동완성 레이아웃에 포한된 특정 아이템을 선택한 상태에서 Enter, Space, Tab가 입력되면 선택한 아이템이 입력 영역에 입력되어 수식기호로 바뀌도록 했습니다.
keypress 이벤트 함수에서는 Alphabet 키에 대한 이벤트를 처리했습니다. Backslash가 입력된 이후 Alphabet이 입력되면 buffer에 저장되도록 했습니다. Alphabet 키를 keypress 이벤트 함수에서 처리한 이유는 keydown 이벤트 함수에서는 소문자를 입력해도 대문자에 해당하는 ASCII 코드로 해석해서 대소문자를 구분해서 ASCII 코드로 해석하는 keypress 이벤트 함수에서 처리하였습니다.