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

📄 input_key.c

📁 在Xwindow系统中
💻 C
字号:
/* * keykey.c */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h> #include <termio.h> #include <sys/ioctl.h>#include <X11/Xlib.h>#include <X11/Xutil.h>#include <X11/keysym.h>#include <gdk/gdktypes.h>/* For test key combination */#define SELF_DEF1  (-1)   /* According to "a" */#define SELF_DEF2  (-2)   /* According to "b" */#define SELF_DEF3  (-3)   /* According to "c" */typedef struct {	const char * key_name;	KeySym key_val;}KEY_INFO;KEY_INFO key_info[] =  {{"TT_KEY_1"          , XK_1},{"TT_KEY_2"          , XK_2},{"TT_KEY_3"          , XK_3},{"TT_KEY_4"          , XK_4},{"TT_KEY_5"          , XK_5},{"TT_KEY_6"          , XK_6},{"TT_KEY_7"          , XK_7},{"TT_KEY_8"          , XK_8},{"TT_KEY_9"          , XK_9},{"TT_KEY_0"          , XK_0},{"TT_KEY_numbersign" , XK_numbersign},{"TT_KEY_asterisk"   , XK_asterisk},{"TT_KEY_Up"         , XK_Up},{"TT_KEY_Right"      , XK_Right},{"TT_KEY_Left"       , XK_Left},{"TT_KEY_Down"       , XK_Down},{"TT_KEY_Home"       , XK_Home},{"TT_KEY_End"        , XK_End},{"TT_KEY_Return"     , XK_Return},};int main(int argc, char **argv){    Display   *display;    Window    root;    XKeyEvent key_press;    KeySym    keysym;    Window    focus;	int		  i, max_key_num, revert_to;	if(argc !=2)	{		printf ("\nUsage: %s key_flag\n", argv[0]);		return -1;	}    if (!(display = XOpenDisplay(NULL))) {		printf(" XOpenDisplay() error !\n");		return -1;    }	keysym = atol(argv[1]);	max_key_num = sizeof(key_info)/sizeof(KEY_INFO);	for (i = 0; i < max_key_num ; i++ )	{		if ( keysym == key_info[i].key_val)		{			printf("this key is clicked: %s\n", key_info[i].key_name);			break;		}	}	if(i == max_key_num)	{			printf("this key is not supported: %x\n", keysym);			return -1;	}    root = DefaultRootWindow(display);         	if(keysym != 0) {	    XGetInputFocus(display, &focus, &revert_to);	    printf( "<< Focus Window=(0x%08lx)>>\n", (long)focus );	    memset(&key_press, 0, sizeof(key_press));	    key_press.type      = KeyPress;	    key_press.window    = focus;	    key_press.root      = root;	    key_press.subwindow = None;	    key_press.time      = CurrentTime;                        switch (keysym) {               case SELF_DEF1:	         key_press.keycode   = XKeysymToKeycode(display, XK_1);                 key_press.state |= GDK_SHIFT_MASK;                 key_press.state |= GDK_MOD1_MASK;                 break;               case SELF_DEF2:	         key_press.keycode   = XKeysymToKeycode(display, XK_2);                 key_press.state |= GDK_MOD1_MASK;                 break;               case SELF_DEF3:	         key_press.keycode   = XKeysymToKeycode(display, XK_3);                 key_press.state |= GDK_CONTROL_MASK;                 break;                   default:	                     key_press.keycode   = XKeysymToKeycode(display, keysym);	         printf( "<< keycode=(0x%X)>>\n", key_press.keycode );                 break;            }             	    if(XSendEvent(display, focus, False, KeyPressMask, 			  (XEvent *) &key_press)==0){		printf("@@@XSendEvent Failure!!\n");	    };	    XFlush(display);	}         XCloseDisplay(display);    return 0;}

⌨️ 快捷键说明

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