update keycodemapdb for 6.0
QEMU 6.0 requires the updated version to build correctly, as the keymap-gen tool gained some new parameters. Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
		
							parent
							
								
									eb96e850ac
								
							
						
					
					
						commit
						263fef5b4c
					
				@ -145,12 +145,12 @@ KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,0x53,0x71,0x71,99,VK_DECIMAL,0x6e,83,83,XK_
 | 
				
			|||||||
KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,0x53,0x71,0x71,99,VK_DECIMAL,0x6e,83,83,XK_KP_Decimal,0xffae,NumpadDecimal,KPDC,kp_decimal,0x32,0x41
 | 
					KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,0x53,0x71,0x71,99,VK_DECIMAL,0x6e,83,83,XK_KP_Decimal,0xffae,NumpadDecimal,KPDC,kp_decimal,0x32,0x41
 | 
				
			||||||
,84,,,0x54,,,,,,,,,,,,,,
 | 
					,84,,,0x54,,,,,,,,,,,,,,
 | 
				
			||||||
KEY_ZENKAKUHANKAKU,85,,,0x76,0x5f,,148,,,,,,,Lang5,HZTG,,,
 | 
					KEY_ZENKAKUHANKAKU,85,,,0x76,0x5f,,148,,,,,,,Lang5,HZTG,,,
 | 
				
			||||||
KEY_102ND,86,,,0x56,0x61,0x13,100,VK_OEM_102,0xe1,86,86,,,IntlBackslash,LSGT,less,0x7c,
 | 
					KEY_102ND,86,,,0x56,0x61,0x13,100,VK_OEM_102,0xe2,86,86,,,IntlBackslash,LSGT,less,0x7c,
 | 
				
			||||||
KEY_F11,87,F11,0x67,0x57,0x78,0x56,68,VK_F11,0x7a,87,87,XK_F11,0xffc8,F11,FK11,f11,0x09,0x67
 | 
					KEY_F11,87,F11,0x67,0x57,0x78,0x56,68,VK_F11,0x7a,87,87,XK_F11,0xffc8,F11,FK11,f11,0x09,0x67
 | 
				
			||||||
KEY_F12,88,F12,0x6f,0x58,0x07,0x5e,69,VK_F12,0x7b,88,88,XK_F12,0xffc9,F12,FK12,f12,0x0b,0x6f
 | 
					KEY_F12,88,F12,0x6f,0x58,0x07,0x5e,69,VK_F12,0x7b,88,88,XK_F12,0xffc9,F12,FK12,f12,0x0b,0x6f
 | 
				
			||||||
KEY_RO,89,,,0x73,0x51,,135,,,,,,,IntlRo,AB11,ro,,
 | 
					KEY_RO,89,JIS_Underscore,0x5e,0x73,0x51,,135,,,,,,,IntlRo,AB11,ro,,
 | 
				
			||||||
KEY_KATAKANA,90,JIS_Kana,0x68,0x78,0x63,,146,VK_KANA,0x15,,,,,Katakana,KATA,,,
 | 
					KEY_KATAKANA,90,,,0x78,0x63,,146,VK_KANA,0x15,,,,,Katakana,KATA,,,
 | 
				
			||||||
KEY_KATAKANA,90,JIS_Kana,0x68,0x78,0x63,,146,VK_KANA,0x15,,,,,Lang3,KATA,,,
 | 
					KEY_KATAKANA,90,,,0x78,0x63,,146,VK_KANA,0x15,,,,,Lang3,KATA,,,
 | 
				
			||||||
KEY_HIRAGANA,91,,,0x77,0x62,0x87,147,,,,,,,Hiragana,HIRA,hiragana,,
 | 
					KEY_HIRAGANA,91,,,0x77,0x62,0x87,147,,,,,,,Hiragana,HIRA,hiragana,,
 | 
				
			||||||
KEY_HIRAGANA,91,,,0x77,0x62,0x87,147,,,,,,,Lang4,HIRA,hiragana,,
 | 
					KEY_HIRAGANA,91,,,0x77,0x62,0x87,147,,,,,,,Lang4,HIRA,hiragana,,
 | 
				
			||||||
KEY_HENKAN,92,,,0x79,0x64,0x86,138,,,,,,,Convert,HENK,henkan,,
 | 
					KEY_HENKAN,92,,,0x79,0x64,0x86,138,,,,,,,Convert,HENK,henkan,,
 | 
				
			||||||
@ -192,8 +192,8 @@ KEY_PAUSE,119,,,0xe046,0xe077,0x62,72,VK_PAUSE,0x013,0x66,0x66,XK_Pause,0xff13,P
 | 
				
			|||||||
KEY_SCALE,120,,,0xe00b,,,,,,,,,,,I128,,,
 | 
					KEY_SCALE,120,,,0xe00b,,,,,,,,,,,I128,,,
 | 
				
			||||||
KEY_KPCOMMA,121,,,0x7e,0x6d,,133,VK_SEPARATOR??,0x6c,,,,,NumpadComma,KPCO,kp_comma,,
 | 
					KEY_KPCOMMA,121,,,0x7e,0x6d,,133,VK_SEPARATOR??,0x6c,,,,,NumpadComma,KPCO,kp_comma,,
 | 
				
			||||||
KEY_KPCOMMA,121,,,0x7e,0x6d,,133,VK_SEPARATOR??,0x6c,,,,,NumpadComma,I129,,,
 | 
					KEY_KPCOMMA,121,,,0x7e,0x6d,,133,VK_SEPARATOR??,0x6c,,,,,NumpadComma,I129,,,
 | 
				
			||||||
KEY_HANGEUL,122,,,,,,144,VK_HANGEUL,0x15,,,,,,HNGL,,,
 | 
					KEY_HANGEUL,122,JIS_Kana,0x68,0x72,,,144,VK_HANGEUL,0x15,,0x71,,,Lang1,HNGL,,,
 | 
				
			||||||
KEY_HANJA,123,,,0xe00d,,,145,VK_HANJA,0x19,,,,,,HJCV,,,
 | 
					KEY_HANJA,123,JIS_Eisu,0x66,0x71,,,145,VK_HANJA,0x19,,0x72,,,Lang2,HJCV,,,
 | 
				
			||||||
