ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

kbdcz1.c
Go to the documentation of this file.
00001 /*
00002  * ReactOS Czech (QWERTY) ASCII Keyboard layout
00003  * Copyright (C) 2007 ReactOS
00004  * License: LGPL, see: LGPL.txt
00005  *
00006  * Based on other kbd*.dlls
00007  * modified by Kamil Hornicek (tykef at atlas dot cz)
00008  */
00009 
00010 #include <windows.h>
00011 #include <ndk/kbd.h>
00012 
00013 #ifdef _M_IA64
00014 #define ROSDATA static __declspec(allocate(".data"))
00015 #else
00016 #ifdef _MSC_VER
00017 #pragma data_seg(".data")
00018 #define ROSDATA static
00019 #else
00020 #define ROSDATA static __attribute__((section(".data")))
00021 #endif
00022 #endif
00023 
00024 #define VK_EMPTY  0xff   /* The non-existent VK */
00025 
00026 #define KNUMS     KBDNUMPAD|KBDSPECIAL /* Special + number pad */
00027 #define KMEXT     KBDEXT|KBDMULTIVK    /* Multi + ext */
00028 
00029 ROSDATA USHORT scancode_to_vk[] = {
00030   /* Numbers Row */
00031   /* - 00 - */
00032   /* 1 ...         2 ...         3 ...         4 ... */
00033   VK_EMPTY,     VK_ESCAPE,    '1',          '2',
00034   '3',          '4',          '5',          '6',
00035   '7',          '8',          '9',          '0',
00036   VK_OEM_MINUS, VK_OEM_PLUS,  VK_BACK,
00037   /* - 0f - */
00038   /* First Letters Row */
00039   VK_TAB,       'Q',          'W',          'E',
00040   'R',          'T',          'Y',          'U',
00041   'I',          'O',          'P',
00042   VK_OEM_4,     VK_OEM_6,     VK_RETURN,
00043   /* - 1d - */
00044   /* Second Letters Row */
00045   VK_LCONTROL,
00046   'A',          'S',          'D',          'F',
00047   'G',          'H',          'J',          'K',
00048   'L',          VK_OEM_1,     VK_OEM_7,     VK_OEM_3,
00049   VK_LSHIFT,    VK_OEM_5,
00050   /* - 2c - */
00051   /* Third letters row */
00052   'Z',          'X',          'C',          'V',
00053   'B',          'N',          'M',          VK_OEM_COMMA,
00054   VK_OEM_PERIOD,VK_OEM_2,     VK_RSHIFT,
00055   /* - 37 - */
00056   /* Bottom Row */
00057   VK_MULTIPLY,  VK_LMENU,     VK_SPACE,     VK_CAPITAL,
00058 
00059   /* - 3b - */
00060   /* F-Keys */
00061   VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6,
00062   VK_F7, VK_F8, VK_F9, VK_F10,
00063   /* - 45 - */
00064   /* Locks */
00065   VK_NUMLOCK | KMEXT,
00066   VK_SCROLL | KBDMULTIVK,
00067   /* - 47 - */
00068   /* Number-Pad */
00069   VK_HOME | KNUMS,      VK_UP | KNUMS,         VK_PRIOR | KNUMS, VK_SUBTRACT,
00070   VK_LEFT | KNUMS,      VK_CLEAR | KNUMS,      VK_RIGHT | KNUMS, VK_ADD,
00071   VK_END | KNUMS,       VK_DOWN | KNUMS,       VK_NEXT | KNUMS,
00072   VK_INSERT | KNUMS,    VK_DELETE | KNUMS,
00073   /* - 54 - */
00074   /* Presumably PrtSc */
00075   VK_SNAPSHOT,
00076   /* - 55 - */
00077   /* Oddities, and the remaining standard F-Keys */
00078   VK_EMPTY,     VK_EMPTY,     VK_F11,       VK_F12,
00079   /* - 59 - */
00080   VK_CLEAR,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY, /* EREOF */
00081   VK_EMPTY,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY,     VK_EMPTY, /* ZOOM */
00082   VK_HELP,
00083   /* - 64 - */
00084   /* Even more F-Keys (for example, NCR keyboards from the early 90's) */
00085   VK_F13, VK_F14, VK_F15, VK_F16, VK_F17, VK_F18, VK_F19, VK_F20,
00086   VK_F21, VK_F22, VK_F23,
00087   /* - 6f - */
00088   /* Not sure who uses these codes */
00089   VK_EMPTY, VK_EMPTY, VK_EMPTY,
00090   /* - 72 - */
00091   VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY,
00092   /* - 76 - */
00093   /* One more f-key */
00094   VK_F24,
00095   /* - 77 - */
00096   VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY,
00097   VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, /* PA1 */
00098   VK_EMPTY,
00099   /* - 80 - */
00100   0
00101 };
00102 
00103 ROSDATA VSC_VK extcode0_to_vk[] = {
00104   { 0x10, VK_MEDIA_PREV_TRACK | KBDEXT },
00105   { 0x19, VK_MEDIA_NEXT_TRACK | KBDEXT },
00106   { 0x1D, VK_RCONTROL | KBDEXT },
00107   { 0x20, VK_VOLUME_MUTE | KBDEXT },
00108   { 0x21, VK_LAUNCH_APP2 | KBDEXT },
00109   { 0x22, VK_MEDIA_PLAY_PAUSE | KBDEXT },
00110   { 0x24, VK_MEDIA_STOP | KBDEXT },
00111   { 0x2E, VK_VOLUME_DOWN | KBDEXT },
00112   { 0x30, VK_VOLUME_UP | KBDEXT },
00113   { 0x32, VK_BROWSER_HOME | KBDEXT },
00114   { 0x35, VK_DIVIDE | KBDEXT },
00115   { 0x37, VK_SNAPSHOT | KBDEXT },
00116   { 0x38, VK_RMENU | KBDEXT },
00117   { 0x47, VK_HOME | KBDEXT },
00118   { 0x48, VK_UP | KBDEXT },
00119   { 0x49, VK_PRIOR | KBDEXT },
00120   { 0x4B, VK_LEFT | KBDEXT },
00121   { 0x4D, VK_RIGHT | KBDEXT },
00122   { 0x4F, VK_END | KBDEXT },
00123   { 0x50, VK_DOWN | KBDEXT },
00124   { 0x51, VK_NEXT | KBDEXT },
00125   { 0x52, VK_INSERT | KBDEXT },
00126   { 0x53, VK_DELETE | KBDEXT },
00127   { 0x5B, VK_LWIN | KBDEXT },
00128   { 0x5C, VK_RWIN | KBDEXT },
00129   { 0x5D, VK_APPS | KBDEXT },
00130   { 0x5F, VK_SLEEP | KBDEXT },
00131   { 0x65, VK_BROWSER_SEARCH | KBDEXT },
00132   { 0x66, VK_BROWSER_FAVORITES | KBDEXT },
00133   { 0x67, VK_BROWSER_REFRESH | KBDEXT },
00134   { 0x68, VK_BROWSER_STOP | KBDEXT },
00135   { 0x69, VK_BROWSER_FORWARD | KBDEXT },
00136   { 0x6A, VK_BROWSER_BACK | KBDEXT },
00137   { 0x6B, VK_LAUNCH_APP1 | KBDEXT },
00138   { 0x6C, VK_LAUNCH_MAIL | KBDEXT },
00139   { 0x6D, VK_LAUNCH_MEDIA_SELECT | KBDEXT },
00140   { 0x1C, VK_RETURN | KBDEXT },
00141   { 0x46, VK_CANCEL | KBDEXT },
00142   { 0, 0 },
00143 };
00144 
00145 ROSDATA VSC_VK extcode1_to_vk[] = {
00146   { 0x1d, VK_PAUSE },
00147   { 0, 0 },
00148 };
00149 
00150 ROSDATA VK_TO_BIT modifier_keys[] = {
00151   { VK_SHIFT,   KBDSHIFT },
00152   { VK_CONTROL, KBDCTRL },
00153   { VK_MENU,    KBDALT },
00154   { 0,          0 }
00155 };
00156 
00157 ROSDATA MODIFIERS modifier_bits = {
00158   modifier_keys,
00159   7,
00160   { 0, 1, 2, 0, 0, 0, 3, 0 }
00161   /* Modifier bit order: NONE, SHIFT, CTRL, SHIFT-CTRL, ALT (not used), SHIFT-ALT (not used), CTRL-ALT, SHIFT-CTRL-ALT */
00162 };
00163 
00164 ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
00165    /* Keys that do not have shift states */
00166   { VK_TAB,         0, {'\t','\t'} },
00167   { VK_ADD,         0, {'+', '+'} },
00168   { VK_SUBTRACT,    0, {'-', '-'} },
00169   { VK_MULTIPLY,    0, {'*', '*'} },
00170   { VK_DIVIDE,      0, {'/', '/'} },
00171   { VK_OEM_2       ,0, {'-', '_'} },
00172   { VK_ESCAPE,      0, {0x1b,0x1b} },
00173   { VK_SPACE,       0, {' ', ' '} },
00174   { 0, 0 }
00175 };
00176 
00177 ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
00178   /* normal - shift - ctrl */
00179   /* The alphabet */
00180   { 'A',    CAPLOK,   {'a', 'A', 0x01} },
00181   { 'B',    CAPLOK,   {'b', 'B', 0x02} },
00182   { 'C',    CAPLOK,   {'c', 'C', 0x03} },
00183   { 'D',    CAPLOK,   {'d', 'D', 0x04} },
00184   { 'F',    CAPLOK,   {'f', 'F', 0x06} },
00185   { 'G',    CAPLOK,   {'g', 'G', 0x07} },
00186   { 'H',    CAPLOK,   {'h', 'H', 0x08} },
00187   { 'I',    CAPLOK,   {'i', 'I', 0x09} },
00188   { 'J',    CAPLOK,   {'j', 'J', 0x0a} },
00189   { 'K',    CAPLOK,   {'k', 'K', 0x0b} },
00190   { 'L',    CAPLOK,   {'l', 'L', 0x0c} },
00191   { 'M',    CAPLOK,   {'m', 'M', 0x0d} },
00192   { 'N',    CAPLOK,   {'n', 'N', 0x0e} },
00193   { 'O',    CAPLOK,   {'o', 'O', 0x0f} },
00194   { 'P',    CAPLOK,   {'p', 'P', 0x10} },
00195   { 'Q',    CAPLOK,   {'q', 'Q', 0x11} },
00196   { 'R',    CAPLOK,   {'r', 'R', 0x12} },
00197   { 'S',    CAPLOK,   {'s', 'S', 0x13} },
00198   { 'T',    CAPLOK,   {'t', 'T', 0x14} },
00199   { 'U',    CAPLOK,   {'u', 'U', 0x15} },
00200   { 'V',    CAPLOK,   {'v', 'V', 0x16} },
00201   { 'W',    CAPLOK,   {'w', 'W', 0x17} },
00202   { 'X',    CAPLOK,   {'x', 'X', 0x18} },
00203   { 'Y',    CAPLOK,   {'y', 'Y', 0x19} },
00204   { 'Z',    CAPLOK,   {'z', 'Z', 0x1a} },
00205 
00206   /* Legacy (telnet-style) ascii escapes */
00207   { VK_RETURN,  0, {'\r',     '\r',     '\n'}    },
00208   { 0,0 }
00209 };
00210 
00211 ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
00212 /* Normal, shifted, control, Alt+Gr */
00213   { '1',            0, {'+',        '1',        WCH_NONE,   '!'             } },
00214   { '2',            0, {0x011b, '2',        0,          '@'             } }, // e with caron
00215   { '3',            0, {0x0161, '3',        WCH_NONE,   '#'             } }, // s with caron
00216   { '4',            0, {0x010d, '4',        WCH_NONE,   '$'             } }, // c with caron
00217   { '5',            0, {0x0159, '5',        WCH_NONE,   '%'             } }, // r with caron
00218   { '6',            0, {0x017e, '6',        0x1e,       '^'             } }, // z with caron
00219   { '7',            0, {0x00fd, '7',        WCH_NONE,   '&'             } }, // y with acute
00220   { '8',            0, {0x00e1, '8',        WCH_NONE,   '*'             } }, // a with acute
00221   { '9',            0, {0x00ed, '9',        WCH_NONE,   '('             } }, // i with acute
00222   { '0',            0, {0x00e9, '0',        WCH_NONE,   ')'             } }, // e with acute
00223   { VK_OEM_PLUS,    0, {WCH_DEAD,   WCH_DEAD,   WCH_NONE,   '='             } }, // dead letters - acute, caron
00224   { VK_EMPTY,       0,      {0x00b4,    0x02c7,     WCH_NONE,   WCH_NONE        } }, // VK_OEM_PLUS death
00225   { VK_OEM_MINUS,   0, {'=',        '%',        0x1f,       '-'             } },
00226   { VK_OEM_1,       0, {0x016f, '\"',       WCH_NONE,   ';'             } }, // u with ring
00227   { VK_OEM_7,       0, {0x00a7, '!',        WCH_NONE,   0x00a4          } }, // section sign
00228   { VK_OEM_4,       0, {0x00fa, '/',        WCH_NONE,   '['             } }, // u with acute
00229   { VK_OEM_5,       0, {WCH_DEAD,   0x2018,     WCH_NONE,   '\\'            } }, // diaeresis, left single quotation mark
00230   { VK_EMPTY,       0,      {0x00a8,    WCH_NONE,   WCH_NONE,   WCH_NONE        } }, // VK_OEM_5 death
00231   { VK_OEM_6,       0, {')',        '(',        WCH_NONE,   ']'             } },
00232   { VK_OEM_3,       0, {';',        WCH_DEAD,   WCH_NONE,   '`'             } }, // ring
00233   { VK_EMPTY,       0,      {WCH_NONE,  0x00b0,     WCH_NONE,   WCH_NONE        } }, // VK_OEM_3 death
00234   { VK_OEM_COMMA,   0, {',',        '?',        WCH_NONE,   '<'             } },
00235   { VK_OEM_PERIOD,  0, {'.',        ':',        WCH_NONE,   '>'             } },
00236   { 'E',            CAPLOK,   {'e',         'E',        0x05,       0x20AC          } }, // symbol for euro (currency)
00237   { 0, 0 }
00238 };
00239 
00240 ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
00241   { VK_DECIMAL, 0, {','} },
00242   { VK_NUMPAD0, 0, {'0'} },
00243   { VK_NUMPAD1, 0, {'1'} },
00244   { VK_NUMPAD2, 0, {'2'} },
00245   { VK_NUMPAD3, 0, {'3'} },
00246   { VK_NUMPAD4, 0, {'4'} },
00247   { VK_NUMPAD5, 0, {'5'} },
00248   { VK_NUMPAD6, 0, {'6'} },
00249   { VK_NUMPAD7, 0, {'7'} },
00250   { VK_NUMPAD8, 0, {'8'} },
00251   { VK_NUMPAD9, 0, {'9'} },
00252   { VK_BACK,    0, {'\010'} },
00253   { 0, 0 }
00254 };
00255 
00256 #define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
00257 
00258 ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = {
00259   vk_master(1,keypad_numbers),
00260   vk_master(2,key_to_chars_2mod),
00261   vk_master(3,key_to_chars_3mod),
00262   vk_master(4,key_to_chars_4mod),
00263   { 0,0,0 }
00264 };
00265 
00266 ROSDATA VSC_LPWSTR key_names[] = {
00267   { 0x00, L"" },
00268   { 0x01, L"Esc" },
00269   { 0x0e, L"Backspace" },
00270   { 0x0f, L"Tab" },
00271   { 0x1c, L"Enter" },
00272   { 0x1d, L"Ctrl" },
00273   { 0x2a, L"Shift" },
00274   { 0x36, L"Right Shift" },
00275   { 0x37, L"Num *" },
00276   { 0x38, L"Alt" },
00277   { 0x39, L"Space" },
00278   { 0x3a, L"CAPLOK Lock" },
00279   { 0x3b, L"F1" },
00280   { 0x3c, L"F2" },
00281   { 0x3d, L"F3" },
00282   { 0x3e, L"F4" },
00283   { 0x3f, L"F5" },
00284   { 0x40, L"F6" },
00285   { 0x41, L"F7" },
00286   { 0x42, L"F8" },
00287   { 0x43, L"F9" },
00288   { 0x44, L"F10" },
00289   { 0x45, L"Pause" },
00290   { 0x46, L"Scroll Lock" },
00291   { 0x47, L"Num 7" },
00292   { 0x48, L"Num 8" },
00293   { 0x49, L"Num 9" },
00294   { 0x4a, L"Num -" },
00295   { 0x4b, L"Num 4" },
00296   { 0x4c, L"Num 5" },
00297   { 0x4d, L"Num 6" },
00298   { 0x4e, L"Num +" },
00299   { 0x4f, L"Num 1" },
00300   { 0x50, L"Num 2" },
00301   { 0x51, L"Num 3" },
00302   { 0x52, L"Num 0" },
00303   { 0x53, L"Num Del" },
00304   { 0x54, L"Sys Req" },
00305   { 0x57, L"F11" },
00306   { 0x58, L"F12" },
00307   { 0x7c, L"F13" },
00308   { 0x7d, L"F14" },
00309   { 0x7e, L"F15" },
00310   { 0x7f, L"F16" },
00311   { 0x80, L"F17" },
00312   { 0x81, L"F18" },
00313   { 0x82, L"F19" },
00314   { 0x83, L"F20" },
00315   { 0x84, L"F21" },
00316   { 0x85, L"F22" },
00317   { 0x86, L"F23" },
00318   { 0x87, L"F24" },
00319   { 0, NULL },
00320 };
00321 
00322 ROSDATA VSC_LPWSTR extended_key_names[] = {
00323   { 0x1c, L"Num Enter" },
00324   { 0x1d, L"Right Ctrl" },
00325   { 0x35, L"Num /" },
00326   { 0x37, L"Prnt Scrn" },
00327   { 0x38, L"Right Alt" },
00328   { 0x45, L"Num Lock" },
00329   { 0x46, L"Break" },
00330   { 0x47, L"Home" },
00331   { 0x48, L"Up" },
00332   { 0x49, L"Page Up" },
00333   { 0x4a, L"Left" },
00334   { 0x4c, L"Center" },
00335   { 0x4d, L"Right" },
00336   { 0x4f, L"End" },
00337   { 0x50, L"Down" },
00338   { 0x51, L"Page Down" },
00339   { 0x52, L"Insert" },
00340   { 0x53, L"Delete" },
00341   { 0x54, L"<ReactOS>" },
00342   { 0x55, L"Help" },
00343   { 0x56, L"Left Windows" },
00344   { 0x5b, L"Right Windows" },
00345   { 0, NULL },
00346 };
00347 
00348 #define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
00349 
00350 ROSDATA DEADKEY dead_key[] = {
00351    { DEADTRANS(0x0043, 0x02c7, 0x010c, 0x0000) },  // C with caron
00352    { DEADTRANS(0x0063, 0x02c7, 0x010d, 0x0000) },  // c with caron
00353    { DEADTRANS(0x0045, 0x02c7, 0x011a, 0x0000) },  // E with caron
00354    { DEADTRANS(0x0065, 0x02c7, 0x011b, 0x0000) },  // e with caron
00355    { DEADTRANS(0x0044, 0x02c7, 0x010e, 0x0000) },  // D with caron
00356    { DEADTRANS(0x0064, 0x02c7, 0x010f, 0x0000) },  // d with caron
00357    { DEADTRANS(0x004c, 0x02c7, 0x013d, 0x0000) },  // L with caron
00358    { DEADTRANS(0x006c, 0x02c7, 0x013e, 0x0000) },  // l with caron
00359    { DEADTRANS(0x004e, 0x02c7, 0x0147, 0x0000) },  // N with caron
00360    { DEADTRANS(0x006e, 0x02c7, 0x0148, 0x0000) },  // n with caron
00361    { DEADTRANS(0x0053, 0x02c7, 0x0160, 0x0000) },  // S with caron
00362    { DEADTRANS(0x0073, 0x02c7, 0x0161, 0x0000) },  // s with caron
00363    { DEADTRANS(0x0052, 0x02c7, 0x0158, 0x0000) },  // R with acute
00364    { DEADTRANS(0x0072, 0x02c7, 0x0159, 0x0000) },  // r with acute
00365    { DEADTRANS(0x0054, 0x02c7, 0x0164, 0x0000) },  // T with caron
00366    { DEADTRANS(0x0074, 0x02c7, 0x0165, 0x0000) },  // t with caron
00367    { DEADTRANS(0x005a, 0x02c7, 0x017d, 0x0000) },  // Z with caron
00368    { DEADTRANS(0x007a, 0x02c7, 0x017e, 0x0000) },  // z with caron
00369    { DEADTRANS(0x0020, 0x02c7, 0x02c7, 0x0000) },  // space > caron
00370 
00371    { DEADTRANS(0x0041, 0x00b4, 0x00c1, 0x0000) },  // A with acute
00372    { DEADTRANS(0x0061, 0x00b4, 0x00e1, 0x0000) },  // a with acute
00373    { DEADTRANS(0x0045, 0x00b4, 0x00c9, 0x0000) },  // E with acute
00374    { DEADTRANS(0x0065, 0x00b4, 0x00e9, 0x0000) },  // e with acute
00375    { DEADTRANS(0x0049, 0x00b4, 0x00cd, 0x0000) },  // I with acute
00376    { DEADTRANS(0x0069, 0x00b4, 0x00ed, 0x0000) },  // i with acute
00377    { DEADTRANS(0x004c, 0x00b4, 0x0139, 0x0000) },  // L with acute
00378    { DEADTRANS(0x006c, 0x00b4, 0x013a, 0x0000) },  // l with acute
00379    { DEADTRANS(0x004f, 0x00b4, 0x00d3, 0x0000) },  // O with acute
00380    { DEADTRANS(0x006f, 0x00b4, 0x00f3, 0x0000) },  // o with acute
00381    { DEADTRANS(0x0052, 0x00b4, 0x0154, 0x0000) },  // R with acute
00382    { DEADTRANS(0x0072, 0x00b4, 0x0155, 0x0000) },  // r with acute
00383    { DEADTRANS(0x0055, 0x00b4, 0x00da, 0x0000) },  // U with acute
00384    { DEADTRANS(0x0075, 0x00b4, 0x00fa, 0x0000) },  // u with acute
00385    { DEADTRANS(0x0059, 0x00b4, 0x00dd, 0x0000) },  // Y with acute
00386    { DEADTRANS(0x0079, 0x00b4, 0x00fd, 0x0000) },  // y with acute
00387    { DEADTRANS(0x005a, 0x00b4, 0x0179, 0x0000) },  // Z with acute
00388    { DEADTRANS(0x007a, 0x00b4, 0x017a, 0x0000) },  // z with acute
00389    { DEADTRANS(0x0020, 0x00b4, 0x00b4, 0x0000) },  // space > acute
00390 
00391    { DEADTRANS(0x0041, 0x00a8, 0x00c4, 0x0000) },  // A with diaeresis
00392    { DEADTRANS(0x0061, 0x00a8, 0x00e4, 0x0000) },  // a with diaeresis
00393    { DEADTRANS(0x0045, 0x00a8, 0x00cb, 0x0000) },  // E with diaeresis
00394    { DEADTRANS(0x0065, 0x00a8, 0x00eb, 0x0000) },  // e with diaeresis
00395    { DEADTRANS(0x004f, 0x00a8, 0x00d6, 0x0000) },  // O with diaeresis
00396    { DEADTRANS(0x006f, 0x00a8, 0x00f6, 0x0000) },  // o with diaeresis
00397    { DEADTRANS(0x0055, 0x00a8, 0x00dc, 0x0000) },  // U with diaeresis
00398    { DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) },  // u with diaeresis
00399    { DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) },  // space > diaeresis
00400 
00401    { DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) },  // U with round
00402    { DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) },  // u with round
00403    { DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) },  // space > round
00404    { 0, 0, 0 },
00405 };
00406 
00407 ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
00408     L"\x00a1"   L"hacek",   // caron
00409     L"\x00b4"   L"carka",   // acute
00410     L"\x005e"   L"krouzek", // round
00411     NULL
00412 };
00413 
00414 /* Finally, the master table */
00415 ROSDATA KBDTABLES keyboard_layout_table = {
00416   /* modifier assignments */
00417   &modifier_bits,
00418 
00419   /* character from vk tables */
00420   vk_to_wchar_master_table,
00421 
00422   /* diacritical marks -- */
00423   dead_key,
00424 
00425   /* Key names */
00426   (VSC_LPWSTR *)key_names,
00427   (VSC_LPWSTR *)extended_key_names,
00428   dead_key_names, /* Dead key names */
00429 
00430   /* scan code to virtual key maps */
00431   scancode_to_vk,
00432   sizeof(scancode_to_vk) / sizeof(scancode_to_vk[0]),
00433   extcode0_to_vk,
00434   extcode1_to_vk,
00435 
00436   MAKELONG(KLLF_ALTGR, 1), /* Version 1.0 */
00437 
00438   /* Ligatures -- Czech keyboard doesn't have any */
00439   0,
00440   0,
00441   NULL
00442 };
00443 
00444 PKBDTABLES WINAPI KbdLayerDescriptor(VOID) {
00445   return &keyboard_layout_table;
00446 }
00447 

Generated on Sat May 26 2012 04:20:55 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.