diff -r 143cad71a2a6 virtinst/_util.py
--- a/virtinst/_util.py	Mon Mar 09 23:31:51 2009 -0400
+++ b/virtinst/_util.py	Wed Mar 11 09:26:50 2009 +0900
@@ -206,3 +206,4 @@ is_storage_capable = util.is_storage_cap
 is_storage_capable = util.is_storage_capable
 get_xml_path = util.get_xml_path
 lookup_pool_by_path = util.lookup_pool_by_path
+check_keytable = util.check_keytable
diff -r 143cad71a2a6 virtinst/cli.py
--- a/virtinst/cli.py	Mon Mar 09 23:31:51 2009 -0400
+++ b/virtinst/cli.py	Wed Mar 11 09:21:54 2009 +0900
@@ -351,7 +351,11 @@ def get_graphics(vnc, vncport, nographic
     if vncport:
         guest.graphics_dev.port = vncport
     if keymap:
-        guest.graphics_dev.keymap = keymap
+        checked_keymap = _util.check_keytable(keymap)
+        if checked_keymap:
+            guest.graphics_dev.keymap = checked_keymap
+        else:
+            raise ValueError, _("Didn't match keymap '%s' in keytable!" % keymap)
 
 def get_sound(sound, guest):
 
diff -r 143cad71a2a6 virtinst/util.py
--- a/virtinst/util.py	Mon Mar 09 23:31:51 2009 -0400
+++ b/virtinst/util.py	Wed Mar 11 09:25:38 2009 +0900
@@ -392,26 +392,7 @@ def default_keymap():
 
     kt = kt.lower()
 
-    # Try a simple lookup in the keytable
-    if keytable.keytable.has_key(kt.lower()):
-        keymap = keytable.keytable[kt]
-    else:
-        # Try a more intelligent lookup: strip out all '-' and '_', sort
-        # the keytable keys putting the longest first, then compare
-        # by string prefix
-        def len_cmp(a, b):
-            return len(b) - len(a)
-
-        clean_kt = kt.replace("-", "").replace("_", "")
-        sorted_keys = sorted(keytable.keytable.keys(), len_cmp)
-
-        for key in sorted_keys:
-            origkey = key
-            key = key.replace("-", "").replace("_","")
-
-            if clean_kt.startswith(key):
-                keymap = keytable.keytable[origkey]
-                break
+    keymap = check_keytable(kt)
 
     if not keymap:
         logging.debug("Didn't match keymap '%s' in keytable!" % kt)
@@ -599,6 +580,31 @@ def lookup_pool_by_path(conn, path):
                 return p
     return None
 
+def check_keytable(kt):
+    import keytable
+    keymap = None
+    # Try a simple lookup in the keytable
+    if keytable.keytable.has_key(kt.lower()):
+        return keytable.keytable[kt]
+    else:
+        # Try a more intelligent lookup: strip out all '-' and '_', sort
+        # the keytable keys putting the longest first, then compare
+        # by string prefix
+        def len_cmp(a, b):
+            return len(b) - len(a)
+
+        clean_kt = kt.replace("-", "").replace("_", "")
+        sorted_keys = sorted(keytable.keytable.keys(), len_cmp)
+
+        for key in sorted_keys:
+            origkey = key
+            key = key.replace("-", "").replace("_","")
+
+            if clean_kt.startswith(key):
+                return keytable.keytable[origkey]
+
+    return keymap
+
 def _test():
     import doctest
     doctest.testmod()
