NOT PART OF BUILD. Get key event a little closer.

git-svn-id: svn://10.0.0.236/trunk@39447 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
ramiro%netscape.com
1999-07-15 00:01:46 +00:00
parent 90e4feaf33
commit ccd68b52a6
3 changed files with 108 additions and 16 deletions

View File

@@ -483,10 +483,17 @@ nsAppShell::HandleKeyPressEvent(XEvent *event, nsWidget *aWidget)
{
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("KeyPress event for window 0x%lx\n",
event->xkey.window));
nsKeyEvent keyEvent;
KeySym keysym;
keysym = XKeycodeToKeysym(event->xkey.display, event->xkey.keycode, 0);
// Dont dispatch events for modifier keys pressed ALONE
if (nsKeyCode::KeyCodeIsModifier(event->xkey.keycode))
{
return;
}
nsKeyEvent keyEvent;
KeySym keysym = nsKeyCode::ConvertKeyCodeToKeySym(event->xkey.display,
event->xkey.keycode);
keyEvent.keyCode = nsKeyCode::ConvertKeySymToVirtualKey(keysym);
keyEvent.charCode = 0;
@@ -494,17 +501,53 @@ nsAppShell::HandleKeyPressEvent(XEvent *event, nsWidget *aWidget)
keyEvent.isShift = event->xkey.state & ShiftMask;
keyEvent.isControl = event->xkey.state & ControlMask;
keyEvent.isAlt = event->xkey.state & Mod1Mask;
keyEvent.point.x = 0;
keyEvent.point.y = 0;
keyEvent.point.x = event->xkey.x;
keyEvent.point.y = event->xkey.y;
keyEvent.message = NS_KEY_DOWN;
keyEvent.widget = aWidget;
keyEvent.eventStructType = NS_KEY_EVENT;
printf("keysym = %d, keycode = %d, char = %c\n",
keysym,
event->xkey.keycode,
keyEvent.keyCode);
// NS_ADDREF(aWidget);
aWidget->DispatchKeyEvent(keyEvent);
// NS_RELEASE(aWidget);
#if 1
keyEvent.keyCode = nsKeyCode::ConvertKeySymToVirtualKey(keysym);
keyEvent.charCode = 0;
keyEvent.time = event->xkey.time;
keyEvent.isShift = event->xkey.state & ShiftMask;
keyEvent.isControl = event->xkey.state & ControlMask;
keyEvent.isAlt = event->xkey.state & Mod1Mask;
keyEvent.point.x = event->xkey.x;
keyEvent.point.y = event->xkey.y;
keyEvent.message = NS_KEY_PRESS;
keyEvent.widget = aWidget;
keyEvent.eventStructType = NS_KEY_EVENT;
#if 1
char buf[2];
buf[0] = keyEvent.keyCode;
buf[1] = nsnull;
keyEvent.charCode = keyEvent.keyCode;
#endif
NS_ADDREF(aWidget);
aWidget->DispatchKeyEvent(keyEvent);
NS_ADDREF(aWidget);
NS_RELEASE(aWidget);
#endif
}
void
@@ -513,10 +556,15 @@ nsAppShell::HandleKeyReleaseEvent(XEvent *event, nsWidget *aWidget)
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("KeyRelease event for window 0x%lx\n",
event->xkey.window));
nsKeyEvent keyEvent;
KeySym keysym;
// Dont dispatch events for modifier keys pressed ALONE
if (nsKeyCode::KeyCodeIsModifier(event->xkey.keycode))
{
return;
}
keysym = XKeycodeToKeysym(event->xkey.display, event->xkey.keycode, 0);
nsKeyEvent keyEvent;
KeySym keysym = nsKeyCode::ConvertKeyCodeToKeySym(event->xkey.display,
event->xkey.keycode);
keyEvent.keyCode = nsKeyCode::ConvertKeySymToVirtualKey(keysym);
keyEvent.charCode = 0;
@@ -524,8 +572,8 @@ nsAppShell::HandleKeyReleaseEvent(XEvent *event, nsWidget *aWidget)
keyEvent.isShift = event->xkey.state & ShiftMask;
keyEvent.isControl = event->xkey.state & ControlMask;
keyEvent.isAlt = event->xkey.state & Mod1Mask;
keyEvent.point.x = 0;
keyEvent.point.y = 0;
keyEvent.point.x = event->xkey.x;
keyEvent.point.y = event->xkey.y;
keyEvent.message = NS_KEY_UP;
keyEvent.widget = aWidget;
keyEvent.eventStructType = NS_KEY_EVENT;
@@ -534,7 +582,7 @@ nsAppShell::HandleKeyReleaseEvent(XEvent *event, nsWidget *aWidget)
aWidget->DispatchKeyEvent(keyEvent);
NS_ADDREF(aWidget);
NS_RELEASE(aWidget);
}
void