📄 gtk+-2.4.14-xynth.diff
字号:
- if (key_up)- k->modifier_state &= ~GDK_CONTROL_MASK;- else- k->modifier_state |= GDK_CONTROL_MASK;- break;- case 0x38: /* Left Alt */- case 0xB8: /* Right Alt */- if (key_up)- k->modifier_state &= ~GDK_MOD1_MASK;- else- k->modifier_state |= GDK_MOD1_MASK;- break;- case 0x2A: /* Left Shift */- case 0x36: /* Right Shift */- if (key_up)- k->modifier_state &= ~GDK_SHIFT_MASK;- else- k->modifier_state |= GDK_SHIFT_MASK;- break;- }- continue; /* Don't generate events for modifiers */- }-- if (keycode == 0x3A /* Caps lock */)- {- if (!key_up)- k->caps_lock = !k->caps_lock;- - ioctl (k->fd, KDSETLED, k->caps_lock ? LED_CAP : 0);- continue;- }-- if (trans_table[keycode][0] >= GDK_F1 &&- trans_table[keycode][0] <= GDK_F35 &&- (k->modifier_state & GDK_MOD1_MASK))- {- if (key_up) /* Only switch on release */- {- gint vtnum = trans_table[keycode][0] - GDK_F1 + 1;-- /* Do the whole funky VT switch thing */- ioctl (gdk_display->console_fd, VT_ACTIVATE, vtnum);- }-- continue;- }-- keyval = 0;- mod = 0;- if (k->modifier_state & GDK_CONTROL_MASK)- mod = 2;- else if (k->modifier_state & GDK_SHIFT_MASK)- mod = 1;- do {- keyval = trans_table[keycode][mod--];- } while (!keyval && (mod >= 0));-- if (k->caps_lock && (keyval >= 'a') && (keyval <= 'z'))- keyval = toupper (keyval);-- if (!keyval)- continue;-- len = isprint (keyval) ? 1 : 0;- dummy[0] = keyval;- dummy[1] = 0;-- gdk_fb_handle_key (keycode,- keyval,- k->modifier_state,- 0,- (len)?g_strdup(dummy):NULL,- len,- key_up);- }-- return TRUE;-}--static gboolean-raw_open (GdkFBKeyboard *kb)-{- const char cursoroff_str[] = "\033[?1;0;0c";- struct termios ts;- - tcgetattr (gdk_display->tty_fd, &ts);- ts.c_cc[VTIME] = 0;- ts.c_cc[VMIN] = 1;- ts.c_lflag &= ~(ICANON|ECHO|ISIG);- ts.c_iflag = 0;- tcsetattr (gdk_display->tty_fd, TCSAFLUSH, &ts);-- tcsetpgrp (gdk_display->tty_fd, getpgrp());-- write_string (gdk_display->tty_fd, cursoroff_str);- - if (ioctl (gdk_display->tty_fd, KDSKBMODE, K_MEDIUMRAW) < 0)- {- g_warning ("setting tty to K_MEDIUMRAW failed (are you root?)");- return FALSE;- }-- kb->fd = gdk_display->tty_fd;- kb->io = g_io_channel_unix_new (kb->fd);- kb->io_tag = g_io_add_watch (kb->io,- G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL,- raw_io,- kb);- - return TRUE;-}--static void-raw_close (GdkFBKeyboard *kb)-{- struct termios ts;- const char cursoron_str[] = "\033c";-- write_string (gdk_display->tty_fd, cursoron_str);-- tcgetattr (gdk_display->tty_fd, &ts);- ts.c_lflag |= (ICANON|ECHO|ISIG);- tcsetattr (gdk_display->tty_fd, TCSAFLUSH, &ts);- - ioctl (gdk_display->tty_fd, KDSKBMODE, K_XLATE);-- g_source_remove (kb->io_tag);- g_io_channel_unref (kb->io);- /* don't close kb->fd, it is the tty from gdk_display */-}- static guint raw_lookup (GdkFBKeyboard *kb, const GdkKeymapKey *key)@@ -1530,7 +1078,7 @@ if (hardware_keycode <= 0 || hardware_keycode >= 256)- { + { if (keys) *keys = NULL; if (keyvals)@@ -1571,7 +1119,7 @@ if ((key_array && key_array->len > 0) || (keyval_array && keyval_array->len > 0))- { + { if (keys) *keys = (GdkKeymapKey*) key_array->data; @@ -1584,7 +1132,7 @@ *n_entries = keyval_array->len; } else- { + { if (keys) *keys = NULL; diff -U 3 -H -d -r -N gtk+-2.4.14/gdk/linux-fb/gdkmain-fb.c gtk+-2.4.14-xynth/gdk/linux-fb/gdkmain-fb.c--- gtk+-2.4.14/gdk/linux-fb/gdkmain-fb.c 2004-03-06 05:37:04.000000000 +0200+++ gtk+-2.4.14-xynth/gdk/linux-fb/gdkmain-fb.c 2005-12-08 18:05:04.000000000 +0200@@ -23,6 +23,12 @@ * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */+ +/*+ * Gtk-Xynth port is based on linux-fb port+ * Xynth Team+ * http://www.xynth.org+ */ #include <config.h> #include <unistd.h>@@ -69,795 +75,60 @@ { NULL } }; -static const GScannerConfig fb_modes_scanner_config =-{- (- " \t\n"- ) /* cset_skip_characters */,- (- G_CSET_a_2_z- G_CSET_A_2_Z- ) /* cset_identifier_first */,- (- G_CSET_a_2_z- "_-0123456789"- G_CSET_A_2_Z- ) /* cset_identifier_nth */,- ( "#\n" ) /* cpair_comment_single */,- - FALSE /* case_sensitive */,- - FALSE /* skip_comment_multi */,- TRUE /* skip_comment_single */,- FALSE /* scan_comment_multi */,- TRUE /* scan_identifier */,- TRUE /* scan_identifier_1char */,- FALSE /* scan_identifier_NULL */,- TRUE /* scan_symbols */,- FALSE /* scan_binary */,- FALSE /* scan_octal */,- FALSE /* scan_float */,- FALSE /* scan_hex */,- FALSE /* scan_hex_dollar */,- FALSE /* scan_string_sq */,- TRUE /* scan_string_dq */,- TRUE /* numbers_2_int */,- FALSE /* int_2_float */,- FALSE /* identifier_2_string */,- TRUE /* char_2_token */,- FALSE /* symbol_2_token */,- FALSE /* scope_0_fallback */,-}; -enum {- FB_MODE,- FB_ENDMODE,- FB_GEOMETRY,- FB_TIMINGS,- FB_LACED,- FB_HSYNC,- FB_VSYNC,- FB_CSYNC,- FB_EXTSYNC,- FB_DOUBLE,- FB_ACCEL-};--char *fb_modes_keywords[] =-{- "mode",- "endmode",- "geometry",- "timings",- "laced",- "hsync",- "vsync",- "csync",- "extsync",- "double",- "accel"-};--static int-fb_modes_parse_mode (GScanner *scanner,- struct fb_var_screeninfo *modeinfo,- char *specified_modename)-{- guint token;- int keyword;- int i;- char *modename;- int geometry[5];- int timings[7];- int vsync=0, hsync=0, csync=0, extsync=0, doublescan=0, laced=0, accel=1;- int found_geometry = 0;- int found_timings = 0;- - token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_SYMBOL)- return -1;- - keyword = GPOINTER_TO_INT (scanner->value.v_symbol);- if (keyword != FB_MODE)- return -1;-- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_STRING)- return -1;-- modename = g_strdup (scanner->value.v_string);- - token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_SYMBOL)- {- g_free (modename);- return -1; /* Not a valid keyword */- }- keyword = GPOINTER_TO_INT (scanner->value.v_symbol);- while ( keyword != FB_ENDMODE )- {-- switch (GPOINTER_TO_INT (scanner->value.v_symbol))- {- case FB_GEOMETRY:- for (i = 0; i < 5;i++) {- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_INT)- {- g_free (modename);- return -1; /* need a integer */- }- geometry[i] = scanner->value.v_int;- }- found_geometry = TRUE;- break;- case FB_TIMINGS:- for (i = 0; i < 7; i++) {- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_INT)- {- g_free (modename);- return -1; /* need a integer */- }- timings[i] = scanner->value.v_int;- }- found_timings = TRUE;- break;- case FB_LACED:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "true")==0)- laced = 1;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "false")==0)- laced = 0;- else- {- g_free (modename);- return -1;- }- break;- case FB_EXTSYNC:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "true")==0)- extsync = 1;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "false")==0)- extsync = 0;- else- {- g_free (modename);- return -1;- }- break;- case FB_DOUBLE:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "true")==0)- doublescan = 1;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "false")==0)- doublescan = 0;- else- {- g_free (modename);- return -1;- }- break;- case FB_VSYNC:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "high")==0)- vsync = 1;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "low")==0)- vsync = 0;- else- {- g_free (modename);- return -1;- }- break;- case FB_HSYNC:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "high")==0)- hsync = 1;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "low")==0)- hsync = 0;- else- {- g_free (modename);- return -1;- }- break;- case FB_CSYNC:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "high")==0)- csync = 1;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "low")==0)- csync = 0;- else- {- g_free (modename);- return -1;- }- break;- case FB_ACCEL:- token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_IDENTIFIER)- {- g_free (modename);- return -1;- }- if (g_ascii_strcasecmp (scanner->value.v_identifier, "false")==0)- accel = 0;- else if (g_ascii_strcasecmp (scanner->value.v_identifier, "true")==0)- accel = 1;- else- {- g_free (modename);- return -1;- }- break;- }- - token = g_scanner_get_next_token (scanner);- if (token != G_TOKEN_SYMBOL)- {- g_free (modename);- return -1; /* Not a valid keyword */- }- keyword = GPOINTER_TO_INT (scanner->value.v_symbol);- }-- if (strcmp (modename, specified_modename)== 0) {- /* we really should be parsing for rgba. regardless, if rgba isn't found,- * we can't assume that the original colors are valid for the new mode */- memset (&modeinfo->red, 0, sizeof (modeinfo->red));- memset (&modeinfo->green, 0, sizeof (modeinfo->green));- memset (&modeinfo->blue, 0, sizeof (modeinfo->blue));- memset (&modeinfo->transp, 0, sizeof (modeinfo->transp));-- if (!found_geometry)- g_warning ("Geometry not specified");-- if (found_geometry)- {- modeinfo->xres = geometry[0];- modeinfo->yres = geometry[1];- modeinfo->xres_virtual = geometry[2];- modeinfo->yres_virtual = geometry[3];- modeinfo->bits_per_pixel = geometry[4];- }- - if (!found_timings)- g_warning ("Timing not specified");- - if (found_timings)- {- modeinfo->pixclock = timings[0];- modeinfo->left_margin = timings[1];- modeinfo->right_margin = timings[2];- modeinfo->upper_margin = timings[3];- modeinfo->lower_margin = timings[4];- modeinfo->hsync_len = timings[5];- modeinfo->vsync_len = timings[6];- - modeinfo->vmode = 0;- if (laced)- modeinfo->vmode |= FB_VMODE_INTERLACED;- if (doublescan)- modeinfo->vmode |= FB_VMODE_DOUBLE;- - modeinfo->sync = 0;- if (hsync)- modeinfo->sync |= FB_SYNC_HOR_HIGH_ACT;- if (vsync)- modeinfo->sync |= FB_SYNC_VERT_HIGH_ACT;- if (accel)- modeinfo->accel_flags = FB_ACCELF_TEXT;- else- modeinfo->accel_flags = 0;- }-- g_free (modename);- return 1;- }- - g_free (modename);-
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -