📄 gtk+-2.4.14-xynth.diff
字号:
+ return TRUE; } /*diff -U 3 -H -d -r -N gtk+-2.4.14/gdk/linux-fb/gdkgeometry-fb.c gtk+-2.4.14-xynth/gdk/linux-fb/gdkgeometry-fb.c--- gtk+-2.4.14/gdk/linux-fb/gdkgeometry-fb.c 2004-03-06 05:37:04.000000000 +0200+++ gtk+-2.4.14-xynth/gdk/linux-fb/gdkgeometry-fb.c 2005-12-08 18:05:04.000000000 +0200@@ -49,9 +49,7 @@ dest_rect.x, dest_rect.y, dest_rect.width, dest_rect.height, FALSE, FALSE);- gdk_shadow_fb_update (dest_rect.x - dx, dest_rect.y - dy,- dest_rect.x - dx + dest_rect.width,- dest_rect.y - dy + dest_rect.height);+ gdk_shadow_fb_update(GDK_DRAWABLE_IMPL(window), dest_rect.x - dx, dest_rect.y - dy, dest_rect.x - dx + dest_rect.width, dest_rect.y - dy + dest_rect.height); } gdk_window_invalidate_region (window, invalidate_region, TRUE);diff -U 3 -H -d -r -N gtk+-2.4.14/gdk/linux-fb/gdkglobals-fb.c gtk+-2.4.14-xynth/gdk/linux-fb/gdkglobals-fb.c--- gtk+-2.4.14/gdk/linux-fb/gdkglobals-fb.c 2004-03-06 06:00:07.000000000 +0200+++ gtk+-2.4.14-xynth/gdk/linux-fb/gdkglobals-fb.c 2005-12-08 18:05:04.000000000 +0200@@ -45,4 +45,3 @@ GdkGC *_gdk_fb_screen_gc = NULL; GdkAtom _gdk_selection_property; GdkFBAngle _gdk_fb_screen_angle = GDK_FB_0_DEGREES;-volatile gboolean _gdk_fb_is_active_vt = FALSE;diff -U 3 -H -d -r -N gtk+-2.4.14/gdk/linux-fb/gdkkeyboard-fb.c gtk+-2.4.14-xynth/gdk/linux-fb/gdkkeyboard-fb.c--- gtk+-2.4.14/gdk/linux-fb/gdkkeyboard-fb.c 2004-03-06 05:37:04.000000000 +0200+++ gtk+-2.4.14-xynth/gdk/linux-fb/gdkkeyboard-fb.c 2005-12-08 18:05:04.000000000 +0200@@ -16,6 +16,12 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */+ +/*+ * Gtk-Xynth port is based on linux-fb port+ * Xynth Team+ * http://www.xynth.org+ */ #include <config.h> #include <gdk/gdk.h>@@ -36,24 +42,13 @@ typedef struct _GdkFBKeyboardDevice GdkFBKeyboardDevice; struct _GdkFBKeyboard {- gint fd;- GIOChannel *io;- gint io_tag;- guint modifier_state; guint caps_lock : 1;-- gint group;- gint level;- GdkFBKeyboardDevice *dev; }; struct _GdkFBKeyboardDevice { char *name;- gboolean (*open)(GdkFBKeyboard *kb);- void (*close)(GdkFBKeyboard *kb);- guint (*lookup_key) (GdkFBKeyboard *kb, const GdkKeymapKey *key); gboolean (*translate_keyboard_state) (GdkFBKeyboard *kb,@@ -73,15 +68,11 @@ GdkKeymapKey **keys, guint **keyvals, gint *n_entries);-- gpointer driver_data; }; static GdkFBKeyboard *gdk_fb_keyboard = NULL; static GdkKeymap *default_keymap = NULL; -static gboolean xlate_open (GdkFBKeyboard *kb);-static void xlate_close (GdkFBKeyboard *kb); static guint xlate_lookup (GdkFBKeyboard *kb, const GdkKeymapKey *key); static gboolean xlate_translate (GdkFBKeyboard *kb,@@ -102,8 +93,6 @@ guint **keyvals, gint *n_entries); -static gboolean raw_open (GdkFBKeyboard *kb);-static void raw_close (GdkFBKeyboard *kb); static guint raw_lookup (GdkFBKeyboard *kb, const GdkKeymapKey *key); static gboolean raw_translate (GdkFBKeyboard *kb,@@ -129,8 +118,6 @@ { { "xlate",- xlate_open,- xlate_close, xlate_lookup, xlate_translate, xlate_get_for_keyval,@@ -138,8 +125,6 @@ }, { "raw",- raw_open,- raw_close, raw_lookup, raw_translate, raw_get_for_keyval,@@ -165,7 +150,6 @@ PangoDirection gdk_keymap_get_direction (GdkKeymap *keymap) {- /* FIXME: Only supports LTR keymaps at the moment */ return PANGO_DIRECTION_LTR; } @@ -184,7 +168,6 @@ gdk_fb_keyboard = g_new0 (GdkFBKeyboard, 1); keyb = gdk_fb_keyboard;- keyb->fd = -1; keyb_type = getenv ("GDK_KEYBOARD_TYPE"); @@ -205,38 +188,10 @@ keyb->dev = &keyb_devs[i]; - if (open_dev)- return gdk_fb_keyboard_open ();- else return TRUE; } gboolean-gdk_fb_keyboard_open (void)-{- GdkFBKeyboard *keyb;- GdkFBKeyboardDevice *device;-- keyb = gdk_fb_keyboard;- device = keyb->dev;-- if (!device->open(keyb))- {- g_warning ("Keyboard driver open failed");- return FALSE;- }-- return TRUE;-}--void -gdk_fb_keyboard_close (void)-{- gdk_fb_keyboard->dev->close(gdk_fb_keyboard);-}---gboolean gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, guint keyval, GdkKeymapKey **keys,@@ -306,59 +261,25 @@ consumed_modifiers); } -static void-gdk_fb_handle_key (guint hw_keycode,- guint keyval,- guint modifier_state,- guint8 group,- gchar *string,- gint string_length,- gboolean key_up)+void gdk_fb_handle_key (guint hw_keycode, guint keyval, guint modifier_state, guint8 group, gchar *string, gint string_length, gboolean key_up) {- GdkWindow *win;- GdkEvent *event;+ GdkWindow *win;+ GdkEvent *event; - /* handle some magic keys */- if (key_up &&- (modifier_state & GDK_CONTROL_MASK) &&- (modifier_state & GDK_MOD1_MASK))- {- if (keyval == GDK_BackSpace)- {- ioctl (gdk_display->tty_fd, KDSKBMODE, K_XLATE);- exit (1);+ win = gdk_fb_keyboard_event_window (gdk_fb_window_find_focus (), key_up ? GDK_KEY_RELEASE : GDK_KEY_PRESS);+ if (win) {+ event = gdk_event_make (win, key_up ? GDK_KEY_RELEASE : GDK_KEY_PRESS, TRUE);+ event->key.state = modifier_state;+ event->key.keyval = keyval;+ event->key.string = string;+ event->key.length = string_length;+ event->key.hardware_keycode = hw_keycode;+ event->key.group = group;+ } else {+ g_free (string); }- - if (keyval == GDK_Return)- gdk_fb_redraw_all ();- }-- win = gdk_fb_keyboard_event_window (gdk_fb_window_find_focus (),- key_up ? GDK_KEY_RELEASE : GDK_KEY_PRESS);- if (win)- {- event = gdk_event_make (win,- key_up ? GDK_KEY_RELEASE : GDK_KEY_PRESS,- TRUE);- - event->key.state = modifier_state;- event->key.keyval = keyval;- event->key.string = string;- event->key.length = string_length;- event->key.hardware_keycode = hw_keycode;- event->key.group = group;- }- else- g_free (string); } -/******************************************************- ********* Device specific keyboard code **************- ******************************************************/---/* XLATE keyboard driver */- struct { char *str; guint code;@@ -377,7 +298,7 @@ {"\x32\x31\x7e", GDK_F10}, {"\x32\x33\x7e", GDK_F11}, {"\x32\x34\x7e", GDK_F12},- + {"\x32\x35\x7e", GDK_F1, GDK_SHIFT_MASK}, {"\x32\x36\x7e", GDK_F2, GDK_SHIFT_MASK}, {"\x32\x38\x7e", GDK_F3, GDK_SHIFT_MASK},@@ -680,206 +601,6 @@ {0, 0}, }; -static gboolean-iscode (char *code, char *str, int str_max)-{- int i;-- for (i = 0; code[i] && (i < str_max); i++)- {- if (code[i] != str[i])- return FALSE;- }- return (code[i] == 0);-}--static gboolean-xlate_io (GIOChannel *gioc,- GIOCondition cond,- gpointer data)-{- GdkFBKeyboard *keyb = (GdkFBKeyboard *)data;- guchar buf[128];- guint keycode;- guint modifier;- gboolean handled;- int i, n, j;- int left;- - n = read (keyb->fd, buf, sizeof(buf));- if (n <= 0)- g_error ("Nothing from keyboard!");-- for (i = 0; i < n; )- {- handled = FALSE;- modifier = 0;- if ((buf[i] == 27) && (i+1 != n)) /* Escape */- {- /* Esc is not the last char in buffer, interpret as code sequence */- if (buf[i+1] == '[')- {- i += 2;- left = n-i;- if (left <= 0)- return TRUE;-- for (j=0;j<G_N_ELEMENTS (xlate_codes);j++)- {- if (iscode (xlate_codes[j].str, &buf[i], left))- {- /* Ctrl-Alt Return can't be pressed in the XLATE driver,- * use Shift F1 instead */- if ((xlate_codes[j].code == GDK_F1) &&- (xlate_codes[j].modifier & GDK_SHIFT_MASK))- gdk_fb_redraw_all ();-- if ((xlate_codes[j].code == GDK_F2) &&- (xlate_codes[j].modifier & GDK_SHIFT_MASK))- {- static gint deg = 0;- deg = (deg + 1) % 4;- - gdk_fb_set_rotation (deg);- }-- if ((xlate_codes[j].code == GDK_F8) &&- (xlate_codes[j].modifier & GDK_SHIFT_MASK))- exit (1);-- - gdk_fb_handle_key (xlate_codes[j].code,- xlate_codes[j].code,- xlate_codes[j].modifier,- 0,- NULL,- 0,- FALSE);- gdk_fb_handle_key (xlate_codes[j].code,- xlate_codes[j].code,- xlate_codes[j].modifier,- 0,- NULL,- 0,- TRUE);- i += strlen (xlate_codes[j].str);- handled = TRUE;- break;- }- }- }- else- {- /* Alt-key */- modifier |= GDK_MOD1_MASK;- i++;- }- }- if (!handled)- {- char dummy[2];- gint len;- - keycode = xlate_chars[buf[i]].code;- if (keycode == 0)- keycode = buf[i];- modifier |= xlate_chars[buf[i]].modifier;- - dummy[0] = keycode;- dummy[1] = 0;-- len = ((keycode < 255) && isprint (keycode)) ? 1 : 0;- gdk_fb_handle_key (keycode,- keycode,- modifier,- 0,- (len)?g_strdup(dummy) : NULL,- len,- FALSE);- gdk_fb_handle_key (keycode,- keycode,- modifier,- 0,- (len)?g_strdup(dummy) : NULL,- len,- TRUE);- i++;- }- }- return TRUE;-}--static gboolean-write_string (gint fd,- const gchar *str)-{- gsize to_write = strlen (str);-- while (to_write > 0)- {- gssize count = write (fd, str, to_write);- if (count < 0)- {- if (errno != EINTR)- return FALSE;- }- else- {- to_write -= count;- str += count;- }- }-- return TRUE;-}--static gboolean-xlate_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);- - ioctl (gdk_display->tty_fd, KDSKBMODE, K_XLATE);-- 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,- xlate_io,- kb);- - return TRUE;-}--static void-xlate_close (GdkFBKeyboard *kb)-{- struct termios ts;- const char cursoron_str[] = "\033c\033[3g\033]R";-- 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);- - g_source_remove (kb->io_tag);- g_io_channel_unref (kb->io);- kb->fd = -1;- /* don't close kb->fd, it is the tty from gdk_display */-}- static guint xlate_lookup (GdkFBKeyboard *kb, const GdkKeymapKey *key)@@ -1244,179 +965,6 @@ {0, 0, 0}, }; -static gboolean-raw_io (GIOChannel *gioc,- GIOCondition cond,- gpointer data)-{- GdkFBKeyboard *k = data;- guchar buf[128];- int i, n;-- n = read (k->fd, buf, sizeof(buf));- if (n <= 0)- g_error("Nothing from keyboard!");-- for (i = 0; i < n; i++)- {- guchar keycode;- gboolean key_up;- char dummy[2];- int len;- int mod;- guint keyval;-- keycode = buf[i] & 0x7F;- key_up = buf[i] & 0x80;-- if (keycode > G_N_ELEMENTS (trans_table))- {- g_warning ("Unknown keycode");- continue;- }-- if ( (keycode == 0x1D) /* left Ctrl */- || (keycode == 0x9D) /* right Ctrl */- || (keycode == 0x38) /* left Alt */- || (keycode == 0xB8) /* right Alt */- || (keycode == 0x2A) /* left Shift */- || (keycode == 0x36) /* right Shift */)- {- switch (keycode)- {- case 0x1D: /* Left Ctrl */- case 0x9D: /* Right Ctrl */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -