; Sample custom keyboard translation table for German keyboards
; (Note that German is already natively supported by the game, this only serves as an exmaple)
;
; This file is used to modify/patch the default US keyboard table, so only key entries that
; differ from that need to be configured here.


; The filename of this file must be in the form of "kdb_<id>.ini", where <id> is defined as the
; 8 character long windows keyboard layout id as supplied to function LoadKeyboardLayout
; (see http://msdn.microsoft.com/en-us/library/ms646305%28VS.85%29.aspx and
;  http://msdn.microsoft.com/en-us/library/dd318693%28v=VS.85%29.aspx)
;
; Other lists of id:s can be found with a bit of googling, for example
; Keyboard Driver Reference table on http://support.microsoft.com/kb/139177
;
; The German id is 00000407 so the file is named "kbd_00000407.ini"
;
; You can let the game attempt to automatically detect the keyboard layout, and try to load a translation
; table if it's not natively supported, by enabling the "ext_kb_country_check" config var.
;
; OR
;
; You can explicitly set they keyboard language/id with the config var "kb_country", with a value of
; 0 to 6 for native layouts or an <id>. When specifying an <id> it will only attempt to use a custom
; translation table, if none is found it will fail, even if the language is also supported natively.
;
; The native languages are:
;     0 US
;     1 French
;     2 German
;     3 UK
;     4 French-Canadian
;     5 Italian
;     6 Spanish
;
; Ex: "kb_country 2"
; Ex: "kb_country 00000407"

; Supported scan codes are from 0x00 through 0xDF.
; Characters that have a different ASCII code in Windows than DOS, must be specified with their DOS value
; in the form of a numeric value (like 0xE6 or 230) instead of a 'µ' style value. C/C++ rules apply when
; specifying ' and \ chars, so they become '\'' and '\\'.

; scan code, ascii, shifted, alt-gr/r-alt
0x32, ALPHA('m'),  ALPHA('M'),  ALPHA(0xE6)	; m M µ
0x10, ALPHA('q'),  ALPHA('Q'),  ASCII('@')
0x15, ALPHA('z'),  ALPHA('Z'),  0
0x2C, ALPHA('y'),  ALPHA('Y'),  0
0x0B, ASCII('0'),  ASCII('='),  ASCII('}')
0x03, ASCII('2'),  ASCII('"'),  ASCII(0xFD)	; 2 " ²
0x04, ASCII('3'),  ASCII(0x15), ASCII(0xFC)	; 3 § ³
0x07, ASCII('6'),  ASCII('&'),  0
0x08, ASCII('7'),  ASCII('/'),  ASCII('{')
0x09, ASCII('8'),  ASCII('('),  ASCII('[')
0x0A, ASCII('9'),  ASCII(')'),  ASCII(']')
0x28, ALPHA(0x84), ALPHA(0x8E), 0		; ä Ä
0x33, ASCII(','),  ASCII(';'),  0
0x0C, ALPHA(0xE1), ASCII('?'),  ASCII('\\')	; ß ? \
0x34, ASCII('.'),  ASCII(':'),  0
0x35, ASCII('-'),  ASCII('_'),  0
0x27, ALPHA(0x94), ALPHA(0x99), 0		; ö Ö
0x0D, ASCII('\''), ASCII('`'),  0
0x1A, ALPHA(0x81), ALPHA(0x9A), 0		; ü ü
0x1B, ASCII('+'),  ASCII('*'),  ASCII('~')
0x29, ASCII('^'),  ASCII(0xF8), 0		; ^ °
0x2B, ASCII('#'),  ASCII('\''), 0
0x56, ASCII('<'),  ASCII('>'),  ASCII('|')
