====== 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|LiWenHsu]] told me there is a usable font that supports CJK chars in [[https://github.com/emaste/fontstuff|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%%''