KEY_YEN,124,JIS_Yen,0x5d,0x7d,0x6a,0x5d,137,,,0x7d,0x7d,,,IntlYen,AE13,yen,,
 | 
					KEY_YEN,124,JIS_Yen,0x5d,0x7d,0x6a,0x5d,137,,,0x7d,0x7d,,,IntlYen,AE13,yen,,
 | 
				
			||||||
KEY_LEFTMETA,125,Command,0x37,0xe05b,0xe01f,0x8b,227,VK_LWIN,0x5b,0x6b,0x6b,XK_Meta_L,0xffe7,MetaLeft,LMTA,meta_l,0x78,0x37
 | 
					KEY_LEFTMETA,125,Command,0x37,0xe05b,0xe01f,0x8b,227,VK_LWIN,0x5b,0x6b,0x6b,XK_Meta_L,0xffe7,MetaLeft,LMTA,meta_l,0x78,0x37
 | 
				
			||||||
KEY_LEFTMETA,125,Command,0x37,0xe05b,0xe01f,0x8b,227,VK_LWIN,0x5b,0x6b,0x6b,XK_Meta_L,0xffe7,MetaLeft,LWIN,meta_l,0x78,0x37
 | 
					KEY_LEFTMETA,125,Command,0x37,0xe05b,0xe01f,0x8b,227,VK_LWIN,0x5b,0x6b,0x6b,XK_Meta_L,0xffe7,MetaLeft,LWIN,meta_l,0x78,0x37
 | 
				
			||||||
@ -250,8 +250,8 @@ KEY_ISO,170,ISO_Section,0xa,,,,,,,,,,,,I178,,,
 | 
				
			|||||||
KEY_CONFIG,171,,,0xe001,,,,,,,,,,,I179,,,
 | 
					KEY_CONFIG,171,,,0xe001,,,,,,,,,,,I179,,,
 | 
				
			||||||
KEY_HOMEPAGE,172,,,0xe032,0xe03a,0x97,,VK_BROWSER_HOME,0xac,,,,,BrowserHome,I180,ac_home,,
 | 
					KEY_HOMEPAGE,172,,,0xe032,0xe03a,0x97,,VK_BROWSER_HOME,0xac,,,,,BrowserHome,I180,ac_home,,
 | 
				
			||||||
KEY_REFRESH,173,,,0xe067,0xe020,,250,VK_BROWSER_REFRESH,0xa8,,,,,BrowserRefresh,I181,ac_refresh,,
 | 
					KEY_REFRESH,173,,,0xe067,0xe020,,250,VK_BROWSER_REFRESH,0xa8,,,,,BrowserRefresh,I181,ac_refresh,,
 | 
				
			||||||
KEY_EXIT,174,,,0x71,,,,,,,,,,,I182,,,
 | 
					KEY_EXIT,174,,,,,,,,,,,,,,I182,,,
 | 
				
			||||||
KEY_MOVE,175,,,0x72,,,,,,,,,,,I183,,,
 | 
					KEY_MOVE,175,,,,,,,,,,,,,,I183,,,
 | 
				
			||||||
KEY_EDIT,176,,,0xe008,,,247,,,,,,,,I184,,,
 | 
					KEY_EDIT,176,,,0xe008,,,247,,,,,,,,I184,,,
 | 
				
			||||||
KEY_SCROLLUP,177,,,0x75,,,245,,,,,,,,I185,,,
 | 
					KEY_SCROLLUP,177,,,0x75,,,245,,,,,,,,I185,,,
 | 
				
			||||||
KEY_SCROLLDOWN,178,,,0xe00f,,,246,,,,,,,,I186,,,
 | 
					KEY_SCROLLDOWN,178,,,0xe00f,,,246,,,,,,,,I186,,,
 | 
				
			||||||
 | 
				
			|||||||
		
		
			
  | 
							
								
								
									
										1
									
								
								keycodemapdb/meson.build
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keycodemapdb/meson.build
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					project('keycodemapdb')
 | 
				
			||||||
@ -13,49 +13,81 @@ SOURCES := $(GEN) $(DATA)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.DELETE_ON_ERROR:
 | 
					.DELETE_ON_ERROR:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
stdc: stdc.c osx2win32.h osx2win32_name.h \
 | 
					stdc: stdc.c osx2win32.h osx2win32.c osx2win32_name.h osx2win32_name.c \
 | 
				
			||||||
             osx2xkb.h osx2xkb_name.h \
 | 
					             osx2xkb.h osx2xkb.c osx2xkb_name.h osx2xkb_name.c \
 | 
				
			||||||
             html2win32.h html2win32_name.h \
 | 
					             html2win32.h html2win32.c html2win32_name.h html2win32_name.c \
 | 
				
			||||||
             osx.h osx_name.h
 | 
					             osx.h osx.c osx_name.h osx_name.c
 | 
				
			||||||
	$(CC) -Wall -o $@ $^
 | 
						$(CC) -Wall -o $@ $(filter %.c, $^)
 | 
				
			||||||
osx2win32.h: $(SOURCES)
 | 
					osx2win32.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc code-map $(DATA) osx win32 > $@
 | 
						$(GEN) --lang stdc code-map $(DATA) osx win32 > $@
 | 
				
			||||||
osx2win32_name.h: $(SOURCES)
 | 
					osx2win32.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header code-map $(DATA) osx win32 > $@
 | 
				
			||||||
 | 
					osx2win32_name.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc name-map $(DATA) osx win32 > $@
 | 
						$(GEN) --lang stdc name-map $(DATA) osx win32 > $@
 | 
				
			||||||
osx2xkb.h: $(SOURCES)
 | 
					osx2win32_name.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header name-map $(DATA) osx win32 > $@
 | 
				
			||||||
 | 
					osx2xkb.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc code-map $(DATA) osx xkb > $@
 | 
						$(GEN) --lang stdc code-map $(DATA) osx xkb > $@
 | 
				
			||||||
