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
This commit is contained in:
Thomas Fitzsimmons 2003-08-05 18:04:09 +00:00 committed by Thomas Fitzsimmons
parent b3c3af2f63
commit d0b8b6fbf6
12 changed files with 947 additions and 271 deletions

View file

@ -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)
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
{
default:
if (! isActionKey())
{
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();
}