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

📄 test.c

📁 Linux环境下手写输入程序。手写输入
💻 C
字号:
/*cellwriter -- a character recognition input methodCopyright (C) 2007 Michael Levin <risujin@risujin.org>This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.*/#include <math.h>#include <gtk/gtk.h>#include <string.h>#include <stdlib.h>#include <X11/X.h>#include <X11/Xlib.h>#include <X11/keysym.h>#include <X11/extensions/XTest.h>#include <gdk/gdkkeysyms.h>#include <gdk/gdkx.h>#include <glib.h>#include <glib/gunicode.h>/* This program is capable of running various tests useful for the   development of CellWriter. It does NOT test whether CellWriter can or did   install succesfully. *//*        Test functions*/KeyCode shift_key;void print_modmap(void){        XModifierKeymap *xmk;        int i, j;        xmk = XGetModifierMapping(GDK_DISPLAY());        for (i = 0; i < 8; i++) {                g_print("Modifier %d:", i);                for (j = 0; j < xmk->max_keypermod; j++)                        g_print(" %3d",                                xmk->modifiermap[i * xmk->max_keypermod + j]);                g_print("\n");        }}void print_keymap(void){        KeySym *keysym;        int i, j, min, max, numcodes;        XDisplayKeycodes(GDK_DISPLAY(), &min, &max);        keysym = XGetKeyboardMapping(GDK_DISPLAY(), min, max - min, &numcodes);        for (i = 0; i <= max - min; i++) {                g_print("KeyCode %3d:", min + i);                for (j = 0; j < numcodes; j++)                        g_print(" %8x", (unsigned int)keysym[i * numcodes + j]);                g_print("\n");        }        XFree(keysym);}void print_colormap(void){        GdkColormap *cm = NULL;        int i;        cm = gdk_colormap_get_system();        if (!cm || !cm->colors) {                g_print("NULL colormap!");                return;        }        g_print("%d colors in system map:\n", cm->size);        for (i = 0; i < cm->size; i++)                g_print("%02d: (%2d, %2d, %2d)\n", i, cm->colors[i].red,                        cm->colors[i].green, cm->colors[i].blue);}void print_gdkcolor_5(GdkColor array[5]){        int i;        char *type[] = { "      normal",                         "      active",                         "    prelight",                         "    selected",                         " insensitive" };        for (i = 0; i < 5; i++)                g_print("%s: (%3d, %3d, %3d)\n",                        type[i],                        array[i].red * 255 / 65535,                        array[i].green * 255 / 65535,                        array[i].blue * 255 / 65535);}void print_style_colors(void){        GtkWidget *widget;        GtkStyle *style;        widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);        gtk_widget_show(widget);        style = widget->style;        g_print("\nfg --\n");        print_gdkcolor_5(widget->style->fg);        g_print("\nbg --\n");        print_gdkcolor_5(widget->style->bg);        g_print("\nlight --\n");        print_gdkcolor_5(widget->style->light);        g_print("\ndark --\n");        print_gdkcolor_5(widget->style->dark);        g_print("\nmid --\n");        print_gdkcolor_5(widget->style->mid);        g_print("\ntext --\n");        print_gdkcolor_5(widget->style->text);        g_print("\nbase --\n");        print_gdkcolor_5(widget->style->base);        gtk_widget_destroy(widget);}void print_dirs(void){        g_print("        Home: %s\n", g_get_home_dir());        /*g_print("   User data: %s\n", g_get_user_data_dir());        g_print(" User config: %s\n", g_get_user_config_dir());        g_print("  User cache: %s\n", g_get_user_cache_dir());*/        g_print("         Tmp: %s\n", g_get_tmp_dir());        g_print("     Current: %s\n", g_get_current_dir());}#define RD_TRIALS 10000void random_difference(void){        int i, r1, r2, rd, diff;        srand(time(NULL));        for (i = 0, diff = 0; i < RD_TRIALS; i++) {                r1 = rand();                r2 = rand();                rd = r1 - r2;                if (rd < 0)                        rd = -rd;                diff += rd;        }        g_print("Random difference: %g\n",                ((double)diff) / RD_TRIALS / RAND_MAX);}/*        Test mechanism*/#define TESTS (sizeof (tests) / sizeof (*tests))struct {        const char *name;        void (*func)(void);} tests[] = {        { "modmap",       print_modmap       },        { "keymap",       print_keymap       },        { "colormap",     print_colormap     },        { "dirs",         print_dirs         },        { "style_colors", print_style_colors },        { "rand_diff",    random_difference  },};int main(int argc, char *argv[]){        int i;        gtk_init(&argc, &argv);        /* Display test info */        if (argc < 2) {                g_print("%d available tests --", TESTS);                for (i = 0; i < TESTS; i++)                        g_print(" %s", tests[i].name);                g_print("\n");                return 0;        }        /* Run tests */        for (i = 1; i < argc; i++) {                int j;                for (j = 0; j < TESTS; j++)                        if (!strcasecmp(tests[j].name, argv[i])) {                                g_print("Running test '%s' --\n",                                        tests[j].name);                                tests[j].func();                                g_print("\n");                                break;                        }                if (j == TESTS)                        g_print("Test '%s' not found!\n", argv[i]);        }        return 0;}

⌨️ 快捷键说明

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