void v4l_key_command(rfbBool down, rfbKeySym keysym, rfbClientPtr client) { allowed_input_t input; if (raw_fb_fd < 0) { return; } if (! down) { return; } if (view_only) { return; } get_allowed_input(client, &input); if (! input.keystroke) { return; } if (keysym == XK_b) { v4l_br(-1); } else if (keysym == XK_B) { v4l_br(+1); } else if (keysym == XK_h) { v4l_hu(-1); } else if (keysym == XK_H) { v4l_hu(+1); } else if (keysym == XK_c) { v4l_co(-1); } else if (keysym == XK_C) { v4l_co(+1); } else if (keysym == XK_n) { v4l_cn(-1); } else if (keysym == XK_N) { v4l_cn(+1); } else if (keysym == XK_s) { v4l_sz(-1); } else if (keysym == XK_S) { v4l_sz(+1); } else if (keysym == XK_i) { v4l_inp(-1); } else if (keysym == XK_I) { v4l_inp(-2); } else if (keysym == XK_Up) { v4l_sta(+0); } else if (keysym == XK_Down) { v4l_sta(-1); } else if (keysym == XK_F1) { v4l_fmt("HI240"); } else if (keysym == XK_F2) { v4l_fmt("RGB565"); } else if (keysym == XK_F3) { v4l_fmt("RGB24"); } else if (keysym == XK_F4) { v4l_fmt("RGB32"); } else if (keysym == XK_F5) { v4l_fmt("RGB555"); } else if (keysym == XK_F6) { v4l_fmt("GREY"); } if (client) {} }
void console_key_command(rfbBool down, rfbKeySym keysym, rfbClientPtr client) { static int control = 0, alt = 0; allowed_input_t input; if (debug_keyboard) fprintf(stderr, "console_key_command: %d %s\n", (int) keysym, down ? "down" : "up"); if (pipeinput_cons_fd < 0) { return; } if (view_only) { return; } get_allowed_input(client, &input); if (! input.keystroke) { return; } /* From LinuxVNC.c: */ if (keysym == XK_Control_L || keysym == XK_Control_R) { if (! down) { if (control > 0) { control--; } } else { control++; } return; } if (keysym == XK_Alt_L || keysym == XK_Alt_R) { if (! down) { if (alt > 0) { alt--; } } else { alt++; } return; } if (!down) { return; } if (keysym == XK_Escape) { keysym = 27; } if (control) { /* shift down to the "control" zone */ if (keysym >= 'a' && keysym <= 'z') { keysym -= ('a' - 1); } else if (keysym >= 'A' && keysym <= 'Z') { keysym -= ('A' - 1); } else { keysym = 0xffff; } } else if (alt) { /* shift up to the upper half Latin zone */ if (keysym >= '!' && keysym <= '~') { keysym += 128; } } if (debug_keyboard) fprintf(stderr, "keysym now: %d\n", (int) keysym); if (keysym == XK_Tab) { keysym = '\t'; } else if (keysym == XK_Return || keysym == XK_KP_Enter) { keysym = '\r'; } else if (keysym == XK_BackSpace) { keysym = 8; } else if (keysym == XK_Home || keysym == XK_KP_Home) { keysym = 1; } else if (keysym == XK_End || keysym == XK_KP_End) { keysym = 5; } else if (keysym == XK_Up || keysym == XK_KP_Up) { keysym = 16; } else if (keysym == XK_Down || keysym == XK_KP_Down) { keysym = 14; } else if (keysym == XK_Right || keysym == XK_KP_Right) { keysym = 6; } else if (keysym == XK_Next || keysym == XK_KP_Next) { keysym = 6; } else if (keysym == XK_Left || keysym == XK_KP_Left) { keysym = 2; } else if (keysym == XK_Prior || keysym == XK_KP_Prior) { keysym = 2; } else { if (keysym >= XK_KP_Multiply && keysym <= XK_KP_Equal) { keysym -= 0xFF80; } } #if LIBVNCSERVER_HAVE_SYS_IOCTL_H && defined(TIOCSTI) if (keysym < 0x100) { if (ioctl(pipeinput_cons_fd, TIOCSTI, &keysym) != -1) { return; } perror("ioctl"); close(pipeinput_cons_fd); pipeinput_cons_fd = -1; if (! pipeinput_cons_dev) { return; } pipeinput_cons_fd = open(pipeinput_cons_dev, O_WRONLY); if (pipeinput_cons_fd < 0) { rfbLog("pipeinput: could not reopen %s\n", pipeinput_cons_dev); perror("open"); return; } if (ioctl(pipeinput_cons_fd, TIOCSTI, &keysym) == -1) { perror("ioctl"); close(pipeinput_cons_fd); pipeinput_cons_fd = -1; rfbLog("pipeinput: could not reopen %s\n", pipeinput_cons_dev); } } #endif if (client) {} }