Input method in FreeBSD virtual terminal (Week7)
Date: 07/19-07/25
Progress
At the beginning of this week I did some experiments with vt_processkey() and terminal_input_char(), such as a function that recieves a key and echos back.
After figuring out the usage of the two functions, I hijacked vt_processkey() function and use right CTRL key to toggle the rime mode. If the rime mode is enabled, the key will be passed into the custom function called vt_rime_process_char() to send the key to the rime server.
Now, the most important problem is how to communicate with the rime server. I list some requirements for implementation:
Requirements
- The kernel need to send character to the Rime server in user space when receiving keyboard events.
- The Rime server replies CJK characters. Additionally, word candidates and preedit string.
- The kernel output the characters to where the cursor is and display candidates and preedit string.
Another issue is the default VT font does not contain Chinese characters, so I am unable to insert/display CJK characters on the screen. Fortunately, my mentor LiWenHsu told me there is a usable font that supports CJK chars in fontstuff repo.
Todos
- Try out the b16.hex in fontstuff repo to check it can display CJK or even bopomofo chars
- Take a look at route(4) (route monitor) to see how it achieves the communication between kernel and user mode:
user mode: src/sbin/route/route.c
kernel mode: sys/net/rtsock.c