Commit d0b8b6fb by Thomas Fitzsimmons Committed by Thomas Fitzsimmons

GtkComponentPeer.java (postKeyEvent): Add keyLocation parameter.

2003-08-05  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/awt/peer/gtk/GtkComponentPeer.java (postKeyEvent):
	Add keyLocation parameter.
	* java/awt/event/KeyEvent.java (getKeyText): Fix "NumPad-"
	string.
	(paramString): Generate keyChar string according to keyChar, not
	keyCode.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
	(state_to_awt_mods): Handle ALT key.
	(keyevent_state_to_awt_mods): New function.
	(get_first_keyval_from_keymap): New function.
	(keysym_to_awt_keycode): Get virtual key code from keymap.
	Handle missing VK_ values.
	(keysym_to_awt_keylocation): New function.
	(keyevent_to_awt_keychar): New function.
	(generates_key_typed_event): Handle non-text-component case.
	Handle GDK_KP_Delete and GDK_KP_Enter.
	(awt_event_handler): Call new functions to get postKeyEvent
	parameters.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (gtkInit):
	Update postKeyEvent method signature.
	* jni/gtk-peer/gtkpeer.h: Add KEY_LOCATION defines.  Add missing
	VK_ defines.

From-SVN: r70178
parent b3c3af2f
2003-08-05 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java (postKeyEvent):
Add keyLocation parameter.
* java/awt/event/KeyEvent.java (getKeyText): Fix "NumPad-"
string.
(paramString): Generate keyChar string according to keyChar, not
keyCode.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
(state_to_awt_mods): Handle ALT key.
(keyevent_state_to_awt_mods): New function.
(get_first_keyval_from_keymap): New function.
(keysym_to_awt_keycode): Get virtual key code from keymap.
Handle missing VK_ values.
(keysym_to_awt_keylocation): New function.
(keyevent_to_awt_keychar): New function.
(generates_key_typed_event): Handle non-text-component case.
Handle GDK_KP_Delete and GDK_KP_Enter.
(awt_event_handler): Call new functions to get postKeyEvent
parameters.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (gtkInit):
Update postKeyEvent method signature.
* jni/gtk-peer/gtkpeer.h: Add KEY_LOCATION defines. Add missing
VK_ defines.
2003-08-05 Matthias Klose <doko@debian.org>
* aclocal.m4: check for libart-config binary
......
......@@ -351,10 +351,10 @@ public class GtkComponentPeer extends GtkGenericPeer
}
protected void postKeyEvent (int id, long when, int mods,
int keyCode, char keyChar)
int keyCode, char keyChar, int keyLocation)
{
q.postEvent (new KeyEvent (awtComponent, id, when, mods,
keyCode, keyChar));
keyCode, keyChar, keyLocation));
}
protected void postFocusEvent (int id, boolean temporary)
......
......@@ -57,6 +57,7 @@ public class GtkTextComponentPeer extends GtkComponentPeer
}
public native void connectHooks ();
public native int getCaretPosition ();
public native void setCaretPosition (int pos);
public native int getSelectionStart ();
......
......@@ -1503,7 +1503,7 @@ public class KeyEvent extends InputEvent
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
return "NumPad-" + (char) (keyCode - VK_NUMPAD0);
return "NumPad-" + (keyCode - VK_NUMPAD0);
case VK_F1:
case VK_F2:
case VK_F3:
......@@ -1642,63 +1642,64 @@ public class KeyEvent extends InputEvent
}
/**
* Returns a string identifying the event. This is formatted as the field
* name of the id type, followed by the keyCode, then the keyChar (if
* available), modifiers (if any), extModifiers (if any), and keyLocation.
* The keyChar is available unless the keyCode is Backspace, Tab, Enter,
* Escape, Numpad-[0-9], Delete, or a keyCode which is an action.
* Returns a string identifying the event. This is formatted as the
* field name of the id type, followed by the keyCode, then the
* keyChar, modifiers (if any), extModifiers (if any), and
* keyLocation.
*
* @return a string identifying the event
*/
public String paramString()
{
StringBuffer s = new StringBuffer();
switch (id)
{
case KEY_PRESSED:
s.append("KEY_PRESSED,keyCode=");
s.append("KEY_PRESSED");
break;
case KEY_RELEASED:
s.append("KEY_RELEASED,keyCode=");
s.append("KEY_RELEASED");
break;
case KEY_TYPED:
s.append("KEY_TYPED,keyCode=");
s.append("KEY_TYPED");
break;
default:
s.append("unknown type,keyCode=");
s.append("unknown type");
}
s.append(keyCode);
switch (keyCode)
{
default:
if (! isActionKey())
s.append(",keyCode=").append(keyCode);
s.append(",keyText=").append(getKeyText(keyCode));
s.append(",keyChar=");
if (isActionKey()
|| keyCode == VK_SHIFT
|| keyCode == VK_CONTROL
|| keyCode == VK_ALT)
s.append("Undefined keyChar");
else
{
s.append(",keyChar='").append(keyChar).append('\'');
break;
}
// Fallthrough.
case VK_BACK_SPACE:
case VK_TAB:
case VK_ENTER:
case VK_ESCAPE:
case VK_NUMPAD0:
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
case VK_DELETE:
s.append(',').append(getKeyText(keyCode));
/* This output string must be selected by examining keyChar
* rather than keyCode, because key code information is not
* included in KEY_TYPED events.
*/
if (keyChar == VK_BACK_SPACE
|| keyChar == VK_TAB
|| keyChar == VK_ENTER
|| keyChar == VK_ESCAPE
|| keyChar == VK_DELETE)
s.append(getKeyText(keyChar));
else
s.append("'").append(keyChar).append("'");
}
if ((modifiers & CONVERT_MASK) != 0)
s.append(",modifiers=").append(getModifiersExText(modifiers
& CONVERT_MASK));
if (modifiers != 0)
s.append(",extModifiers=").append(getModifiersExText(modifiers));
s.append(",keyLocation=KEY_LOCATION_");
switch (keyLocation)
{
......@@ -1717,6 +1718,7 @@ public class KeyEvent extends InputEvent
case KEY_LOCATION_NUMPAD:
s.append("NUMPAD");
}
return s.toString();
}
......
......@@ -618,6 +618,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectHooks
gdk_threads_enter ();
gtk_widget_realize (GTK_WIDGET (ptr));
if(GTK_IS_BUTTON(ptr))
connect_awt_hook (env, obj, 1, GTK_BUTTON(ptr)->event_window);
else
......
......@@ -155,7 +155,7 @@ Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit (JNIEnv *env, jclass clazz)
postExposeEventID = (*env)->GetMethodID (env, gtkcomponentpeer,
"postExposeEvent", "(IIII)V");
postKeyEventID = (*env)->GetMethodID (env, gtkcomponentpeer,
"postKeyEvent", "(IJIIC)V");
"postKeyEvent", "(IJIICI)V");
postFocusEventID = (*env)->GetMethodID (env, gtkcomponentpeer,
"postFocusEvent", "(IZ)V");
postAdjustmentEventID = (*env)->GetMethodID (env, gtkscrollbarpeer,
......
......@@ -47,6 +47,7 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_create
GtkWidget *text, *sw;
gdk_threads_enter ();
text = gtk_text_view_new ();
gtk_widget_show (text);
......@@ -169,6 +170,7 @@ Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkSetFont
PangoFontDescription *font_desc;
ptr = NSA_GET_PTR (env, obj);
text = GTK_WIDGET (TEXT_FROM_SW (ptr));
font_name = (*env)->GetStringUTFChars (env, jname, NULL);
......
......@@ -456,8 +456,6 @@ textcomponent_commit_cb (GtkIMContext *context,
const gchar *str,
jobject peer)
{
void *ptr;
/* str is a \0-terminated UTF-8 encoded character. */
gunichar2 *jc = g_utf8_to_utf16 (str, -1, NULL, NULL, NULL);
......@@ -473,7 +471,8 @@ textcomponent_commit_cb (GtkIMContext *context,
/* ... and assume no modifiers. */
0,
VK_UNDEFINED,
(jchar) jc[0]);
(jchar) jc[0],
AWT_KEY_LOCATION_UNKNOWN);
g_free (jc);
}
......
......@@ -142,77 +142,82 @@ struct graphics
#define AWT_KEY_PRESSED 401
#define AWT_KEY_RELEASED 402
#define VK_UNDEFINED 0
#define AWT_KEY_CHAR_UNDEFINED 0
#define VK_0 48
#define VK_1 49
#define VK_2 50
#define VK_3 51
#define VK_4 52
#define VK_5 53
#define VK_6 54
#define VK_7 55
#define VK_8 56
#define VK_9 57
#define VK_A 65
#define VK_ACCEPT 30
#define VK_ADD 107
#define VK_ALT 18
#define VK_B 66
#define VK_BACK_QUOTE 192
#define VK_BACK_SLASH 92
#define VK_BACK_SPACE 8
#define VK_C 67
#define AWT_KEY_LOCATION_UNKNOWN 0
#define AWT_KEY_LOCATION_STANDARD 1
#define AWT_KEY_LOCATION_LEFT 2
#define AWT_KEY_LOCATION_RIGHT 3
#define AWT_KEY_LOCATION_NUMPAD 4
/* Virtual Keys */
/* This list should be kept in the same order as the VK_ field
declarations in KeyEvent.java. */
#define VK_ENTER '\n'
#define VK_BACK_SPACE '\b'
#define VK_TAB '\t'
#define VK_CANCEL 3
#define VK_CAPS_LOCK 20
#define VK_CLEAR 12
#define VK_CLOSE_BRACKET 93
#define VK_COMMA 44
#define VK_SHIFT 16
#define VK_CONTROL 17
#define VK_CONVERT 28
#define VK_D 68
#define VK_DECIMAL 110
#define VK_DELETE 127
#define VK_DIVIDE 111
#define VK_DOWN 40
#define VK_E 69
#define VK_END 35
#define VK_ENTER 10
#define VK_ALT 18
#define VK_PAUSE 19
#define VK_CAPS_LOCK 20
#define VK_ESCAPE 27
#define VK_F 70
#define VK_F1 112
#define VK_F10 121
#define VK_F11 122
#define VK_F12 123
#define VK_F2 113
#define VK_F3 114
#define VK_F4 115
#define VK_F5 116
#define VK_F6 117
#define VK_F7 118
#define VK_F8 119
#define VK_F9 120
#define VK_FINAL 24
#define VK_G 71
#define VK_H 72
#define VK_HELP 156
#define VK_SPACE ' '
#define VK_PAGE_UP 33
#define VK_PAGE_DOWN 34
#define VK_END 35
#define VK_HOME 36
#define VK_I 73
#define VK_INSERT 155
#define VK_J 74
#define VK_K 75
#define VK_KANA 21
#define VK_KANJI 25
#define VK_L 76
#define VK_LEFT 37
#define VK_M 77
#define VK_META 157
#define VK_MODECHANGE 31
#define VK_MULTIPLY 106
#define VK_N 78
#define VK_NONCONVERT 29
#define VK_NUM_LOCK 144
#define VK_UP 38
#define VK_RIGHT 39
#define VK_DOWN 40
#define VK_COMMA ','
#define VK_MINUS '-'
#define VK_PERIOD '.'
#define VK_SLASH '/'
#define VK_0 '0'
#define VK_1 '1'
#define VK_2 '2'
#define VK_3 '3'
#define VK_4 '4'
#define VK_5 '5'
#define VK_6 '6'
#define VK_7 '7'
#define VK_8 '8'
#define VK_9 '9'
#define VK_SEMICOLON ';'
#define VK_EQUALS '='
#define VK_A 'A'
#define VK_B 'B'
#define VK_C 'C'
#define VK_D 'D'
#define VK_E 'E'
#define VK_F 'F'
#define VK_G 'G'
#define VK_H 'H'
#define VK_I 'I'
#define VK_J 'J'
#define VK_K 'K'
#define VK_L 'L'
#define VK_M 'M'
#define VK_N 'N'
#define VK_O 'O'
#define VK_P 'P'
#define VK_Q 'Q'
#define VK_R 'R'
#define VK_S 'S'
#define VK_T 'T'
#define VK_U 'U'
#define VK_V 'V'
#define VK_W 'W'
#define VK_X 'X'
#define VK_Y 'Y'
#define VK_Z 'Z'
#define VK_OPEN_BRACKET '['
#define VK_BACK_SLASH '\\'
#define VK_CLOSE_BRACKET ']'
#define VK_NUMPAD0 96
#define VK_NUMPAD1 97
#define VK_NUMPAD2 98
......@@ -223,35 +228,117 @@ struct graphics
#define VK_NUMPAD7 103
#define VK_NUMPAD8 104
#define VK_NUMPAD9 105
#define VK_O 79
#define VK_OPEN_BRACKET 91
#define VK_P 80
#define VK_PAGE_DOWN 34
#define VK_PAGE_UP 33
#define VK_PAUSE 19
#define VK_PERIOD 46
#define VK_PRINTSCREEN 154
#define VK_Q 81
#define VK_QUOTE 222
#define VK_R 82
#define VK_RIGHT 39
#define VK_S 83
#define VK_SCROLL_LOCK 145
#define VK_SEMICOLON 59
#define VK_MULTIPLY 106
#define VK_ADD 107
#define VK_SEPARATER 108
#define VK_SEPARATOR 108
#define VK_SHIFT 16
#define VK_SLASH 47
#define VK_SPACE 32
#define VK_SUBTRACT 109
#define VK_T 84
#define VK_TAB 9
#define VK_U 85
#define VK_UP 38
#define VK_V 86
#define VK_W 87
#define VK_X 88
#define VK_Y 89
#define VK_Z 90
#define VK_DECIMAL 110
#define VK_DIVIDE 111
#define VK_DELETE 127
#define VK_NUM_LOCK 144
#define VK_SCROLL_LOCK 145
#define VK_F1 112
#define VK_F2 113
#define VK_F3 114
#define VK_F4 115
#define VK_F5 116
#define VK_F6 117
#define VK_F7 118
#define VK_F8 119
#define VK_F9 120
#define VK_F10 121
#define VK_F11 122
#define VK_F12 123
#define VK_F13 61440
#define VK_F14 61441
#define VK_F15 61442
#define VK_F16 61443
#define VK_F17 61444
#define VK_F18 61445
#define VK_F19 61446
#define VK_F20 61447
#define VK_F21 61448
#define VK_F22 61449
#define VK_F23 61450
#define VK_F24 61451
#define VK_PRINTSCREEN 154
#define VK_INSERT 155
#define VK_HELP 156
#define VK_META 157
#define VK_BACK_QUOTE 192
#define VK_QUOTE 222
#define VK_KP_UP 224
#define VK_KP_DOWN 225
#define VK_KP_LEFT 226
#define VK_KP_RIGHT 227
#define VK_DEAD_GRAVE 128
#define VK_DEAD_ACUTE 129
#define VK_DEAD_CIRCUMFLEX 130
#define VK_DEAD_TILDE 131
#define VK_DEAD_MACRON 132
#define VK_DEAD_BREVE 133
#define VK_DEAD_ABOVEDOT 134
#define VK_DEAD_DIAERESIS 135
#define VK_DEAD_ABOVERING 136
#define VK_DEAD_DOUBLEACUTE 137
#define VK_DEAD_CARON 138
#define VK_DEAD_CEDILLA 139
#define VK_DEAD_OGONEK 140
#define VK_DEAD_IOTA 141
#define VK_DEAD_VOICED_SOUND 142
#define VK_DEAD_SEMIVOICED_SOUND 143
#define VK_AMPERSAND 150
#define VK_ASTERISK 151
#define VK_QUOTEDBL 152
#define VK_LESS 153
#define VK_GREATER 160
#define VK_BRACELEFT 161
#define VK_BRACERIGHT 162
#define VK_AT 512
#define VK_COLON 513
#define VK_CIRCUMFLEX 514
#define VK_DOLLAR 515
#define VK_EURO_SIGN 516
#define VK_EXCLAMATION_MARK 517
#define VK_INVERTED_EXCLAMATION_MARK 518
#define VK_LEFT_PARENTHESIS 519
#define VK_NUMBER_SIGN 520
#define VK_PLUS 521
#define VK_RIGHT_PARENTHESIS 522
#define VK_UNDERSCORE 523
#define VK_FINAL 24
#define VK_CONVERT 28
#define VK_NONCONVERT 29
#define VK_ACCEPT 30
#define VK_MODECHANGE 31
#define VK_KANA 21
#define VK_KANJI 25
#define VK_ALPHANUMERIC 240
#define VK_KATAKANA 241
#define VK_HIRAGANA 242
#define VK_FULL_WIDTH 243
#define VK_HALF_WIDTH 244
#define VK_ROMAN_CHARACTERS 245
#define VK_ALL_CANDIDATES 256
#define VK_PREVIOUS_CANDIDATE 257
#define VK_CODE_INPUT 258
#define VK_JAPANESE_KATAKANA 259
#define VK_JAPANESE_HIRAGANA 260
#define VK_JAPANESE_ROMAN 261
#define VK_KANA_LOCK 262
#define VK_INPUT_METHOD_ON_OFF 263
#define VK_CUT 65489
#define VK_COPY 65485
#define VK_PASTE 65487
#define VK_UNDO 65483
#define VK_AGAIN 65481
#define VK_FIND 65488
#define VK_PROPS 65482
#define VK_STOP 65480
#define VK_COMPOSE 65312
#define VK_ALT_GRAPH 65406
#define VK_UNDEFINED 0
#define AWT_FOCUS_LOST 1004
#define AWT_FOCUS_GAINED 1005
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment