diff -Nuar gnome-settings-daemon-3.6.1.orig/data/gsd-enums.h gnome-settings-daemon-3.6.1/data/gsd-enums.h
--- gnome-settings-daemon-3.6.1.orig/data/gsd-enums.h	2012-10-08 18:33:58.000000000 +0300
+++ gnome-settings-daemon-3.6.1/data/gsd-enums.h	2012-11-02 15:07:08.537921197 +0200
@@ -140,6 +140,7 @@
   GSD_INPUT_SOURCES_SWITCHER_ALT_SHIFT,
   GSD_INPUT_SOURCES_SWITCHER_CTRL_SHIFT,
   GSD_INPUT_SOURCES_SWITCHER_ALT_CTRL,
+  GSD_INPUT_SOURCES_SWITCHER_CAPS_LOCK,
 } GsdInputSourcesSwitcher;
 
 #endif /* __gsd_enums_h__ */
diff -Nuar gnome-settings-daemon-3.6.1.orig/plugins/keyboard/gsd-input-sources-switcher.c gnome-settings-daemon-3.6.1/plugins/keyboard/gsd-input-sources-switcher.c
--- gnome-settings-daemon-3.6.1.orig/plugins/keyboard/gsd-input-sources-switcher.c	2012-10-08 18:33:58.000000000 +0300
+++ gnome-settings-daemon-3.6.1/plugins/keyboard/gsd-input-sources-switcher.c	2012-11-02 15:10:56.471264556 +0200
@@ -254,6 +254,14 @@
       the_keys[6].keysym = GDK_KEY_ISO_Level3_Shift;
       the_keys[6].state = GDK_CONTROL_MASK;
       break;
+
+    case GSD_INPUT_SOURCES_SWITCHER_CAPS_LOCK:
+      n_keys = 1;
+      the_keys = g_new0 (Key, n_keys);
+
+      the_keys[0].keysym = GDK_KEY_Caps_Lock;
+      the_keys[0].state = 0;
+      break;
     }
 
   g_object_unref (settings);
