src/nanox/srvmain.c GsSelect(0L); GsSelect(GR_TIMEOUT timeout)
src/nanox/srvevent.c GR_BOOL GsCheckKeyboardEvent(void)
src/engine/devkbd.c GdReadKeyboard(MWKEY *buf, MWKEYMOD *modifiers, MWSCANCODE *scancode)
src/nanox/srvevent.c void GsDeliverKeyboardEvent(GR_WINDOW_ID wid, GR_EVENT_TYPE type, GR_KEY keyvalue, GR_KEYMOD modifiers, GR_SCANCODE scancode)
  1. 追了老半天發現 FLTK 只吃 scancode,而 nano-x 有二種,一個是 ch,一個是 scancode。 kbd_pipe 卻只支援 ch,scancode 直接給 0,造成 FLTK 都無法用模擬鍵盤輸入。
  2. 支援 scancode 及 ch 的 keyborad driver。
    SCANKBD(kbd_ttyscan.c)
    IPAQKBD(kbd_ipaq.c)
    LIRCKBD(kbd_lirc.c)
  3. nano-x 的 key define 在 src/include/winkbd.h 及 src/include/mwtypes.h。
  4. FLTK 的 key define 在 nxlib/keysymdef.h。
  5. nxlib 透過轉換 src/include/mwtypes.h 中的 MWKEY_??? 成 nxlib/keysymdef.h 的 XK_????。
  6. 轉換程式為 KeySym XKeycodeToKeysym(Display *dpy, unsigned int kc, int index) in StrKeysym.c。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()