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

📄 keywidget.c

📁 添加系统调用。。。在LINUX下添加一个新的系统调用。在文件中添加自己的系统调用的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/*        Widget*/static KeyWidget *key_widget_new(GtkWidget *drawing_area, int keys)/* Unlike CellWidget, KeyWidget can be instantiated more than once */{        KeyWidget *key_widget;        key_widget = g_malloc0(sizeof (*key_widget) + sizeof (Key) * keys);        key_widget->active = -1;        key_widget->drawing_area = drawing_area;        key_widget->max_len = keys;        /* Get background color */        style_set(drawing_area, NULL, NULL);        /* Create Pango font description           FIXME font characteristics, not family */        key_widget->pango_font_desc = pango_font_description_new();        pango_font_description_set_family(key_widget->pango_font_desc, "Sans");        pango_font_description_set_weight(key_widget->pango_font_desc,                                          PANGO_WEIGHT_BOLD);        return key_widget;}KeyWidget *key_widget_new_small(GtkWidget *drawing_area)/* Creates a small on-screen keyboard slaved to another drawing area */{        KeyWidget *key_widget;        Key *key;        key_widget = key_widget_new(drawing_area, 16);        key_widget->slaved = TRUE;        /* 1st row */        key = add_key(key_widget, XK_BackSpace, "BkSp", 1, 0, 2, 1);        set_flags(key, KEY_ARROW, 180);        add_key(key_widget, XK_Tab, "Tab", 0, 0, 1, 1);        add_key(key_widget, XK_Delete, "Del", 3, 0, 1, 1);        /* 2nd row */        add_key(key_widget, XK_Home, "Hme", 0, 1, 1, 1);        key = add_key(key_widget, XK_Up, "", 1, 1, 1, 1);        set_flags(key, KEY_ARROW, 90);        add_key(key_widget, XK_End, "End", 2, 1, 1, 1);        add_key(key_widget, XK_Page_Up, "PUp", 3, 1, 1, 1);        /* 3rd row */        key = add_key(key_widget, XK_Left, "", 0, 2, 1, 1);        set_flags(key, KEY_ARROW, 180);        key = add_key(key_widget, XK_Down, "", 1, 2, 1, 1);        set_flags(key, KEY_ARROW, 270);        key = add_key(key_widget, XK_Right, "", 2, 2, 1, 1);        set_flags(key, KEY_ARROW, 0);        add_key(key_widget, XK_Page_Down, "PDn", 3, 2, 1, 1);        /* Add some event hooks */        g_signal_connect(G_OBJECT(drawing_area), "style-set",                         G_CALLBACK(style_set), key_widget);        return key_widget;}KeyWidget *key_widget_new_full(void)/* Creates the QWERTY on-screen keyboard   FIXME The Num Pad shifts are backwards, a shifted num lockable will be used         when Num Lock is OFF. */{        GtkWidget *drawing_area;        KeyWidget *key_widget;        Key *key;        /* Create drawing area */        drawing_area = gtk_drawing_area_new();        /* Create key widget */        key_widget = key_widget_new(drawing_area, 104);        key_widget_resize(key_widget);        /* 1st row */        add_key(key_widget, XK_Escape, "Esc", 0, 0, 3, 2);        add_key(key_widget, XK_F1, "F1", 4, 0, 2, 2);        add_key(key_widget, XK_F2, "F2", 6, 0, 2, 2);        add_key(key_widget, XK_F3, "F3", 8, 0, 2, 2);        add_key(key_widget, XK_F4, "F4", 10, 0, 2, 2);        add_key(key_widget, XK_F5, "F5", 13, 0, 2, 2);        add_key(key_widget, XK_F6, "F6", 15, 0, 2, 2);        add_key(key_widget, XK_F7, "F7", 17, 0, 2, 2);        add_key(key_widget, XK_F8, "F8", 19, 0, 2, 2);        add_key(key_widget, XK_F9, "F9", 22, 0, 2, 2);        add_key(key_widget, XK_F10, "F10", 24, 0, 2, 2);        add_key(key_widget, XK_F11, "F11", 26, 0, 2, 2);        add_key(key_widget, XK_F12, "F12", 28, 0, 2, 2);        add_key(key_widget, XK_Print, "PSc", 31, 0, 2, 2);        add_key(key_widget, XK_Scroll_Lock, "SLk", 33, 0, 2, 2);        add_key(key_widget, XK_Pause, "Brk", 35, 0, 2, 2);        /* 2nd row */        key = add_key(key_widget, XK_grave, "`", 0, 3, 2, 2);        set_shifted(key, XK_asciitilde, "~");        key = add_key(key_widget, XK_1, "1", 2, 3, 2, 2);        set_shifted(key, XK_exclam, "!");        key = add_key(key_widget, XK_2, "2", 4, 3, 2, 2);        set_shifted(key, XK_at, "@");        key = add_key(key_widget, XK_3, "3", 6, 3, 2, 2);        set_shifted(key, XK_numbersign, "#");        key = add_key(key_widget, XK_4, "4", 8, 3, 2, 2);        set_shifted(key, XK_dollar, "$");        key = add_key(key_widget, XK_5, "5", 10, 3, 2, 2);        set_shifted(key, XK_percent, "%");        key = add_key(key_widget, XK_6, "6", 12, 3, 2, 2);        set_shifted(key, XK_asciicircum, "^");        key = add_key(key_widget, XK_7, "7", 14, 3, 2, 2);        set_shifted(key, XK_ampersand, "&");        key = add_key(key_widget, XK_8, "8", 16, 3, 2, 2);        set_shifted(key, XK_asterisk, "*");        key = add_key(key_widget, XK_9, "9", 18, 3, 2, 2);        set_shifted(key, XK_parenleft, "(");        key = add_key(key_widget, XK_0, "0", 20, 3, 2, 2);        set_shifted(key, XK_parenright, ")");        key = add_key(key_widget, XK_minus, "-", 22, 3, 2, 2);        set_shifted(key, XK_underscore, "_");        key = add_key(key_widget, XK_equal, "=", 24, 3, 2, 2);        set_shifted(key, XK_plus, "+");        key = add_key(key_widget, XK_BackSpace, "BkSp", 26, 3, 4, 2);        set_flags(key, KEY_ARROW, 180);        add_key(key_widget, XK_Insert, "Ins", 31, 3, 2, 2);        add_key(key_widget, XK_Home, "Hm", 33, 3, 2, 2);        add_key(key_widget, XK_Page_Up, "PU", 35, 3, 2, 2);        key = add_key(key_widget, XK_Num_Lock, "NL", 38, 3, 2, 2);        set_flags(key, KEY_NUM_LOCK, 0);        add_key(key_widget, XK_KP_Divide, "/", 40, 3, 2, 2);        add_key(key_widget, XK_KP_Multiply, "*", 42, 3, 2, 2);        add_key(key_widget, XK_KP_Subtract, "-", 44, 3, 2, 2);        /* 3rd row */        add_key(key_widget, XK_Tab, "Tab", 0, 5, 3, 2);        key = add_key(key_widget, XK_q, "q", 3, 5, 2, 2);        set_shifted(key, XK_Q, "Q");        key = add_key(key_widget, XK_w, "w", 5, 5, 2, 2);        set_shifted(key, XK_W, "W");        key = add_key(key_widget, XK_e, "e", 7, 5, 2, 2);        set_shifted(key, XK_E, "E");        key = add_key(key_widget, XK_r, "r", 9, 5, 2, 2);        set_shifted(key, XK_R, "R");        key = add_key(key_widget, XK_t, "t", 11, 5, 2, 2);        set_shifted(key, XK_T, "T");        key = add_key(key_widget, XK_y, "y", 13, 5, 2, 2);        set_shifted(key, XK_Y, "Y");        key = add_key(key_widget, XK_u, "u", 15, 5, 2, 2);        set_shifted(key, XK_U, "U");        key = add_key(key_widget, XK_i, "i", 17, 5, 2, 2);        set_shifted(key, XK_I, "I");        key = add_key(key_widget, XK_o, "o", 19, 5, 2, 2);        set_shifted(key, XK_O, "O");        key = add_key(key_widget, XK_p, "p", 21, 5, 2, 2);        set_shifted(key, XK_P, "P");        key = add_key(key_widget, XK_bracketleft, "[", 23, 5, 2, 2);        set_shifted(key, XK_braceleft, "{");        key = add_key(key_widget, XK_bracketright, "]", 25, 5, 2, 2);        set_shifted(key, XK_braceright, "}");        key = add_key(key_widget, XK_backslash, "\\", 27, 5, 3, 2);        set_shifted(key, XK_bar, "|");        add_key(key_widget, XK_Delete, "Del", 31, 5, 2, 2);        add_key(key_widget, XK_End, "End", 33, 5, 2, 2);        add_key(key_widget, XK_Page_Down, "PD", 35, 5, 2, 2);        key = add_key(key_widget, XK_KP_7, "7", 38, 5, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, XK_KP_Home, "Hm");        key = add_key(key_widget, XK_KP_8, "8", 40, 5, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE | KEY_ICON_SHIFT | KEY_ARROW, 90);        set_shifted(key, XK_KP_Up, "");        key = add_key(key_widget, XK_KP_9, "9", 42, 5, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, XK_KP_Page_Up, "PU");        add_key(key_widget, XK_KP_Add, "+", 44, 5, 2, 4);        /* 4th row */        key = add_key(key_widget, XK_Caps_Lock, "CpLk", 0, 7, 4, 2);        set_flags(key, KEY_CAPS_LOCK, 0);        key = add_key(key_widget, XK_a, "a", 4, 7, 2, 2);        set_shifted(key, XK_A, "A");        key = add_key(key_widget, XK_s, "s", 6, 7, 2, 2);        set_shifted(key, XK_S, "S");        key = add_key(key_widget, XK_d, "d", 8, 7, 2, 2);        set_shifted(key, XK_D, "D");        key = add_key(key_widget, XK_f, "f", 10, 7, 2, 2);        set_shifted(key, XK_F, "F");        key = add_key(key_widget, XK_g, "g", 12, 7, 2, 2);        set_shifted(key, XK_G, "G");        key = add_key(key_widget, XK_h, "h", 14, 7, 2, 2);        set_shifted(key, XK_H, "H");        key = add_key(key_widget, XK_j, "j", 16, 7, 2, 2);        set_shifted(key, XK_J, "J");        key = add_key(key_widget, XK_k, "k", 18, 7, 2, 2);        set_shifted(key, XK_K, "K");        key = add_key(key_widget, XK_l, "l", 20, 7, 2, 2);        set_shifted(key, XK_L, "L");        key = add_key(key_widget, XK_semicolon, ";", 22, 7, 2, 2);        set_shifted(key, XK_colon, ":");        key = add_key(key_widget, XK_apostrophe, "'", 24, 7, 2, 2);        set_shifted(key, XK_quotedbl, "\"");        add_key(key_widget, XK_Return, "Enter", 26, 7, 4, 2);        key = add_key(key_widget, XK_KP_4, "4", 38, 7, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE | KEY_ICON_SHIFT | KEY_ARROW, 180);        set_shifted(key, XK_KP_Left, "");        key = add_key(key_widget, XK_KP_5, "5", 40, 7, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, 0, "");        key = add_key(key_widget, XK_KP_6, "6", 42, 7, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE | KEY_ICON_SHIFT | KEY_ARROW, 0);        set_shifted(key, XK_KP_Right, "");        /* 5th row */        key = add_key(key_widget, XK_Shift_L, "Shift", 0, 9, 5, 2);        set_flags(key, KEY_STICKY|KEY_SHIFT, 0);        key = add_key(key_widget, XK_z, "z", 5, 9, 2, 2);        set_shifted(key, XK_Z, "Z");        key = add_key(key_widget, XK_x, "x", 7, 9, 2, 2);        set_shifted(key, XK_X, "X");        key = add_key(key_widget, XK_c, "c", 9, 9, 2, 2);        set_shifted(key, XK_C, "C");        key = add_key(key_widget, XK_v, "v", 11, 9, 2, 2);        set_shifted(key, XK_V, "V");        key = add_key(key_widget, XK_b, "b", 13, 9, 2, 2);        set_shifted(key, XK_B, "B");        key = add_key(key_widget, XK_n, "n", 15, 9, 2, 2);        set_shifted(key, XK_N, "N");        key = add_key(key_widget, XK_m, "m", 17, 9, 2, 2);        set_shifted(key, XK_M, "M");        key = add_key(key_widget, XK_comma, ",", 19, 9, 2, 2);        set_shifted(key, XK_less, "<");        key = add_key(key_widget, XK_period, ".", 21, 9, 2, 2);        set_shifted(key, XK_greater, ">");        key = add_key(key_widget, XK_slash, "/", 23, 9, 2, 2);        set_shifted(key, XK_question, "?");        key = add_key(key_widget, XK_Shift_R, "Shift", 25, 9, 5, 2);        set_flags(key, KEY_STICKY|KEY_SHIFT, 0);        key = add_key(key_widget, XK_Up, "", 33, 9, 2, 2);        set_flags(key, KEY_ARROW, 90);        key = add_key(key_widget, XK_KP_1, "1", 38, 9, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, XK_KP_End, "End");        key = add_key(key_widget, XK_KP_2, "2", 40, 9, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE | KEY_ICON_SHIFT | KEY_ARROW, 270);        set_shifted(key, XK_KP_Down, "");        key = add_key(key_widget, XK_KP_3, "3", 42, 9, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, XK_KP_Page_Down, "PD");        add_key(key_widget, XK_KP_Enter, "Ent", 44, 9, 2, 4);        /* 6th row */        key = add_key(key_widget, XK_Control_L, "Ctrl", 0, 11, 4, 2);        set_flags(key, KEY_STICKY, 0);        key = add_key(key_widget, XK_Super_L, "Su", 4, 11, 2, 2);        set_flags(key, KEY_STICKY, 0);        key = add_key(key_widget, XK_Alt_L, "Alt", 6, 11, 2, 2);        set_flags(key, KEY_STICKY, 0);        add_key(key_widget, XK_space, "", 8, 11, 14, 2);        key = add_key(key_widget, XK_Alt_R, "Alt", 22, 11, 2, 2);        set_flags(key, KEY_STICKY, 0);        add_key(key_widget, XK_Menu, "Mn", 24, 11, 2, 2);        key = add_key(key_widget, XK_Control_R, "Ctrl", 26, 11, 4, 2);        set_flags(key, KEY_STICKY, 0);        key = add_key(key_widget, XK_Left, "", 31, 11, 2, 2);        set_flags(key, KEY_ARROW, 180);        key = add_key(key_widget, XK_Down, "", 33, 11, 2, 2);        set_flags(key, KEY_ARROW, 270);        key = add_key(key_widget, XK_Right, "", 35, 11, 2, 2);        set_flags(key, KEY_ARROW, 0);        key = add_key(key_widget, XK_KP_0, "0", 38, 11, 4, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, XK_KP_Insert, "Ins");        key = add_key(key_widget, XK_KP_Decimal, ".", 42, 11, 2, 2);        set_flags(key, KEY_NUM_LOCKABLE, 0);        set_shifted(key, XK_KP_Delete, "Del");        /* Setup drawing area events */        g_signal_connect(G_OBJECT(drawing_area), "expose_event",                         G_CALLBACK(expose_event), key_widget);        g_signal_connect(G_OBJECT(drawing_area), "configure_event",                         G_CALLBACK(configure_event), key_widget);        g_signal_connect(G_OBJECT(drawing_area), "button_press_event",                         G_CALLBACK(key_widget_button_press), key_widget);        g_signal_connect(G_OBJECT(drawing_area), "button_release_event",                         G_CALLBACK(key_widget_button_release), key_widget);        g_signal_connect(G_OBJECT(drawing_area), "style-set",                         G_CALLBACK(style_set), key_widget);        gtk_widget_set_events(drawing_area, GDK_EXPOSURE_MASK |                                            GDK_BUTTON_PRESS_MASK |                                            GDK_BUTTON_RELEASE_MASK);        return key_widget;}

⌨️ 快捷键说明

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