osx2xkb_name.h: $(SOURCES)
 | 
					osx2xkb.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header code-map $(DATA) osx xkb > $@
 | 
				
			||||||
 | 
					osx2xkb_name.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc name-map $(DATA) osx xkb > $@
 | 
						$(GEN) --lang stdc name-map $(DATA) osx xkb > $@
 | 
				
			||||||
html2win32.h: $(SOURCES)
 | 
					osx2xkb_name.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header name-map $(DATA) osx xkb > $@
 | 
				
			||||||
 | 
					html2win32.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc code-map $(DATA) html win32 > $@
 | 
						$(GEN) --lang stdc code-map $(DATA) html win32 > $@
 | 
				
			||||||
html2win32_name.h: $(SOURCES)
 | 
					html2win32.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header code-map $(DATA) html win32 > $@
 | 
				
			||||||
 | 
					html2win32_name.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc name-map $(DATA) html win32 > $@
 | 
						$(GEN) --lang stdc name-map $(DATA) html win32 > $@
 | 
				
			||||||
osx.h: $(SOURCES)
 | 
					html2win32_name.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header name-map $(DATA) html win32 > $@
 | 
				
			||||||
 | 
					osx.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc code-table $(DATA) osx > $@
 | 
						$(GEN) --lang stdc code-table $(DATA) osx > $@
 | 
				
			||||||
osx_name.h: $(SOURCES)
 | 
					osx.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header code-table $(DATA) osx > $@
 | 
				
			||||||
 | 
					osx_name.c: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc name-table $(DATA) osx > $@
 | 
						$(GEN) --lang stdc name-table $(DATA) osx > $@
 | 
				
			||||||
 | 
					osx_name.h: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc-header name-table $(DATA) osx > $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
stdc++: stdc++.cc osx2win32.hh osx2win32_name.hh \
 | 
					stdc++: stdc++.cc osx2win32.hh osx2win32.cc osx2win32_name.hh osx2win32_name.cc \
 | 
				
			||||||
             osx2xkb.hh osx2xkb_name.hh \
 | 
					             osx2xkb.hh osx2xkb.cc osx2xkb_name.hh osx2xkb_name.cc \
 | 
				
			||||||
             html2win32.hh html2win32_name.hh \
 | 
					             html2win32.hh html2win32.cc html2win32_name.hh html2win32_name.cc \
 | 
				
			||||||
             osx.hh osx_name.hh
 | 
					             osx.hh osx.cc osx_name.hh osx_name.cc
 | 
				
			||||||
	$(CXX) -Wall -std=c++11 -o $@ $^
 | 
						$(CXX) -Wall -std=c++11 -o $@ $(filter %.cc, $^)
 | 
				
			||||||
osx2win32.hh: $(SOURCES)
 | 
					osx2win32.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ code-map $(DATA) osx win32 > $@
 | 
						$(GEN) --lang stdc++ code-map $(DATA) osx win32 > $@
 | 
				
			||||||
osx2win32_name.hh: $(SOURCES)
 | 
					osx2win32.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header code-map $(DATA) osx win32 > $@
 | 
				
			||||||
 | 
					osx2win32_name.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ name-map $(DATA) osx win32 > $@
 | 
						$(GEN) --lang stdc++ name-map $(DATA) osx win32 > $@
 | 
				
			||||||
osx2xkb.hh: $(SOURCES)
 | 
					osx2win32_name.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header name-map $(DATA) osx win32 > $@
 | 
				
			||||||
 | 
					osx2xkb.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ code-map $(DATA) osx xkb > $@
 | 
						$(GEN) --lang stdc++ code-map $(DATA) osx xkb > $@
 | 
				
			||||||
osx2xkb_name.hh: $(SOURCES)
 | 
					osx2xkb.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header code-map $(DATA) osx xkb > $@
 | 
				
			||||||
 | 
					osx2xkb_name.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ name-map $(DATA) osx xkb > $@
 | 
						$(GEN) --lang stdc++ name-map $(DATA) osx xkb > $@
 | 
				
			||||||
html2win32.hh: $(SOURCES)
 | 
					osx2xkb_name.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header name-map $(DATA) osx xkb > $@
 | 
				
			||||||
 | 
					html2win32.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ code-map $(DATA) html win32 > $@
 | 
						$(GEN) --lang stdc++ code-map $(DATA) html win32 > $@
 | 
				
			||||||
html2win32_name.hh: $(SOURCES)
 | 
					html2win32.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header code-map $(DATA) html win32 > $@
 | 
				
			||||||
 | 
					html2win32_name.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ name-map $(DATA) html win32 > $@
 | 
						$(GEN) --lang stdc++ name-map $(DATA) html win32 > $@
 | 
				
			||||||
osx.hh: $(SOURCES)
 | 
					html2win32_name.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header name-map $(DATA) html win32 > $@
 | 
				
			||||||
 | 
					osx.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ code-table $(DATA) osx > $@
 | 
						$(GEN) --lang stdc++ code-table $(DATA) osx > $@
 | 
				
			||||||
osx_name.hh: $(SOURCES)
 | 
					osx.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header code-table $(DATA) osx > $@
 | 
				
			||||||
 | 
					osx_name.cc: $(SOURCES)
 | 
				
			||||||
	$(GEN) --lang stdc++ name-table $(DATA) osx > $@
 | 
						$(GEN) --lang stdc++ name-table $(DATA) osx > $@
 | 
				
			||||||
 | 
					osx_name.hh: $(SOURCES)
 | 
				
			||||||
 | 
						$(GEN) --lang stdc++-header name-table $(DATA) osx > $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
python2: osx2win32.py osx2win32_name.py \
 | 
					python2: osx2win32.py osx2win32_name.py \
 | 
				
			||||||
         osx2xkb.py osx2xkb_name.py \
 | 
					         osx2xkb.py osx2xkb_name.py \
 | 
				
			||||||
 | 
				
			|||||||
