diff --git a/tools/keymap-gen b/tools/keymap-gen
index d4594b4..f0269e3 100755
--- a/tools/keymap-gen
+++ b/tools/keymap-gen
@@ -356,19 +356,19 @@
 
         if frommapname in database.ENUM_COLUMNS:
             fromtype = self.TYPE_ENUM
-        elif type(tolinux.keys()[0]) == str:
+        elif type(list(tolinux.keys())[0]) == str:
             fromtype = self.TYPE_STRING
         else:
             fromtype = self.TYPE_INT
 
         if tomapname in database.ENUM_COLUMNS:
             totype = self.TYPE_ENUM
-        elif type(fromlinux.values()[0]) == str:
+        elif type(list(fromlinux.values())[0]) == str:
             totype = self.TYPE_STRING
         else:
             totype = self.TYPE_INT
 
-        keys = tolinux.keys()
+        keys = list(tolinux.keys())
         keys.sort()
         if fromtype == self.TYPE_INT:
             keys = range(keys[-1] + 1)
@@ -402,7 +402,7 @@
             raise Exception("Unknown map %s, expected one of %s" % (
                             mapname, ", ".join(database.mapto.keys())))
 
-        keys = database.mapto[Database.MAP_LINUX].keys()
+        keys = list(database.mapto[Database.MAP_LINUX].keys())
         keys.sort()
         names = [database.mapname[Database.MAP_LINUX].get(key, "unnamed") for key in keys]
 
@@ -411,7 +411,7 @@
 
         if mapname in database.ENUM_COLUMNS:
             totype = self.TYPE_ENUM
-        elif type(database.mapto[mapname].values()[0]) == str:
+        elif type(list(database.mapto[mapname].values())[0]) == str:
             totype = self.TYPE_STRING
         else:
             totype = self.TYPE_INT
@@ -440,7 +440,7 @@
         if varname is None:
             varname = "name_map_%s_to_%s" % (frommapname, tomapname)
 
-        keys = tolinux.keys()
+        keys = list(tolinux.keys())
         keys.sort()
         if type(keys[0]) == int:
             keys = range(keys[-1] + 1)
@@ -470,7 +470,7 @@
             raise Exception("Unknown map %s, expected one of %s" % (
                             mapname, ", ".join(database.mapname.keys())))
 
-        keys = database.mapto[Database.MAP_LINUX].keys()
+        keys = list(database.mapto[Database.MAP_LINUX].keys())
         keys.sort()
         names = [database.mapname[Database.MAP_LINUX].get(key, "unnamed") for key in keys]
 
@@ -514,7 +514,7 @@
             raise Exception("Unknown map %s, expected one of %s" % (
                             mapname, ", ".join(database.mapname.keys())))
 
-        keys = database.mapto[Database.MAP_LINUX].keys()
+        keys = list(database.mapto[Database.MAP_LINUX].keys())
         keys.sort()
         names = [database.mapname[Database.MAP_LINUX].get(key, "unnamed") for key in keys]
 
@@ -537,7 +537,7 @@
                             mapname, ", ".join(database.mapfrom.keys())))
 
         tolinux = database.mapfrom[mapname]
-        keys = tolinux.keys()
+        keys = list(tolinux.keys())
         keys.sort()
         if mapname in database.mapname:
             names = database.mapname[mapname]
