static void writelog(FILE *file, const char *buf) { static uchar ubuf[512]; size_t len = strlen(buf), carry = 0; while(carry < len) { size_t numu = encodeutf8(ubuf, sizeof(ubuf)-1, &((const uchar *)buf)[carry], len - carry, &carry); if(carry >= len) ubuf[numu++] = '\n'; fwrite(ubuf, 1, numu, file); } }
static void processkey(WINDISPLAY *mod, WINWINDOW *win, TUINT type, TINT code) { TIMSG *imsg; TINT numchars = 0; WCHAR buff[2]; getqualifier(mod, win); switch (code) { case VK_LEFT: code = TKEYC_CRSRLEFT; break; case VK_UP: code = TKEYC_CRSRUP; break; case VK_RIGHT: code = TKEYC_CRSRRIGHT; break; case VK_DOWN: code = TKEYC_CRSRDOWN; break; case VK_ESCAPE: code = TKEYC_ESC; break; case VK_DELETE: code = TKEYC_DEL; break; case VK_BACK: code = TKEYC_BCKSPC; break; case VK_TAB: code = TKEYC_TAB; break; case VK_RETURN: code = TKEYC_RETURN; break; case VK_HELP: code = TKEYC_HELP; break; case VK_INSERT: code = TKEYC_INSERT; break; case VK_PRIOR: code = TKEYC_PAGEUP; break; case VK_NEXT: code = TKEYC_PAGEDOWN; break; case VK_HOME: code = TKEYC_POSONE; break; case VK_END: code = TKEYC_POSEND; break; case VK_PRINT: code = TKEYC_PRINT; break; case VK_SCROLL: code = TKEYC_SCROLL; break; case VK_PAUSE: code = TKEYC_PAUSE; break; case VK_DECIMAL: code = '.'; imsg->timsg_Qualifier |= TKEYQ_NUMBLOCK; break; case VK_ADD: code = '+'; imsg->timsg_Qualifier |= TKEYQ_NUMBLOCK; break; case VK_SUBTRACT: code = '-'; imsg->timsg_Qualifier |= TKEYQ_NUMBLOCK; break; case VK_MULTIPLY: code = '*'; imsg->timsg_Qualifier |= TKEYQ_NUMBLOCK; break; case VK_DIVIDE: code = '/'; imsg->timsg_Qualifier |= TKEYQ_NUMBLOCK; break; case VK_F1: case VK_F2: case VK_F3: case VK_F4: case VK_F5: case VK_F6: case VK_F7: case VK_F8: case VK_F9: case VK_F10: case VK_F11: case VK_F12: code = (TUINT) (code - VK_F1) + TKEYC_F1; break; default: numchars = ToUnicode(code, 0, win->fbv_KeyState, buff, 2, 0); if (numchars > 0) code = buff[0]; } if ((win->fbv_InputMask & type) && fb_getimsg(mod, win, &imsg, type)) { ptrdiff_t len; imsg->timsg_Code = code; len = (ptrdiff_t) encodeutf8(imsg->timsg_KeyCode, imsg->timsg_Code) - (ptrdiff_t) imsg->timsg_KeyCode; imsg->timsg_KeyCode[len] = 0; fb_sendimsg(mod, win, imsg); } }