@ -317,9 +317,8 @@ class LanguageGenerator(object):
 | 
				
			|||||||
        raise NotImplementedError()
 | 
					        raise NotImplementedError()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_header(self, database, args):
 | 
					    def generate_header(self, database, args):
 | 
				
			||||||
        today = time.strftime("%Y-%m-%d %H:%M")
 | 
					 | 
				
			||||||
        self._boilerplate([
 | 
					        self._boilerplate([
 | 
				
			||||||
            "This file is auto-generated from keymaps.csv on %s" % today,
 | 
					            "This file is auto-generated from keymaps.csv",
 | 
				
			||||||
            "Database checksum sha256(%s)" % database.mapchecksum,
 | 
					            "Database checksum sha256(%s)" % database.mapchecksum,
 | 
				
			||||||
            "To re-generate, run:",
 | 
					            "To re-generate, run:",
 | 
				
			||||||
            "  %s" % args,
 | 
					            "  %s" % args,
 | 
				
			||||||
@ -509,7 +508,7 @@ class LanguageDocGenerator(LanguageGenerator):
 | 
				
			|||||||
    def _array_code_entry(self, value, name):
 | 
					    def _array_code_entry(self, value, name):
 | 
				
			||||||
        raise NotImplementedError()
 | 
					        raise NotImplementedError()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_name_docs(self, varname, database, mapname):
 | 
					    def generate_name_docs(self, title, subtitle, database, mapname):
 | 
				
			||||||
        if mapname not in database.mapname:
 | 
					        if mapname not in database.mapname:
 | 
				
			||||||
            raise Exception("Unknown map %s, expected one of %s" % (
 | 
					            raise Exception("Unknown map %s, expected one of %s" % (
 | 
				
			||||||
                            mapname, ", ".join(database.mapname.keys())))
 | 
					                            mapname, ", ".join(database.mapname.keys())))
 | 
				
			||||||
@ -518,10 +517,12 @@ class LanguageDocGenerator(LanguageGenerator):
 | 
				
			|||||||
        keys.sort()
 | 
					        keys.sort()
 | 
				
			||||||
        names = [database.mapname[Database.MAP_LINUX].get(key, "unnamed") for key in keys]
 | 
					        names = [database.mapname[Database.MAP_LINUX].get(key, "unnamed") for key in keys]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if varname is None:
 | 
					        if title is None:
 | 
				
			||||||
            varname = mapname
 | 
					            title = mapname
 | 
				
			||||||
 | 
					        if subtitle is None:
 | 
				
			||||||
 | 
					            subtitle = "Docs for %s" % mapname
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._array_start_name_doc(varname, mapname)
 | 
					        self._array_start_name_doc(title, subtitle, mapname)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for i in range(len(keys)):
 | 
					        for i in range(len(keys)):
 | 
				
			||||||
            key = keys[i]
 | 
					            key = keys[i]
 | 
				
			||||||
@ -531,7 +532,7 @@ class LanguageDocGenerator(LanguageGenerator):
 | 
				
			|||||||
        self._array_end()
 | 
					        self._array_end()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def generate_code_docs(self, varname, database, mapname):
 | 
					    def generate_code_docs(self, title, subtitle, database, mapname):
 | 
				
			||||||
        if mapname not in database.mapfrom:
 | 
					        if mapname not in database.mapfrom:
 | 
				
			||||||
            raise Exception("Unknown map %s, expected one of %s" % (
 | 
					            raise Exception("Unknown map %s, expected one of %s" % (
 | 
				
			||||||
                            mapname, ", ".join(database.mapfrom.keys())))
 | 
					                            mapname, ", ".join(database.mapfrom.keys())))
 | 
				
			||||||
@ -546,10 +547,12 @@ class LanguageDocGenerator(LanguageGenerator):
 | 
				
			|||||||
            names = database.mapname[Database.MAP_LINUX]
 | 
					            names = database.mapname[Database.MAP_LINUX]
 | 
				
			||||||
            namemap = Database.MAP_LINUX
 | 
					            namemap = Database.MAP_LINUX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if varname is None:
 | 
					        if title is None:
 | 
				
			||||||
            varname = mapname
 | 
					            title = mapname
 | 
				
			||||||
 | 
					        if subtitle is None:
 | 
				
			||||||
 | 
					            subtitle = "Docs for %s" % mapname
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._array_start_code_doc(varname, mapname, namemap)
 | 
					        self._array_start_code_doc(title, subtitle, mapname, namemap)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for i in range(len(keys)):
 | 
					        for i in range(len(keys)):
 | 
				
			||||||
            key = keys[i]
 | 
					            key = keys[i]
 | 
				
			||||||
@ -623,6 +626,68 @@ class CLanguageGenerator(LanguageSrcGenerator):
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            print(("  {" + indexfmt + ", " + valuefmt + "}, /* %s */") % (index, value, comment))
 | 
					            print(("  {" + indexfmt + ", " + valuefmt + "}, /* %s */") % (index, value, comment))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StdCLanguageGenerator(CLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        super(StdCLanguageGenerator, self).__init__("unsigned short", "char *", "unsigned int")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GLib2LanguageGenerator(CLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        super(GLib2LanguageGenerator, self).__init__("guint16", "gchar *", "guint")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CHeaderLanguageGenerator(LanguageSrcGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, inttypename, strtypename, lentypename):
 | 
				
			||||||
 | 
					        self.inttypename = inttypename
 | 
				
			||||||
 | 
					        self.strtypename = strtypename
 | 
				
			||||||
 | 
					        self.lentypename = lentypename
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _boilerplate(self, lines):
 | 
				
			||||||
 | 
					        print("/*")
 | 
				
			||||||
 | 
					        for line in lines:
 | 
				
			||||||
 | 
					            print(" * %s" % line)
 | 
				
			||||||
 | 
					        print("*/")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_start(self, varname, length, defvalue, fromtype, totype):
 | 
				
			||||||
 | 
					        self._varname = varname
 | 
				
			||||||
 | 
					        if fromtype == self.TYPE_STRING:
 | 
				
			||||||
 | 
					            self._length = 0
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self._length = length
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_end(self, fromtype, totype):
 | 
				
			||||||
 | 
					        totypename = self.strtypename if totype == self.TYPE_STRING else self.inttypename
 | 
				
			||||||
 | 
					        if fromtype == self.TYPE_STRING:
 | 
				
			||||||
 | 
					            vartypename = "struct _%s" % self._varname
 | 
				
			||||||
 | 
					            print("%s {" % vartypename)
 | 
				
			||||||
 | 
					            print("  const %s from;" % self.strtypename)
 | 
				
			||||||
 | 
					            print("  const %s to;" % totypename)
 | 
				
			||||||
 | 
					            print("};")
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            vartypename = totypename
 | 
				
			||||||
 | 
					        if type(self._length) == str:
 | 
				
			||||||
 | 
					            print("extern const %s %s[%s];" % (vartypename, self._varname, self._length))
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            print("extern const %s %s[%d];" % (vartypename, self._varname, self._length))
 | 
				
			||||||
 | 
					        print("extern const %s %s_len;" % (self.lentypename, self._varname))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_entry(self, index, value, comment, fromtype, totype):
 | 
				
			||||||
 | 
					        if value is None:
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        if fromtype == self.TYPE_STRING:
 | 
				
			||||||
 | 
					            self._length += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StdCHeaderLanguageGenerator(CHeaderLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        super(StdCHeaderLanguageGenerator, self).__init__("unsigned short", "char *", "unsigned int")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GLib2HeaderLanguageGenerator(CHeaderLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        super(GLib2HeaderLanguageGenerator, self).__init__("guint16", "gchar *", "guint")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CppLanguageGenerator(CLanguageGenerator):
 | 
					class CppLanguageGenerator(CLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _array_start(self, varname, length, defvalue, fromtype, totype):
 | 
					    def _array_start(self, varname, length, defvalue, fromtype, totype):
 | 
				
			||||||
@ -631,10 +696,12 @@ class CppLanguageGenerator(CLanguageGenerator):
 | 
				
			|||||||
        totypename = "const " + self.strtypename if totype == self.TYPE_STRING else self.inttypename
 | 
					        totypename = "const " + self.strtypename if totype == self.TYPE_STRING else self.inttypename
 | 
				
			||||||
        if fromtype == self.TYPE_INT:
 | 
					        if fromtype == self.TYPE_INT:
 | 
				
			||||||
            print("#include <vector>")
 | 
					            print("#include <vector>")
 | 
				
			||||||
 | 
					            print("extern const std::vector<%s> %s;" % (totypename, varname));
 | 
				
			||||||
            print("const std::vector<%s> %s = {" % (totypename, varname))
 | 
					            print("const std::vector<%s> %s = {" % (totypename, varname))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            print("#include <map>")
 | 
					            print("#include <map>")
 | 
				
			||||||
            print("#include <string>")
 | 
					            print("#include <string>")
 | 
				
			||||||
 | 
					            print("extern const std::map<const std::string, %s> %s;" % (totypename, varname))
 | 
				
			||||||
            print("const std::map<const std::string, %s> %s = {" % (totypename, varname))
 | 
					            print("const std::map<const std::string, %s> %s = {" % (totypename, varname))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _array_end(self, fromtype, totype):
 | 
					    def _array_end(self, fromtype, totype):
 | 
				
			||||||
@ -654,20 +721,36 @@ class CppLanguageGenerator(CLanguageGenerator):
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            print("  \"%s\", /* %s */" % (value, comment))
 | 
					            print("  \"%s\", /* %s */" % (value, comment))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StdCLanguageGenerator(CLanguageGenerator):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __init__(self):
 | 
					 | 
				
			||||||
        super(StdCLanguageGenerator, self).__init__("unsigned short", "char *", "unsigned int")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class StdCppLanguageGenerator(CppLanguageGenerator):
 | 
					class StdCppLanguageGenerator(CppLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        super(StdCppLanguageGenerator, self).__init__("unsigned short", "char *", "unsigned int")
 | 
					        super(StdCppLanguageGenerator, self).__init__("unsigned short", "char *", "unsigned int")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GLib2LanguageGenerator(CLanguageGenerator):
 | 
					class CppHeaderLanguageGenerator(CHeaderLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
 | 
					        if fromtype == self.TYPE_INT:
 | 
				
			||||||
 | 
					            print("#include <vector>")
 | 
				
			||||||
 | 
					            print("extern const std::vector<%s> %s;" % (totypename, varname));
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            print("#include <map>")
 | 
				
			||||||
 | 
					            print("#include <string>")
 | 
				
			||||||
 | 
					            print("extern const std::map<const std::string, %s> %s;" % (totypename, varname))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_end(self, fromtype, totype):
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # designated initializers not available in C++
 | 
				
			||||||
 | 
					    def _array_entry(self, index, value, comment, fromtype, totype):
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StdCppHeaderLanguageGenerator(CppHeaderLanguageGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        super(GLib2LanguageGenerator, self).__init__("guint16", "gchar *", "guint")
 | 
					        super(StdCppHeaderLanguageGenerator, self).__init__("unsigned short", "char *", "unsigned int")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PythonLanguageGenerator(LanguageSrcGenerator):
 | 
					class PythonLanguageGenerator(LanguageSrcGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -793,16 +876,24 @@ class PodLanguageGenerator(LanguageDocGenerator):
 | 
				
			|||||||
            print("# %s" % line)
 | 
					            print("# %s" % line)
 | 
				
			||||||
        print("#")
 | 
					        print("#")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _array_start_name_doc(self, varname, namemap):
 | 
					    def _array_start_name_doc(self, title, subtitle, namemap):
 | 
				
			||||||
        print("=head1 %s" % varname)
 | 
					        print("=head1 NAME")
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("%s - %s" % (title, subtitle))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("=head1 DESCRIPTION")
 | 
				
			||||||
        print("")
 | 
					        print("")
 | 
				
			||||||
        print("List of %s key code names, with corresponding key code values" % namemap)
 | 
					        print("List of %s key code names, with corresponding key code values" % namemap)
 | 
				
			||||||
        print("")
 | 
					        print("")
 | 
				
			||||||
        print("=over 4")
 | 
					        print("=over 4")
 | 
				
			||||||
        print("")
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _array_start_code_doc(self, varname, codemap, namemap):
 | 
					    def _array_start_code_doc(self, title, subtitle, codemap, namemap):
 | 
				
			||||||
        print("=head1 %s" % varname)
 | 
					        print("=head1 NAME")
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("%s - %s" % (title, subtitle))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("=head1 DESCRIPTION")
 | 
				
			||||||
        print("")
 | 
					        print("")
 | 
				
			||||||
        print("List of %s key code values, with corresponding %s key code names" % (codemap, namemap))
 | 
					        print("List of %s key code values, with corresponding %s key code names" % (codemap, namemap))
 | 
				
			||||||
        print("")
 | 
					        print("")
 | 
				
			||||||
@ -825,10 +916,70 @@ class PodLanguageGenerator(LanguageDocGenerator):
 | 
				
			|||||||
        print("Key name %s" % name)
 | 
					        print("Key name %s" % name)
 | 
				
			||||||
        print("")
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RSTLanguageGenerator(LanguageDocGenerator):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _boilerplate(self, lines):
 | 
				
			||||||
 | 
					        print("..")
 | 
				
			||||||
 | 
					        for line in lines:
 | 
				
			||||||
 | 
					            print("   %s" % line)
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_start_name_doc(self, title, subtitle, namemap):
 | 
				
			||||||
 | 
					        print("=" * len(title))
 | 
				
			||||||
 | 
					        print(title)
 | 
				
			||||||
 | 
					        print("=" * len(title))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("-" * len(subtitle))
 | 
				
			||||||
 | 
					        print(subtitle)
 | 
				
			||||||
 | 
					        print("-" * len(subtitle))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print(":Manual section: 7")
 | 
				
			||||||
 | 
					        print(":Manual group: Virtualization Support")
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("DESCRIPTION")
 | 
				
			||||||
 | 
					        print("===========")
 | 
				
			||||||
 | 
					        print("List of %s key code names, with corresponding key code values" % namemap)
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_start_code_doc(self, title, subtitle, codemap, namemap):
 | 
				
			||||||
 | 
					        print("=" * len(title))
 | 
				
			||||||
 | 
					        print(title)
 | 
				
			||||||
 | 
					        print("=" * len(title))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("-" * len(subtitle))
 | 
				
			||||||
 | 
					        print(subtitle)
 | 
				
			||||||
 | 
					        print("-" * len(subtitle))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print(":Manual section: 7")
 | 
				
			||||||
 | 
					        print(":Manual group: Virtualization Support")
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("DESCRIPTION")
 | 
				
			||||||
 | 
					        print("===========")
 | 
				
			||||||
 | 
					        print("List of %s key code values, with corresponding %s key code names" % (codemap, namemap))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_end(self):
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_name_entry(self, value, name):
 | 
				
			||||||
 | 
					        print("* %s" % name)
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("  Key value %d (0x%x)" % (value, value))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _array_code_entry(self, value, name):
 | 
				
			||||||
 | 
					        print("* %d (0x%x)" % (value, value))
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					        print("  Key name %s" % name)
 | 
				
			||||||
 | 
					        print("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SRC_GENERATORS = {
 | 
					SRC_GENERATORS = {
 | 
				
			||||||
    "stdc": StdCLanguageGenerator(),
 | 
					    "stdc": StdCLanguageGenerator(),
 | 
				
			||||||
 | 
					    "stdc-header": StdCHeaderLanguageGenerator(),
 | 
				
			||||||
    "stdc++": StdCppLanguageGenerator(),
 | 
					    "stdc++": StdCppLanguageGenerator(),
 | 
				
			||||||
 | 
					    "stdc++-header": StdCppHeaderLanguageGenerator(),
 | 
				
			||||||
    "glib2": GLib2LanguageGenerator(),
 | 
					    "glib2": GLib2LanguageGenerator(),
 | 
				
			||||||
 | 
					    "glib2-header": GLib2HeaderLanguageGenerator(),
 | 
				
			||||||
    "python2": PythonLanguageGenerator(),
 | 
					    "python2": PythonLanguageGenerator(),
 | 
				
			||||||
    "python3": PythonLanguageGenerator(),
 | 
					    "python3": PythonLanguageGenerator(),
 | 
				
			||||||
    "perl": PerlLanguageGenerator(),
 | 
					    "perl": PerlLanguageGenerator(),
 | 
				
			||||||
@ -836,16 +987,17 @@ SRC_GENERATORS = {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
DOC_GENERATORS = {
 | 
					DOC_GENERATORS = {
 | 
				
			||||||
    "pod": PodLanguageGenerator(),
 | 
					    "pod": PodLanguageGenerator(),
 | 
				
			||||||
 | 
					    "rst": RSTLanguageGenerator(),
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def code_map(args):
 | 
					def code_map(args):
 | 
				
			||||||
    database = Database()
 | 
					    database = Database()
 | 
				
			||||||
    database.load(args.keymaps)
 | 
					    database.load(args.keymaps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cliargs = ["keymap-gen", "--lang=%s" % args.lang]
 | 
					    cliargs = ["keymap-gen", "code-map", "--lang=%s" % args.lang]
 | 
				
			||||||
    if args.varname is not None:
 | 
					    if args.varname is not None:
 | 
				
			||||||
        cliargs.append("--varname=%s" % args.varname)
 | 
					        cliargs.append("--varname=%s" % args.varname)
 | 
				
			||||||
    cliargs.extend(["code-map", "keymaps.csv", args.frommapname, args.tomapname])
 | 
					    cliargs.extend(["keymaps.csv", args.frommapname, args.tomapname])
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
					    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_code_map(args.varname, database, args.frommapname, args.tomapname)
 | 
					    SRC_GENERATORS[args.lang].generate_code_map(args.varname, database, args.frommapname, args.tomapname)
 | 
				
			||||||
@ -854,10 +1006,10 @@ def code_table(args):
 | 
				
			|||||||
    database = Database()
 | 
					    database = Database()
 | 
				
			||||||
    database.load(args.keymaps)
 | 
					    database.load(args.keymaps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cliargs = ["keymap-gen", "--lang=%s" % args.lang]
 | 
					    cliargs = ["keymap-gen", "code-table", "--lang=%s" % args.lang]
 | 
				
			||||||
    if args.varname is not None:
 | 
					    if args.varname is not None:
 | 
				
			||||||
        cliargs.append("--varname=%s" % args.varname)
 | 
					        cliargs.append("--varname=%s" % args.varname)
 | 
				
			||||||
    cliargs.extend(["code-table", "keymaps.csv", args.mapname])
 | 
					    cliargs.extend(["keymaps.csv", args.mapname])
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
					    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_code_table(args.varname, database, args.mapname)
 | 
					    SRC_GENERATORS[args.lang].generate_code_table(args.varname, database, args.mapname)
 | 
				
			||||||
@ -866,10 +1018,10 @@ def name_map(args):
 | 
				
			|||||||
    database = Database()
 | 
					    database = Database()
 | 
				
			||||||
    database.load(args.keymaps)
 | 
					    database.load(args.keymaps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cliargs = ["keymap-gen", "--lang=%s" % args.lang]
 | 
					    cliargs = ["keymap-gen", "name-map", "--lang=%s" % args.lang]
 | 
				
			||||||
    if args.varname is not None:
 | 
					    if args.varname is not None:
 | 
				
			||||||
        cliargs.append("--varname=%s" % args.varname)
 | 
					        cliargs.append("--varname=%s" % args.varname)
 | 
				
			||||||
    cliargs.extend(["name-map", "keymaps.csv", args.frommapname, args.tomapname])
 | 
					    cliargs.extend(["keymaps.csv", args.frommapname, args.tomapname])
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
					    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_name_map(args.varname, database, args.frommapname, args.tomapname)
 | 
					    SRC_GENERATORS[args.lang].generate_name_map(args.varname, database, args.frommapname, args.tomapname)
 | 
				
			||||||
@ -879,10 +1031,10 @@ def name_table(args):
 | 
				
			|||||||
    database.load(args.keymaps)
 | 
					    database.load(args.keymaps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cliargs = ["keymap-gen", "--lang=%s" % args.lang]
 | 
					    cliargs = ["keymap-gen", "name-table", "--lang=%s" % args.lang]
 | 
				
			||||||
    if args.varname is not None:
 | 
					    if args.varname is not None:
 | 
				
			||||||
        cliargs.append("--varname=%s" % args.varname)
 | 
					        cliargs.append("--varname=%s" % args.varname)
 | 
				
			||||||
    cliargs.extend(["name-table", "keymaps.csv", args.mapname])
 | 
					    cliargs.extend(["keymaps.csv", args.mapname])
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
					    SRC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SRC_GENERATORS[args.lang].generate_name_table(args.varname, database, args.mapname)
 | 
					    SRC_GENERATORS[args.lang].generate_name_table(args.varname, database, args.mapname)
 | 
				
			||||||
@ -892,26 +1044,30 @@ def code_docs(args):
 | 
				
			|||||||
    database.load(args.keymaps)
 | 
					    database.load(args.keymaps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cliargs = ["keymap-gen", "--lang=%s" % args.lang]
 | 
					    cliargs = ["keymap-gen", "code-docs", "--lang=%s" % args.lang]
 | 
				
			||||||
    if args.varname is not None:
 | 
					    if args.title is not None:
 | 
				
			||||||
        cliargs.append("--varname=%s" % args.varname)
 | 
					        cliargs.append("--title=%s" % args.title)
 | 
				
			||||||
    cliargs.extend(["code-docs", "keymaps.csv", args.mapname])
 | 
					    if args.subtitle is not None:
 | 
				
			||||||
 | 
					        cliargs.append("--subtitle=%s" % args.subtitle)
 | 
				
			||||||
 | 
					    cliargs.extend(["keymaps.csv", args.mapname])
 | 
				
			||||||
    DOC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
					    DOC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DOC_GENERATORS[args.lang].generate_code_docs(args.varname, database, args.mapname)
 | 
					    DOC_GENERATORS[args.lang].generate_code_docs(args.title, args.subtitle, database, args.mapname)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def name_docs(args):
 | 
					def name_docs(args):
 | 
				
			||||||
    database = Database()
 | 
					    database = Database()
 | 
				
			||||||
    database.load(args.keymaps)
 | 
					    database.load(args.keymaps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cliargs = ["keymap-gen", "--lang=%s" % args.lang]
 | 
					    cliargs = ["keymap-gen", "name-docs", "--lang=%s" % args.lang]
 | 
				
			||||||
    if args.varname is not None:
 | 
					    if args.title is not None:
 | 
				
			||||||
        cliargs.append("--varname=%s" % args.varname)
 | 
					        cliargs.append("--title=%s" % args.title)
 | 
				
			||||||
    cliargs.extend(["name-docs", "keymaps.csv", args.mapname])
 | 
					    if args.subtitle is not None:
 | 
				
			||||||
 | 
					        cliargs.append("--subtitle=%s" % args.subtitle)
 | 
				
			||||||
 | 
					    cliargs.extend(["keymaps.csv", args.mapname])
 | 
				
			||||||
    DOC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
					    DOC_GENERATORS[args.lang].generate_header(database, " ".join(cliargs))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DOC_GENERATORS[args.lang].generate_name_docs(args.varname, database, args.mapname)
 | 
					    DOC_GENERATORS[args.lang].generate_name_docs(args.title, args.subtitle, database, args.mapname)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def usage():
 | 
					def usage():
 | 
				
			||||||
    print ("Please select a command:")
 | 
					    print ("Please select a command:")
 | 
				
			||||||
@ -921,43 +1077,62 @@ def usage():
 | 
				
			|||||||
def main():
 | 
					def main():
 | 
				
			||||||
    parser = argparse.ArgumentParser()
 | 
					    parser = argparse.ArgumentParser()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    parser.add_argument("--lang", default="stdc",
 | 
					 | 
				
			||||||
                        help="Output language, (src=%s, doc=%s)" % (
 | 
					 | 
				
			||||||
                            ",".join(SRC_GENERATORS.keys()),
 | 
					 | 
				
			||||||
                            ",".join(DOC_GENERATORS.keys())))
 | 
					 | 
				
			||||||
    parser.add_argument("--varname", default=None,
 | 
					 | 
				
			||||||
                        help="Data variable name")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    subparsers = parser.add_subparsers(help="sub-command help")
 | 
					    subparsers = parser.add_subparsers(help="sub-command help")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    codemapparser = subparsers.add_parser("code-map", help="Generate a mapping between code tables")
 | 
					    codemapparser = subparsers.add_parser("code-map", help="Generate a mapping between code tables")
 | 
				
			||||||
 | 
					    codemapparser.add_argument("--varname", default=None, help="Data variable name")
 | 
				
			||||||
 | 
					    codemapparser.add_argument("--lang", default="stdc",
 | 
				
			||||||
 | 
					                        help="Output language (%s)" % (
 | 
				
			||||||
 | 
					                            ",".join(SRC_GENERATORS.keys())))
 | 
				
			||||||
    codemapparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
					    codemapparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
				
			||||||
    codemapparser.add_argument("frommapname", help="Source code table name")
 | 
					    codemapparser.add_argument("frommapname", help="Source code table name")
 | 
				
			||||||
    codemapparser.add_argument("tomapname", help="Target code table name")
 | 
					    codemapparser.add_argument("tomapname", help="Target code table name")
 | 
				
			||||||
    codemapparser.set_defaults(func=code_map)
 | 
					    codemapparser.set_defaults(func=code_map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    codetableparser = subparsers.add_parser("code-table", help="Generate a flat code table")
 | 
					    codetableparser = subparsers.add_parser("code-table", help="Generate a flat code table")
 | 
				
			||||||
 | 
					    codetableparser.add_argument("--lang", default="stdc",
 | 
				
			||||||
 | 
					                        help="Output language (%s)" % (
 | 
				
			||||||
 | 
					                            ",".join(SRC_GENERATORS.keys())))
 | 
				
			||||||
 | 
					    codetableparser.add_argument("--varname", default=None, help="Data variable name")
 | 
				
			||||||
    codetableparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
					    codetableparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
				
			||||||
    codetableparser.add_argument("mapname", help="Code table name")
 | 
					    codetableparser.add_argument("mapname", help="Code table name")
 | 
				
			||||||
    codetableparser.set_defaults(func=code_table)
 | 
					    codetableparser.set_defaults(func=code_table)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    namemapparser = subparsers.add_parser("name-map", help="Generate a mapping to names")
 | 
					    namemapparser = subparsers.add_parser("name-map", help="Generate a mapping to names")
 | 
				
			||||||
 | 
					    namemapparser.add_argument("--lang", default="stdc",
 | 
				
			||||||
 | 
					                        help="Output language (%s)" % (
 | 
				
			||||||
 | 
					                            ",".join(SRC_GENERATORS.keys())))
 | 
				
			||||||
 | 
					    namemapparser.add_argument("--varname", default=None, help="Data variable name")
 | 
				
			||||||
    namemapparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
					    namemapparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
				
			||||||
    namemapparser.add_argument("frommapname", help="Source code table name")
 | 
					    namemapparser.add_argument("frommapname", help="Source code table name")
 | 
				
			||||||
    namemapparser.add_argument("tomapname", help="Target name table name")
 | 
					    namemapparser.add_argument("tomapname", help="Target name table name")
 | 
				
			||||||
    namemapparser.set_defaults(func=name_map)
 | 
					    namemapparser.set_defaults(func=name_map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    nametableparser = subparsers.add_parser("name-table", help="Generate a flat name table")
 | 
					    nametableparser = subparsers.add_parser("name-table", help="Generate a flat name table")
 | 
				
			||||||
 | 
					    nametableparser.add_argument("--lang", default="stdc",
 | 
				
			||||||
 | 
					                        help="Output language, (%s)" % (
 | 
				
			||||||
 | 
					                            ",".join(SRC_GENERATORS.keys())))
 | 
				
			||||||
 | 
					    nametableparser.add_argument("--varname", default=None, help="Data variable name")
 | 
				
			||||||
    nametableparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
					    nametableparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
				
			||||||
    nametableparser.add_argument("mapname", help="Name table name")
 | 
					    nametableparser.add_argument("mapname", help="Name table name")
 | 
				
			||||||
    nametableparser.set_defaults(func=name_table)
 | 
					    nametableparser.set_defaults(func=name_table)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    codedocsparser = subparsers.add_parser("code-docs", help="Generate code documentation")
 | 
					    codedocsparser = subparsers.add_parser("code-docs", help="Generate code documentation")
 | 
				
			||||||
 | 
					    codedocsparser.add_argument("--lang", default="pod",
 | 
				
			||||||
 | 
					                        help="Output language (%s)" % (
 | 
				
			||||||
 | 
					                            ",".join(DOC_GENERATORS.keys())))
 | 
				
			||||||
 | 
					    codedocsparser.add_argument("--title", default=None, help="Document title")
 | 
				
			||||||
 | 
					    codedocsparser.add_argument("--subtitle", default=None, help="Document subtitle")
 | 
				
			||||||
    codedocsparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
					    codedocsparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
				
			||||||
    codedocsparser.add_argument("mapname", help="Code table name")
 | 
					    codedocsparser.add_argument("mapname", help="Code table name")
 | 
				
			||||||
    codedocsparser.set_defaults(func=code_docs)
 | 
					    codedocsparser.set_defaults(func=code_docs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    namedocsparser = subparsers.add_parser("name-docs", help="Generate name documentation")
 | 
					    namedocsparser = subparsers.add_parser("name-docs", help="Generate name documentation")
 | 
				
			||||||
 | 
					    namedocsparser.add_argument("--lang", default="pod",
 | 
				
			||||||
 | 
					                        help="Output language (%s)" % (
 | 
				
			||||||
 | 
					                            ",".join(DOC_GENERATORS.keys())))
 | 
				
			||||||
 | 
					    namedocsparser.add_argument("--title", default=None, help="Document title")
 | 
				
			||||||
 | 
					    namedocsparser.add_argument("--subtitle", default=None, help="Document subtitle")
 | 
				
			||||||
    namedocsparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
					    namedocsparser.add_argument("keymaps", help="Path to keymap CSV data file")
 | 
				
			||||||
    namedocsparser.add_argument("mapname", help="Name table name")
 | 
					    namedocsparser.add_argument("mapname", help="Name table name")
 | 
				
			||||||
    namedocsparser.set_defaults(func=name_docs)
 | 
					    namedocsparser.set_defaults(func=name_docs)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user