diff -urN ooo_SRC680_m179_src.orig/vcl/aqua/inc/aquavclevents.hxx ooo_SRC680_m179_src/vcl/aqua/inc/aquavclevents.hxx
--- ooo_SRC680_m179_src.orig/vcl/aqua/inc/aquavclevents.hxx	2006-07-30 01:31:07.000000000 +0200
+++ ooo_SRC680_m179_src/vcl/aqua/inc/aquavclevents.hxx	2006-07-30 10:00:57.000000000 +0200
@@ -41,4 +41,10 @@
 const EventTypeSpec cMenuClosedEvent		= { kEventClassMenu,	kEventMenuClosed };
 const EventTypeSpec cMenuTargetItemEvent	= { kEventClassMenu,	kEventMenuTargetItem };
 
+/* Events for keyboard */
+const EventTypeSpec cKeyboardRawKeyEvents[]		= { { kEventClassKeyboard, kEventRawKeyDown},
+							    { kEventClassKeyboard, kEventRawKeyUp},
+							    { kEventClassKeyboard, kEventRawKeyRepeat},
+							    { kEventClassKeyboard, kEventRawKeyModifiersChanged} };
+
 #endif // INCLUDED_AQUAVCLEVENTS_HXX
diff -urN ooo_SRC680_m179_src.orig/vcl/aqua/source/window/salframe.cxx ooo_SRC680_m179_src/vcl/aqua/source/window/salframe.cxx
--- ooo_SRC680_m179_src.orig/vcl/aqua/source/window/salframe.cxx	2006-07-30 01:31:07.000000000 +0200
+++ ooo_SRC680_m179_src/vcl/aqua/source/window/salframe.cxx	2006-07-30 10:13:44.000000000 +0200
@@ -1141,6 +1141,82 @@
     return eventNotHandledErr;
 }
 
+void DbgPrintModifiers (UInt32 keyModifiers) {
+
+      fprintf (stderr, "PJ: ...... keyModifiers: ");
+      if (keyModifiers & cmdKey)
+	fprintf (stderr, "cmdKey, ");
+      if (keyModifiers & shiftKey)
+	fprintf (stderr, "shiftKey, ");
+      if (keyModifiers & alphaLock)
+	fprintf (stderr, "alphaLock (CapsLock), ");
+      if (keyModifiers & optionKey)
+	fprintf (stderr, "optionKey, ");
+      if (keyModifiers & controlKey)
+	fprintf (stderr, "controlKey, ");
+      fprintf (stderr, "\n");
+}
+
+OSStatus HandleKeyboardEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void * inUserData)
+{
+  UInt32 keyModifiers;
+
+  ImplSalYieldMutexAcquire();
+
+  fprintf(stderr, "PJ: HandleKeyboardEvent\n");
+
+  UInt32 eventKind = GetEventKind(inEvent);
+
+  switch (eventKind) {
+  case kEventRawKeyUp:
+  case kEventRawKeyDown:
+  case kEventRawKeyRepeat:
+
+    if (eventKind == kEventRawKeyDown)
+      fprintf(stderr, "PJ: ... kEventRawKeyDown\n");
+    else if (eventKind == kEventRawKeyUp)
+      fprintf(stderr, "PJ: ... kEventRawKeyUp\n");
+    else if (eventKind == kEventRawKeyRepeat)
+      fprintf(stderr, "PJ: ... kEventRawKeyRepeat\n");
+
+    UInt32 keyCode, keyboardType;
+    char keyChar;
+
+    GetEventParameter (inEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(keyCode), NULL, &keyCode);
+    fprintf(stderr, "PJ: ...... keyCode = %d (%x)\n", keyCode, keyCode);
+
+    GetEventParameter (inEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(keyChar), NULL, &keyChar);
+    fprintf(stderr, "PJ: ...... keyChar = %c\n", keyChar);
+
+    GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(keyModifiers), NULL, &keyModifiers);
+    fprintf(stderr, "PJ: ...... keyModifiers = %d (%x)\n", keyModifiers, keyModifiers);
+
+    DbgPrintModifiers(keyModifiers);
+
+    GetEventParameter (inEvent, kEventParamKeyboardType, typeUInt32, NULL, sizeof(keyboardType), NULL, &keyboardType);
+    fprintf(stderr, "PJ: ...... keyboardType = %d (%x)\n", keyboardType, keyboardType);
+
+    break;
+
+  case kEventRawKeyModifiersChanged:
+    fprintf(stderr, "PJ: ... kEventRawKeyModifiersChanged\n");
+
+    GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(keyModifiers), NULL, &keyModifiers);
+    fprintf(stderr, "PJ: ...... keyModifiers = %d (%x)\n", keyModifiers, keyModifiers);
+
+    DbgPrintModifiers(keyModifiers);
+
+    break;
+
+  default:
+    fprintf(stderr, "PJ: ... UNKNOWN!!!\n");
+  }
+
+  ImplSalYieldMutexRelease();
+
+  return noErr;
+}
+
 OSStatus GetOptimalWindowSize(Rect* rect);
 
 void DbgWhichSalFrameStyle(ULONG style)
@@ -1321,6 +1397,11 @@
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMenuPopulateEvent), 1, &cMenuPopulateEvent);
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMenuClosedEvent), 1, &cMenuClosedEvent);
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMenuTargetItemEvent), 1, &cMenuTargetItemEvent);
+
+    /* Keyboard event handlers*/
+
+    InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleKeyboardEvent), GetEventTypeCount(cKeyboardRawKeyEvents), cKeyboardRawKeyEvents);
+
 }
 
 OSStatus AquaSalFrame::InstallAndRegisterEventHandler(EventHandlerUPP upp, size_t nEvents, const EventTypeSpec* eventSpec)
