📄 gnu_java_awt_peer_gtk_gtkwindowpeer.c
字号:
case GDK_F1: return VK_F1; case GDK_F2: return VK_F2; case GDK_F3: return VK_F3; case GDK_F4: return VK_F4; case GDK_F5: return VK_F5; case GDK_F6: return VK_F6; case GDK_F7: return VK_F7; case GDK_F8: return VK_F8; case GDK_F9: return VK_F9; case GDK_F10: return VK_F10; case GDK_F11: return VK_F11; case GDK_F12: return VK_F12; case GDK_F13: return VK_F13; case GDK_F14: return VK_F14; case GDK_F15: return VK_F15; case GDK_F16: return VK_F16; case GDK_F17: return VK_F17; case GDK_F18: return VK_F18; case GDK_F19: return VK_F19; case GDK_F20: return VK_F20; case GDK_F21: return VK_F21; case GDK_F22: return VK_F22; case GDK_F23: return VK_F23; case GDK_F24: return VK_F24; case GDK_Print: return VK_PRINTSCREEN; case GDK_KP_Insert: if (state & GDK_MOD2_MASK) return VK_NUMPAD0; else return VK_INSERT; case GDK_Insert: return VK_INSERT; case GDK_Help: return VK_HELP; case GDK_Meta_L: case GDK_Meta_R: return VK_META; case GDK_grave: return VK_BACK_QUOTE; case GDK_apostrophe: return VK_QUOTE; case GDK_KP_Up: if (state & GDK_MOD2_MASK) return VK_NUMPAD8; else return VK_KP_UP; case GDK_KP_Down: if (state & GDK_MOD2_MASK) return VK_NUMPAD2; else return VK_KP_DOWN; case GDK_KP_Left: if (state & GDK_MOD2_MASK) return VK_NUMPAD4; else return VK_KP_LEFT; case GDK_KP_Right: if (state & GDK_MOD2_MASK) return VK_NUMPAD6; else return VK_KP_RIGHT; case GDK_dead_grave: return VK_DEAD_GRAVE; case GDK_dead_acute: return VK_DEAD_ACUTE; case GDK_dead_circumflex: return VK_DEAD_CIRCUMFLEX; case GDK_dead_tilde: return VK_DEAD_TILDE; case GDK_dead_macron: return VK_DEAD_MACRON; case GDK_dead_breve: return VK_DEAD_BREVE; case GDK_dead_abovedot: return VK_DEAD_ABOVEDOT; case GDK_dead_diaeresis: return VK_DEAD_DIAERESIS; case GDK_dead_abovering: return VK_DEAD_ABOVERING; case GDK_dead_doubleacute: return VK_DEAD_DOUBLEACUTE; case GDK_dead_caron: return VK_DEAD_CARON; case GDK_dead_cedilla: return VK_DEAD_CEDILLA; case GDK_dead_ogonek: return VK_DEAD_OGONEK; case GDK_dead_iota: return VK_DEAD_IOTA; case GDK_dead_voiced_sound: return VK_DEAD_VOICED_SOUND; case GDK_dead_semivoiced_sound: return VK_DEAD_SEMIVOICED_SOUND; case GDK_ampersand: return VK_AMPERSAND; case GDK_asterisk: return VK_ASTERISK; case GDK_quotedbl: return VK_QUOTEDBL; case GDK_less: return VK_LESS; case GDK_greater: return VK_GREATER; case GDK_braceleft: return VK_BRACELEFT; case GDK_braceright: return VK_BRACERIGHT; case GDK_at: return VK_AT; case GDK_colon: return VK_COLON; case GDK_asciicircum: return VK_CIRCUMFLEX; case GDK_dollar: return VK_DOLLAR; case GDK_EuroSign: return VK_EURO_SIGN; case GDK_exclam: return VK_EXCLAMATION_MARK; case GDK_exclamdown: return VK_INVERTED_EXCLAMATION_MARK; case GDK_parenleft: return VK_LEFT_PARENTHESIS; case GDK_numbersign: return VK_NUMBER_SIGN; case GDK_plus: return VK_PLUS; case GDK_parenright: return VK_RIGHT_PARENTHESIS; case GDK_underscore: return VK_UNDERSCORE; /* return VK_FINAL; return VK_CONVERT; return VK_NONCONVERT; return VK_ACCEPT; */ case GDK_Mode_switch: return VK_MODECHANGE; /* return VK_KANA; */ case GDK_Kanji: return VK_KANJI; /* return VK_ALPHANUMERIC; */ case GDK_Katakana: return VK_KATAKANA; case GDK_Hiragana: return VK_HIRAGANA; /* return VK_FULL_WIDTH; return VK_HALF_WIDTH; return VK_ROMAN_CHARACTERS; return VK_ALL_CANDIDATES; */ case GDK_PreviousCandidate: return VK_PREVIOUS_CANDIDATE; case GDK_Codeinput: return VK_CODE_INPUT; /* return VK_JAPANESE_KATAKANA; return VK_JAPANESE_HIRAGANA; return VK_JAPANESE_ROMAN; */ case GDK_Kana_Lock: return VK_KANA_LOCK; /* return VK_INPUT_METHOD_ON_OFF; return VK_CUT; return VK_COPY; return VK_PASTE; return VK_UNDO; return VK_AGAIN; return VK_FIND; return VK_PROPS; return VK_STOP; return VK_COMPOSE; return VK_ALT_GRAPH; */ default: return VK_UNDEFINED; }}/* Return the AWT key location code for the given keysym or -1 if no keyval was found for the given hardware keycode. */static jintkeysym_to_awt_keylocation (GdkEventKey *event){ gint ukeyval; ukeyval = get_first_keyval_from_keymap (event); if (ukeyval < 0) return -1; /* VK_A through VK_Z */ if (ukeyval >= GDK_A && ukeyval <= GDK_Z) return AWT_KEY_LOCATION_STANDARD; /* VK_0 through VK_9 */ if (ukeyval >= GDK_0 && ukeyval <= GDK_9) return AWT_KEY_LOCATION_STANDARD; switch (ukeyval) { case GDK_Shift_L: case GDK_Control_L: case GDK_Alt_L: case GDK_Meta_L: return AWT_KEY_LOCATION_LEFT; case GDK_Shift_R: case GDK_Control_R: case GDK_Alt_R: case GDK_Meta_R: return AWT_KEY_LOCATION_RIGHT; case GDK_Return: case GDK_BackSpace: case GDK_Tab: case GDK_Cancel: case GDK_Clear: case GDK_Pause: case GDK_Caps_Lock: case GDK_Escape: case GDK_space: case GDK_Page_Up: case GDK_Page_Down: case GDK_End: case GDK_Home: case GDK_Left: case GDK_Up: case GDK_Right: case GDK_Down: case GDK_comma: case GDK_minus: case GDK_period: case GDK_slash: case GDK_semicolon: case GDK_equal: case GDK_bracketleft: case GDK_backslash: case GDK_bracketright: case GDK_Delete: case GDK_Scroll_Lock: case GDK_F1: case GDK_F2: case GDK_F3: case GDK_F4: case GDK_F5: case GDK_F6: case GDK_F7: case GDK_F8: case GDK_F9: case GDK_F10: case GDK_F11: case GDK_F12: case GDK_F13: case GDK_F14: case GDK_F15: case GDK_F16: case GDK_F17: case GDK_F18: case GDK_F19: case GDK_F20: case GDK_F21: case GDK_F22: case GDK_F23: case GDK_F24: case GDK_Print: case GDK_Insert: case GDK_Help: case GDK_grave: case GDK_apostrophe: case GDK_dead_grave: case GDK_dead_acute: case GDK_dead_circumflex: case GDK_dead_tilde: case GDK_dead_macron: case GDK_dead_breve: case GDK_dead_abovedot: case GDK_dead_diaeresis: case GDK_dead_abovering: case GDK_dead_doubleacute: case GDK_dead_caron: case GDK_dead_cedilla: case GDK_dead_ogonek: case GDK_dead_iota: case GDK_dead_voiced_sound: case GDK_dead_semivoiced_sound: case GDK_ampersand: case GDK_asterisk: case GDK_quotedbl: case GDK_less: case GDK_greater: case GDK_braceleft: case GDK_braceright: case GDK_at: case GDK_colon: case GDK_asciicircum: case GDK_dollar: case GDK_EuroSign: case GDK_exclam: case GDK_exclamdown: case GDK_parenleft: case GDK_numbersign: case GDK_plus: case GDK_parenright: case GDK_underscore: case GDK_Mode_switch: case GDK_Kanji: case GDK_Katakana: case GDK_Hiragana: case GDK_PreviousCandidate: case GDK_Codeinput: case GDK_Kana_Lock: return AWT_KEY_LOCATION_STANDARD; case GDK_KP_Enter: case GDK_KP_Page_Up: case GDK_KP_Page_Down: case GDK_KP_End: case GDK_KP_Home: case GDK_KP_Begin: case GDK_KP_0: case GDK_KP_1: case GDK_KP_2: case GDK_KP_3: case GDK_KP_4: case GDK_KP_5: case GDK_KP_6: case GDK_KP_7: case GDK_KP_8: case GDK_KP_9: case GDK_KP_Multiply: case GDK_KP_Add: case GDK_KP_Separator: case GDK_KP_Subtract: case GDK_KP_Decimal: case GDK_KP_Divide: case GDK_KP_Delete: case GDK_Num_Lock: case GDK_KP_Insert: case GDK_KP_Up: case GDK_KP_Down: case GDK_KP_Left: case GDK_KP_Right: return AWT_KEY_LOCATION_NUMPAD; default: return AWT_KEY_LOCATION_UNKNOWN; }}static jcharkeyevent_to_awt_keychar (GdkEventKey *event){ if (event->length > 0) { /* Translate GDK carriage return to Java linefeed. */ if (event->string[0] == 13) return VK_ENTER; else return event->string[0]; } else { switch (event->keyval) { case GDK_BackSpace: return VK_BACK_SPACE; case GDK_Tab: return VK_TAB; case GDK_Delete: case GDK_KP_Delete: return VK_DELETE; default: return AWT_KEY_CHAR_UNDEFINED; } }}/* Modifier key events need special treatment. In Sun's peer implementation, when a modifier key is pressed, the KEY_PRESSED event has that modifier in its modifiers list. The corresponding KEY_RELEASED event's modifier list does not contain the modifier. For example, pressing and releasing the shift key will produce a key press event with modifiers=Shift, and a key release event with no modifiers. GDK's key events behave in the exact opposite way, so this translation code is needed. */static jintkeyevent_state_to_awt_mods (GdkEventKey *event){ jint result = 0; guint state; if (event->type == GDK_KEY_PRESS) { state = event->state; if (event->keyval == GDK_Shift_L || event->keyval == GDK_Shift_R) result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; else { if (state & GDK_SHIFT_MASK) result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; } if (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R) result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; else { if (state & GDK_CONTROL_MASK) result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; } if (event->keyval == GDK_Alt_L || event->keyval == GDK_Alt_R) result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; else { if (state & GDK_MOD1_MASK) result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; } } else if (event->type == GDK_KEY_RELEASE) { state = event->state; if (event->keyval != GDK_Shift_L && event->keyval != GDK_Shift_R) { if (state & GDK_SHIFT_MASK) result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK; } if (event->keyval != GDK_Control_L && event->keyval != GDK_Control_R) { if (state & GDK_CONTROL_MASK) result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK; } if (event->keyval != GDK_Alt_L && event->keyval != GDK_Alt_R) { if (state & GDK_MOD1_MASK) result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK; } } return result;}static gboolean window_configure_cb (GtkWidget *widget, GdkEventConfigure *event, jobject peer);/* FIXME: we're currently seeing the double-activation that occurs with metacity and GTK. See http://bugzilla.gnome.org/show_bug.cgi?id=140977 for details. */static void window_get_frame_extents (GtkWidget *window, int *top, int *left, int *bottom, int *right);static void request_frame_extents (GtkWidget *window);static Bool property_notify_predicate (Display *display, XEvent *xevent, XPointer arg);static gboolean window_delete_cb (GtkWidget *widget, GdkEvent *event, jobject peer);static void window_destroy_cb (GtkWidget *widget, GdkEvent *event, jobject peer);static void window_show_cb (GtkWidget *widget, jobject peer);static void window_focus_state_change_cb (GtkWidget *widget, GParamSpec *pspec, jobject peer);static gboolean window_focus_in_cb (GtkWidget * widget, GdkEventFocus *event, jobject peer);static gboolean window_focus_out_cb (GtkWidget * widget, GdkEventFocus *event, jobject peer);static gboolean window_window_state_cb (GtkWidget *widget, GdkEvent *event, jobject peer);static gboolean window_property_changed_cb (GtkWidget *widget, GdkEventProperty *event, jobject peer);static void realize_cb (GtkWidget *widget, jobject peer);static gboolean
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -