⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbd.c

📁 超强的嵌入式GUI系统
💻 C
字号:
/***************************************************************************    begin                : Fri Dec 30 2005    copyright            : (C) 2005 - 2007 by Caglar Oral    email                : caglaroral@yahoo.com ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU Lesser General Public License as        * *   published by the Free Software Foundation; either version 2.1 of the  * *   License, or (at your option) any later version.                       * *                                                                         * ***************************************************************************/#if defined(VIDEO_GDI)#include "../../../lib/xynth_.h"#include "server.h"#include "gdi.h"#undef VK_ESCAPE#undef VK_1#undef VK_2#undef VK_3#undef VK_4#undef VK_5#undef VK_6#undef VK_7#undef VK_8#undef VK_9#undef VK_0#undef VK_MINUS#undef VK_EQUALS#undef VK_BACKSPACE#undef VK_TAB#undef VK_q#undef VK_w#undef VK_e#undef VK_r#undef VK_t#undef VK_y#undef VK_u#undef VK_i#undef VK_o#undef VK_p#undef VK_LEFTBRACKET#undef VK_RIGHTBRACKET#undef VK_RETURN#undef VK_LCTRL#undef VK_a#undef VK_s#undef VK_d#undef VK_f#undef VK_g#undef VK_h#undef VK_j#undef VK_k#undef VK_l#undef VK_SEMICOLON#undef VK_QUOTE#undef VK_BACKQUOTE#undef VK_LSHIFT#undef VK_BACKSLASH#undef VK_z#undef VK_x#undef VK_c#undef VK_v#undef VK_b#undef VK_n#undef VK_m#undef VK_COMMA#undef VK_PERIOD#undef VK_SLASH#undef VK_RSHIFT#undef VK_KP_MULTIPLY#undef VK_LALT#undef VK_SPACE#undef VK_CAPSLOCK#undef VK_F1#undef VK_F2#undef VK_F3#undef VK_F4#undef VK_F5#undef VK_F6#undef VK_F7#undef VK_F8#undef VK_F9#undef VK_F10#undef VK_NUMLOCK#undef VK_SCROLLOCK#undef VK_KP7#undef VK_KP8#undef VK_KP9#undef VK_KP_MINUS#undef VK_KP4#undef VK_KP5#undef VK_KP6#undef VK_KP_PLUS#undef VK_KP1#undef VK_KP2#undef VK_KP3#undef VK_KP0#undef VK_KP_PERIOD#undef VK_LESS#undef VK_F11#undef VK_F12#undef VK_KP_ENTER#undef VK_RCTRL#undef VK_KP_DIVIDE#undef VK_PRINT#undef VK_RALT#undef VK_BREAK#undef VK_HOME#undef VK_UP#undef VK_PAGEUP#undef VK_LEFT#undef VK_RIGHT#undef VK_END#undef VK_DOWN#undef VK_PAGEDOWN#undef VK_INSERT#undef VK_DELETE#undef VK_PAUSE#define VK_ESCAPE	1#define VK_1		2#define VK_2		3#define VK_3		4#define VK_4		5#define VK_5		6#define VK_6		7#define VK_7		8#define VK_8		9#define VK_9		10#define VK_0		11#define VK_MINUS	12#define VK_EQUALS	13#define VK_BACKSPACE	14#define VK_TAB		15#define VK_q		16#define VK_w		17#define VK_e		18#define VK_r		19#define VK_t		20#define VK_y		21#define VK_u		22#define VK_i		23#define VK_o		24#define VK_p		25#define VK_LEFTBRACKET	26#define VK_RIGHTBRACKET	27#define VK_RETURN	28#define VK_LCTRL	29#define VK_a		30#define VK_s		31#define VK_d		32#define VK_f		33#define VK_g		34#define VK_h		35#define VK_j		36#define VK_k		37#define VK_l		38#define VK_SEMICOLON	39#define VK_QUOTE	40#define VK_BACKQUOTE	41#define VK_LSHIFT	42#define VK_BACKSLASH	43#define VK_z		44#define VK_x		45#define VK_c		46#define VK_v		47#define VK_b		48#define VK_n		49#define VK_m		50#define VK_COMMA	51#define VK_PERIOD	52#define VK_SLASH	53#define VK_RSHIFT	54#define VK_KP_MULTIPLY	55#define VK_LALT		56#define VK_SPACE	57#define VK_CAPSLOCK	58#define VK_F1		59#define VK_F2		60#define VK_F3		61#define VK_F4		62#define VK_F5		63#define VK_F6		64#define VK_F7		65#define VK_F8		66#define VK_F9		67#define VK_F10		68#define VK_NUMLOCK	69#define VK_SCROLLOCK	70#define VK_KP7		71#define VK_KP8		72#define VK_KP9		73#define VK_KP_MINUS	74#define VK_KP4		75#define VK_KP5		76#define VK_KP6		77#define VK_KP_PLUS	78#define VK_KP1		79#define VK_KP2		80#define VK_KP3		81#define VK_KP0		82#define VK_KP_PERIOD	83#define VK_LESS		86#define VK_F11		87#define VK_F12		88#define VK_KP_ENTER	28#define VK_RCTRL	29#define VK_KP_DIVIDE	89#define VK_PRINT	90#define VK_RALT		91#define VK_BREAK	92#define VK_HOME		93#define VK_UP		72#define VK_PAGEUP	73#define VK_LEFT		75#define VK_RIGHT	77#define VK_END		79#define VK_DOWN		80#define VK_PAGEDOWN	81#define VK_INSERT	82#define VK_DELETE	83#define VK_PAUSE	69int s_video_gdi_kbd_init (s_server_conf_t *cfg){        int i;	s_video_gdi_data_t *priv = server->driver->driver_data;	if (s_pipe_api_pipe(priv->keybd_fd)) {		debugf(DSER | DSYS, "pipe failed");		goto err0;	}	for (i = 0; i < GDI_MAX_KEYS; i++) {		priv->keymap[i] = S_KEYCODE_NOCODE;	}	priv->keymap[VK_ESCAPE] = S_KEYCODE_ESCAPE;	priv->keymap[VK_1] = S_KEYCODE_ONE;	priv->keymap[VK_2] = S_KEYCODE_TWO;	priv->keymap[VK_3] = S_KEYCODE_THREE;	priv->keymap[VK_4] = S_KEYCODE_FOUR;	priv->keymap[VK_5] = S_KEYCODE_FIVE;	priv->keymap[VK_6] = S_KEYCODE_SIX;	priv->keymap[VK_7] = S_KEYCODE_SEVEN;	priv->keymap[VK_8] = S_KEYCODE_EIGHT;	priv->keymap[VK_9] = S_KEYCODE_NINE;	priv->keymap[VK_0] = S_KEYCODE_ZERO;	priv->keymap[VK_MINUS] = S_KEYCODE_MINUS;	priv->keymap[VK_EQUALS] = S_KEYCODE_EQUAL;	priv->keymap[VK_BACKSPACE] = S_KEYCODE_DELETE;	priv->keymap[VK_TAB] = S_KEYCODE_TAB;	priv->keymap[VK_q] = S_KEYCODE_q;	priv->keymap[VK_w] = S_KEYCODE_w;	priv->keymap[VK_e] = S_KEYCODE_e;	priv->keymap[VK_r] = S_KEYCODE_r;	priv->keymap[VK_t] = S_KEYCODE_t;	priv->keymap[VK_y] = S_KEYCODE_y;	priv->keymap[VK_u] = S_KEYCODE_u;	priv->keymap[VK_i] = S_KEYCODE_i;	priv->keymap[VK_o] = S_KEYCODE_o;	priv->keymap[VK_p] = S_KEYCODE_p;	priv->keymap[VK_LEFTBRACKET] = S_KEYCODE_BRACKETLEFT;	priv->keymap[VK_RIGHTBRACKET] = S_KEYCODE_BRACKETRIGHT;	priv->keymap[VK_RETURN] = S_KEYCODE_RETURN;	priv->keymap[VK_LCTRL] = S_KEYCODE_LEFTCONTROL;	priv->keymap[VK_a] = S_KEYCODE_a;	priv->keymap[VK_s] = S_KEYCODE_s;	priv->keymap[VK_d] = S_KEYCODE_d;	priv->keymap[VK_f] = S_KEYCODE_f;	priv->keymap[VK_g] = S_KEYCODE_g;	priv->keymap[VK_h] = S_KEYCODE_h;	priv->keymap[VK_j] = S_KEYCODE_j;	priv->keymap[VK_k] = S_KEYCODE_k;	priv->keymap[VK_l] = S_KEYCODE_l;	priv->keymap[VK_SEMICOLON] = S_KEYCODE_SEMICOLON;	priv->keymap[VK_QUOTE] = S_KEYCODE_APOSTROPHE;	priv->keymap[VK_BACKQUOTE] = S_KEYCODE_GRAVE;	priv->keymap[VK_LSHIFT] = S_KEYCODE_LEFTSHIFT;	priv->keymap[VK_BACKSLASH] = S_KEYCODE_BACKSLASH;	priv->keymap[VK_z] = S_KEYCODE_z;	priv->keymap[VK_x] = S_KEYCODE_x;	priv->keymap[VK_c] = S_KEYCODE_c;	priv->keymap[VK_v] = S_KEYCODE_v;	priv->keymap[VK_b] = S_KEYCODE_b;	priv->keymap[VK_n] = S_KEYCODE_n;	priv->keymap[VK_m] = S_KEYCODE_m;	priv->keymap[VK_COMMA] = S_KEYCODE_COMMA;	priv->keymap[VK_PERIOD] = S_KEYCODE_PERIOD;	priv->keymap[VK_SLASH] = S_KEYCODE_SLASH;	priv->keymap[VK_RSHIFT] = S_KEYCODE_RIGHTSHIFT;	priv->keymap[VK_KP_MULTIPLY] = S_KEYCODE_KP_MULTIPLY;	priv->keymap[VK_LALT] = S_KEYCODE_ALT;	priv->keymap[VK_SPACE] = S_KEYCODE_SPACE;	priv->keymap[VK_CAPSLOCK] = S_KEYCODE_CAPS_LOCK;	priv->keymap[VK_F1] = S_KEYCODE_F1;	priv->keymap[VK_F2] = S_KEYCODE_F2;	priv->keymap[VK_F3] = S_KEYCODE_F3;	priv->keymap[VK_F4] = S_KEYCODE_F4;	priv->keymap[VK_F5] = S_KEYCODE_F5;	priv->keymap[VK_F6] = S_KEYCODE_F6;	priv->keymap[VK_F7] = S_KEYCODE_F7;	priv->keymap[VK_F8] = S_KEYCODE_F8;	priv->keymap[VK_F9] = S_KEYCODE_F9;	priv->keymap[VK_F10] = S_KEYCODE_F10;	priv->keymap[VK_NUMLOCK] = S_KEYCODE_NUM_LOCK;	priv->keymap[VK_SCROLLOCK] = S_KEYCODE_SCROLL_LOCK;	priv->keymap[VK_KP7] = S_KEYCODE_KP_7;	priv->keymap[VK_KP8] = S_KEYCODE_KP_8;	priv->keymap[VK_KP9] = S_KEYCODE_KP_9;	priv->keymap[VK_KP_MINUS] = S_KEYCODE_KP_SUBTRACT;	priv->keymap[VK_KP4] = S_KEYCODE_KP_4;	priv->keymap[VK_KP5] = S_KEYCODE_KP_5;	priv->keymap[VK_KP6] = S_KEYCODE_KP_6;	priv->keymap[VK_KP_PLUS] = S_KEYCODE_KP_ADD;	priv->keymap[VK_KP1] = S_KEYCODE_KP_1;	priv->keymap[VK_KP2] = S_KEYCODE_KP_2;	priv->keymap[VK_KP3] = S_KEYCODE_KP_3;	priv->keymap[VK_KP0] = S_KEYCODE_KP_0;	priv->keymap[VK_KP_PERIOD] = S_KEYCODE_KP_PERIOD;	priv->keymap[VK_LESS] = S_KEYCODE_LESS;	priv->keymap[VK_F11] = S_KEYCODE_F11;	priv->keymap[VK_F12] = S_KEYCODE_F12;	priv->keymap[VK_KP_ENTER] = S_KEYCODE_KP_ENTER;	priv->keymap[VK_RCTRL] = S_KEYCODE_RIGHTCONTROL;	priv->keymap[VK_KP_DIVIDE] = S_KEYCODE_KP_DIVIDE;	priv->keymap[VK_PRINT] = S_KEYCODE_VOIDSYMBOL;	priv->keymap[VK_RALT] = S_KEYCODE_ALTGR;	priv->keymap[VK_BREAK] = S_KEYCODE_BREAK;	priv->keymap[VK_HOME] = S_KEYCODE_HOME;	priv->keymap[VK_UP] = S_KEYCODE_UP;	priv->keymap[VK_PAGEUP] = S_KEYCODE_PAGEUP;	priv->keymap[VK_LEFT] = S_KEYCODE_LEFT;	priv->keymap[VK_RIGHT] = S_KEYCODE_RIGHT;	priv->keymap[VK_END] = S_KEYCODE_END;	priv->keymap[VK_DOWN] = S_KEYCODE_DOWN;	priv->keymap[VK_PAGEDOWN] = S_KEYCODE_PAGEDOWN;	priv->keymap[VK_INSERT] = S_KEYCODE_INSERT;	priv->keymap[VK_DELETE] = S_KEYCODE_REMOVE;	priv->keymap[VK_PAUSE] = S_KEYCODE_PAUSE;	return priv->keybd_fd[0];err0:   priv->keybd_fd[0] = -1;	priv->keybd_fd[1] = -1;	return -1;}int s_video_gdi_kbd_update (s_video_input_data_t *keybd){        int k = 0;	s_video_gdi_data_t *priv = server->driver->driver_data;	s_pipe_api_read(priv->keybd_fd[0], &k, sizeof(int));	keybd->keybd.ascii = priv->keybd.ascii;	keybd->keybd.scancode = priv->keybd.scancode;	keybd->keybd.keycode = priv->keybd.keycode;	keybd->keybd.button = priv->keybd.button;        keybd->keybd.state = priv->keybd.state;        return 0;}void s_video_gdi_kbd_uninit (void){	s_video_gdi_data_t *priv = server->driver->driver_data;	s_pipe_api_close(priv->keybd_fd[0]);	s_pipe_api_close(priv->keybd_fd[1]);	priv->keybd_fd[0] = -1;	priv->keybd_fd[1] = -1;}#endif /* VIDEO_GDI */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -