diff --git a/gtweak/tweaks/tweak_interface.py b/gtweak/tweaks/tweak_interface.py
index 81dae59..175e50b 100644
--- a/gtweak/tweaks/tweak_interface.py
+++ b/gtweak/tweaks/tweak_interface.py
@@ -73,6 +73,21 @@ class CursorThemeSwitcher(GSettingsComboTweak):
                         os.path.exists(os.path.join(d, "cursors")))
         return valid
 
+class KeyThemeSwitcher(GSettingsComboTweak):
+    def __init__(self, **options):
+        GSettingsComboTweak.__init__(self,
+            "org.gnome.desktop.interface",
+            "gtk-key-theme",
+            make_combo_list_with_default(self._get_valid_key_themes(), "Default"),
+            **options)
+
+    def _get_valid_key_themes(self):
+        dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
+                 os.path.join(os.path.expanduser("~"), ".themes"))
+        valid = walk_directories(dirs, lambda d:
+                    os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")))
+        return valid
+
 sg = build_horizontal_sizegroup()
 
 TWEAK_GROUPS = (
@@ -81,6 +96,7 @@ TWEAK_GROUPS = (
             GSettingsSwitchTweak("org.gnome.desktop.interface", "menus-have-icons"),
             GSettingsSwitchTweak("org.gnome.desktop.interface", "buttons-have-icons"),
             GtkThemeSwitcher(size_group=sg),
+            KeyThemeSwitcher(size_group=sg),
             IconThemeSwitcher(size_group=sg),
             CursorThemeSwitcher(size_group=sg)),
 )
