diff --git a/src/cmt.c b/src/cmt.c
index 070dda5..b692a77 100644
--- a/src/cmt.c
+++ b/src/cmt.c
@@ -19,6 +19,7 @@
 #include <X11/Xatom.h>
 #include <xf86Xinput.h>
 #include <xf86_OSproc.h>
+#include <xkbsrv.h>
 #include <xserver-properties.h>
 
 #include "properties.h"
@@ -353,6 +354,11 @@
 {
 }
 
+static void
+KeyboardCtrl(DeviceIntPtr device, KeybdCtrl *ctrl)
+{
+}
+
 static Atom
 InitAtom(const char* name)
 {
@@ -397,6 +403,7 @@
     InputInfoPtr info = dev->public.devicePrivate;
     CmtDevicePtr cmt = info->private;
 
+    XkbRMLVOSet rmlvo = { 0 };
     Atom axes_labels[CMT_NUM_AXES] = { 0 };
     Atom btn_labels[CMT_NUM_BUTTONS] = { 0 };
     /* Map our button numbers to standard ones. */
@@ -468,6 +475,18 @@
         xf86InitValuatorDefaults(dev, i);
     }
 
+    /* Initialize keyboard device struct. Based on xf86-input-evdev,
+       do not allow any rule/layout/etc changes. */
+    xf86ReplaceStrOption(info->options, "xkb_rules", "evdev");
+    rmlvo.rules = xf86SetStrOption(info->options, "xkb_rules", NULL);
+    rmlvo.model = xf86SetStrOption(info->options, "xkb_model", NULL);
+    rmlvo.layout = xf86SetStrOption(info->options, "xkb_layout", NULL);
+    rmlvo.variant = xf86SetStrOption(info->options, "xkb_variant", NULL);
+    rmlvo.options = xf86SetStrOption(info->options, "xkb_options", NULL);
+
+    InitKeyboardDeviceStruct(dev, &rmlvo, NULL, KeyboardCtrl);
+    XkbFreeRMLVOSet(&rmlvo, FALSE);
+
     return Success;
 }
 
diff --git a/src/cmt.h b/src/cmt.h
index faa4dc2..9a3191f 100644
--- a/src/cmt.h
+++ b/src/cmt.h
@@ -82,6 +82,7 @@
 
     char* device;
     long  handlers;
+    unsigned long prev_key_state[NLONGS(KEY_CNT)];
 } CmtDeviceRec, *CmtDevicePtr;
 
 #endif
diff --git a/src/gesture.c b/src/gesture.c
index f86ab87..81c2b38 100755
--- a/src/gesture.c
+++ b/src/gesture.c
@@ -35,6 +35,9 @@
     {BTN_EXTRA, GESTURES_BUTTON_FORWARD}
 };
 
+// Conversion from kernel key codes to xorg key codes
+#define MIN_KEYCODE 8
+
 /*
  * Gestures timer functions
  */
@@ -205,10 +208,28 @@
     struct HardwareState hwstate = { 0 };
     int current_finger;
     bool has_gesture_fingers = false;
+    unsigned long key_state_diff[NLONGS(KEY_CNT)];
+    int code;
+    int value;
 
     if (!rec->interpreter || ! rec->slot_states)
         return;
 
+    /* handle changed keys */
+    for (i = 0; i < NLONGS(KEY_CNT); ++i) {
+        key_state_diff[i] = evdev->key_state_bitmask[i] ^
+                            cmt->prev_key_state[i];
+    }
+    for (i = 0; i < KEY_CNT; ++i) {
+        if (TestBit(i, key_state_diff)) {
+            code = i + MIN_KEYCODE;
+            value = TestBit(i, evdev->key_state_bitmask);
+            xf86PostKeyboardEvent(dev, code, value);
+        }
+    }
+    for (i = 0; i < NLONGS(KEY_CNT); ++i) {
+        cmt->prev_key_state[i] = evdev->key_state_bitmask[i];
+    }
     /* zero initialize all FingerStates to clear out previous state. */
     memset(rec->fingers, 0,
            Event_Get_Slot_Count(evdev) * sizeof(struct FingerState));
