aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/keymaps.csv2
-rwxr-xr-xtools/keymap-gen41
2 files changed, 30 insertions, 13 deletions
diff --git a/data/keymaps.csv b/data/keymaps.csv
index 9b63d75..d0367c3 100644
--- a/data/keymaps.csv
+++ b/data/keymaps.csv
@@ -1,5 +1,5 @@
"Linux Name","Linux Keycode","OS-X Name","OS-X Keycode","AT set1 keycode","AT set2 keycode","AT set3 keycode","USB Keycodes","Win32 Name","Win32 Keycode","Xwin XT","Xfree86 KBD XT","X11 keysym name","X11 keysym","HTML code","XKB key name","QEMU QKeyCode","Sun KBD","Apple ADB"
-KEY_RESERVED,0,,,,,,,,,,,,,,,unmapped,,
+KEY_RESERVED,0,,0xff,,,,,,,,,,,,,unmapped,,0xff
KEY_ESC,1,Escape,0x35,0x01,0x76,0x08,41,VK_ESCAPE,0x1b,1,1,XK_Escape,0xff1b,Escape,ESC,esc,0x1d,0x35
KEY_1,2,ANSI_1,0x12,0x02,0x16,0x16,30,VK_1,0x31,2,2,XK_1,0x0031,Digit1,AE01,1,0x1e,0x12
KEY_1,2,ANSI_1,0x12,0x02,0x16,0x16,30,VK_1,0x31,2,2,XK_exclam,0x0021,Digit1,AE01,1,0x1e,0x12
diff --git a/tools/keymap-gen b/tools/keymap-gen
index f3a8634..34de305 100755
--- a/tools/keymap-gen
+++ b/tools/keymap-gen
@@ -320,7 +320,7 @@ class LanguageSrcGenerator(LanguageGenerator):
TYPE_STRING = "string"
TYPE_ENUM = "enum"
- def _array_start(self, varname, length, fromtype, totype):
+ def _array_start(self, varname, length, defvalue, fromtype, totype):
raise NotImplementedError()
def _array_end(self, fromtype, totype):
@@ -367,14 +367,18 @@ class LanguageSrcGenerator(LanguageGenerator):
else:
keymax = len(keys)
- self._array_start(varname, keymax, fromtype, totype)
+ defvalue = fromlinux.get(0, None)
+ if fromtype == self.TYPE_ENUM:
+ self._array_start(varname, keymax, defvalue, fromtype, totype)
+ else:
+ self._array_start(varname, keymax, None, fromtype, totype)
for src in keys:
linux = tolinux.get(src, None)
if linux is None:
dst = None
else:
- dst = fromlinux.get(linux, None)
+ dst = fromlinux.get(linux, defvalue)
comment = "%s -> %s -> %s" % (self._label(database, frommapname, src, linux),
self._label(database, Database.MAP_LINUX, linux, linux),
@@ -401,11 +405,12 @@ class LanguageSrcGenerator(LanguageGenerator):
else:
totype = self.TYPE_INT
- self._array_start(varname, len(keys), self.TYPE_INT, totype)
+ self._array_start(varname, len(keys), None, self.TYPE_INT, totype)
+ defvalue = database.mapto[mapname].get(0, None)
for i in range(len(keys)):
key = keys[i]
- dst = database.mapto[mapname].get(key, None)
+ dst = database.mapto[mapname].get(key, defvalue)
self._array_entry(i, dst, names[i], self.TYPE_INT, totype)
self._array_end(self.TYPE_INT, totype)
@@ -434,7 +439,7 @@ class LanguageSrcGenerator(LanguageGenerator):
else:
fromtype = self.TYPE_STRING
- self._array_start(varname, len(keys), fromtype, self.TYPE_STRING)
+ self._array_start(varname, len(keys), None, fromtype, self.TYPE_STRING)
for src in keys:
linux = tolinux.get(src, None)
@@ -461,7 +466,7 @@ class LanguageSrcGenerator(LanguageGenerator):
if varname is None:
varname = "name_table_%s" % mapname
- self._array_start(varname, len(keys), self.TYPE_INT, self.TYPE_STRING)
+ self._array_start(varname, len(keys), None, self.TYPE_INT, self.TYPE_STRING)
for i in range(len(keys)):
key = keys[i]
@@ -553,7 +558,7 @@ class CLanguageGenerator(LanguageSrcGenerator):
print(" * %s" % line)
print("*/")
- def _array_start(self, varname, length, fromtype, totype):
+ def _array_start(self, varname, length, defvalue, fromtype, totype):
self._varname = varname;
totypename = self.strtypename if totype == self.TYPE_STRING else self.inttypename
if fromtype in (self.TYPE_INT, self.TYPE_ENUM):
@@ -567,6 +572,18 @@ class CLanguageGenerator(LanguageSrcGenerator):
print(" const %s to;" % totypename)
print("} %s[] = {" % varname)
+ if defvalue != None:
+ if totype == self.TYPE_ENUM:
+ if type(length) == str:
+ print(" [0 ... %s-1] = %s," % (length, defvalue))
+ else:
+ print(" [0 ... 0x%x-1] = %s," % (length, defvalue))
+ else:
+ if type(length) == str:
+ print(" [0 ... %s-1] = 0x%x," % (length, defvalue))
+ else:
+ print(" [0 ... 0x%x-1] = 0x%x," % (length, defvalue))
+
def _array_end(self, fromtype, totype):
print("};")
print("const unsigned int %s_len = sizeof(%s)/sizeof(%s[0]);" %
@@ -596,7 +613,7 @@ class CLanguageGenerator(LanguageSrcGenerator):
class CppLanguageGenerator(CLanguageGenerator):
- def _array_start(self, varname, length, fromtype, totype):
+ def _array_start(self, varname, length, defvalue, fromtype, totype):
if fromtype == self.TYPE_ENUM:
raise NotImplementedError("Enums not supported as source in C++ generator")
totypename = "const " + self.strtypename if totype == self.TYPE_STRING else self.inttypename
@@ -648,7 +665,7 @@ class PythonLanguageGenerator(LanguageSrcGenerator):
print("# %s" % line)
print("#")
- def _array_start(self, varname, length, fromtype, totype):
+ def _array_start(self, varname, length, defvalue, fromtype, totype):
if fromtype == self.TYPE_ENUM:
raise NotImplementedError("Enums not supported as source in Python generator")
@@ -691,7 +708,7 @@ class PerlLanguageGenerator(LanguageSrcGenerator):
print("# %s" % line)
print("#")
- def _array_start(self, varname, length, fromtype, totype):
+ def _array_start(self, varname, length, defvalue, fromtype, totype):
if fromtype == self.TYPE_ENUN:
raise NotImplementedError("Enums not supported as source in Python generator")
if fromtype == self.TYPE_INT:
@@ -730,7 +747,7 @@ class JavaScriptLanguageGenerator(LanguageSrcGenerator):
print(" * %s" % line)
print("*/")
- def _array_start(self, varname, length, fromtype, totype):
+ def _array_start(self, varname, length, defvalue, fromtype, totype):
print("export default {")
def _array_end(self, fromtype, totype):