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

kbdcz.c
Go to the documentation of this file.
00001 /*
00002  * ReactOS Czech ASCII Keyboard layout
00003  * Copyright (C) 2008 ReactOS
00004  * License: LGPL, see: LGPL.txt
00005  *
00006  * Based on kbdcz1.dll and kbdsk.dll
00007  * modified by Radek Liska (radekliska att gmail ddot com)
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',          'Z',          '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   'Y',          '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_OEM_102,     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_ESCAPE,   0, {0x1b, 0x1b} },
00172   { VK_SPACE,    0, {' ',    ' '   } },
00173   { 0, 0 }
00174 };
00175 
00176 ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
00177   /* normal - shift - ctrl */
00178 
00179   /* Legacy (telnet-style) ascii escapes */
00180   { VK_OEM_102, 0, {'\\', '|',  0x1c /*FS*/} },
00181   { VK_RETURN,  0, {'\r', '\r', '\n'       } },
00182   { 0,0 }
00183 };
00184 
00185 ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
00186 /* Normal, shifted, control, Alt+Gr */
00187   /* The numbers */
00188   { '1',      0, { '+',      '1',      WCH_NONE, '~'      } },
00189   { '2',      0, { 0x011b,   '2',      0,        WCH_DEAD } }, // e with caron
00190   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x02c7   } }, // 2 dead letter
00191   { '3',      0, { 0x0161,   '3',      WCH_NONE, WCH_DEAD } }, // s with caron
00192   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x005e   } }, // 3 dead letter
00193   { '4',      0, { 0x010d,   '4',      WCH_NONE, WCH_DEAD } }, // c with caron
00194   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x02d8   } }, // 4 dead letter
00195   { '5',      0, { 0x0159,   '5',      WCH_NONE, WCH_DEAD } }, // r with caron
00196   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x00b0   } }, // 5 dead letter
00197   { '6',      0, { 0x017e,   '6',      0x1e,     WCH_DEAD } }, // z with caron
00198   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x02db   } }, // 6 dead letter
00199   { '7',      0, { 0x00fd,   '7',      WCH_NONE, WCH_DEAD } }, // y with acute
00200   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, '`'      } }, // 7 dead letter
00201   { '8',      0, { 0x00e1,   '8',      WCH_NONE, WCH_DEAD } }, // a with acute
00202   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x00b7   } }, // 8 dead letter
00203   { '9',      0, { 0x00ed,   '9',      WCH_NONE, WCH_DEAD } }, // i with acute
00204   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x00b4   } }, // 9 dead letter
00205   { '0',      0, { 0x00e9,   '0',      WCH_NONE, WCH_DEAD } }, // e with acute
00206   { VK_EMPTY, 0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x02dd   } }, // 0 dead letter
00207   
00208   /* The misc */
00209   { VK_OEM_MINUS,  0, { '=',      '%',      WCH_NONE, WCH_DEAD } }, // diaeresis
00210   { VK_EMPTY,      0, { WCH_NONE, WCH_NONE, WCH_NONE, 0x00a8   } }, // VK_OEM_MINUS dead letter
00211   { VK_OEM_PLUS,   0, { WCH_DEAD, WCH_DEAD, WCH_NONE, 0x00b8   } }, // dead letters - acute, caron
00212   { VK_EMPTY,      0, { 0x00b4,   0x02c7,   WCH_NONE, WCH_NONE } }, // VK_OEM_PLUS dead letter
00213   { VK_OEM_1,      0, { 0x016f,   '\"',     WCH_NONE, '$'      } }, // u with ring
00214   { VK_OEM_7,      0, { '§',      '!',      WCH_NONE, 0x00df   } }, // section sign
00215   { VK_OEM_4,      0, { 0x00fa,   '/',      WCH_NONE, 0x00f7   } }, // u with acute
00216   { VK_OEM_5,      0, { WCH_DEAD, 0x2018,   WCH_NONE, 0x00a4   } }, // diaeresis, left single quotation mark
00217   { VK_EMPTY,      0, { 0x00a8,   WCH_NONE, WCH_NONE, WCH_NONE } }, // VK_OEM_5 dead letter
00218   { VK_OEM_6,      0, { ')',      '(',      WCH_NONE, 0x00d7   } },
00219   { VK_OEM_3,      0, { ';',      WCH_DEAD, WCH_NONE, WCH_NONE } }, // diacritic ring
00220   { VK_EMPTY,      0, { WCH_NONE, 0x00b0,   WCH_NONE, WCH_NONE } }, // VK_OEM_3 dead letter
00221   { VK_OEM_COMMA,  0, { ',',      '?',      WCH_NONE, '<'      } },
00222   { VK_OEM_PERIOD, 0, { '.',      ':',      WCH_NONE, '>'      } },
00223   { VK_OEM_2,      0, { '-',      '_',      WCH_NONE, '*'      } },
00224   
00225     /* The alphabet */
00226   { 'A',  CAPLOK,  {'a', 'A', 0x01,  WCH_NONE }  },
00227   { 'B',  CAPLOK,  {'b', 'B', 0x02,  '{' }  },
00228   { 'C',  CAPLOK,  {'c', 'C', 0x03,  '&' }  },
00229   { 'D',  CAPLOK,  {'d', 'D', 0x04,  0x0110 }  },
00230   { 'E',  CAPLOK,  {'e', 'E', 0x05,  0x20AC }  },
00231   { 'F',  CAPLOK,  {'f', 'F', 0x06,  '[' }  },
00232   { 'G',  CAPLOK,  {'g', 'G', 0x07,  ']' }  },
00233   { 'H',  CAPLOK,  {'h', 'H', 0x08,  WCH_NONE }  },
00234   { 'I',  CAPLOK,  {'i', 'I', 0x09,  WCH_NONE }  },
00235   { 'J',  CAPLOK,  {'j', 'J', 0x0a,  WCH_NONE }  },
00236   { 'K',  CAPLOK,  {'k', 'K', 0x0b,  0x0142 }  },
00237   { 'L',  CAPLOK,  {'l', 'L', 0x0c,  0x0141 }  },
00238   { 'M',  CAPLOK,  {'m', 'M', 0x0d,  WCH_NONE }  },
00239   { 'N',  CAPLOK,  {'n', 'N', 0x0e,  '}' }  },
00240   { 'O',  CAPLOK,  {'o', 'O', 0x0f,  WCH_NONE }  },
00241   { 'P',  CAPLOK,  {'p', 'P', 0x10,  WCH_NONE }  },
00242   { 'Q',  CAPLOK,  {'q', 'Q', 0x11,  '\\' }  },
00243   { 'R',  CAPLOK,  {'r', 'R', 0x12,  WCH_NONE }  },
00244   { 'S',  CAPLOK,  {'s', 'S', 0x13,  WCH_NONE }  },
00245   { 'T',  CAPLOK,  {'t', 'T', 0x14,  WCH_NONE }  },
00246   { 'U',  CAPLOK,  {'u', 'U', 0x15,  WCH_NONE }  },
00247   { 'V',  CAPLOK,  {'v', 'V', 0x16,  '@' }  },
00248   { 'W',  CAPLOK,  {'w', 'W', 0x17,  '|' }  },
00249   { 'X',  CAPLOK,  {'x', 'X', 0x18,  '#' }  },
00250   { 'Y',  CAPLOK,  {'y', 'Y', 0x19,  WCH_NONE }  },
00251   { 'Z',  CAPLOK,  {'z', 'Z', 0x1a,  WCH_NONE }  },
00252   { 0, 0 }
00253 };
00254 
00255 ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
00256   { VK_NUMPAD0, 0, {'0'} },
00257   { VK_NUMPAD1, 0, {'1'} },
00258   { VK_NUMPAD2, 0, {'2'} },
00259   { VK_NUMPAD3, 0, {'3'} },
00260   { VK_NUMPAD4, 0, {'4'} },
00261   { VK_NUMPAD5, 0, {'5'} },
00262   { VK_NUMPAD6, 0, {'6'} },
00263   { VK_NUMPAD7, 0, {'7'} },
00264   { VK_NUMPAD8, 0, {'8'} },
00265   { VK_NUMPAD9, 0, {'9'} },
00266   { VK_DECIMAL, 0, {','} },
00267   { VK_BACK,    0, {'\010'} },
00268   { 0, 0 }
00269 };
00270 
00271 #define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
00272 
00273 ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = {
00274   vk_master(1,keypad_numbers),
00275   vk_master(2,key_to_chars_2mod),
00276   vk_master(3,key_to_chars_3mod),
00277   vk_master(4,key_to_chars_4mod),
00278   { 0,0,0 }
00279 };
00280 
00281 ROSDATA VSC_LPWSTR key_names[] = {
00282   { 0x00, L"" },
00283   { 0x01, L"Esc" },
00284   { 0x0e, L"Backspace" },
00285   { 0x0f, L"Tab" },
00286   { 0x1c, L"Enter" },
00287   { 0x1d, L"Ctrl" },
00288   { 0x2a, L"Shift" },
00289   { 0x36, L"Right Shift" },
00290   { 0x37, L"Num *" },
00291   { 0x38, L"Alt" },
00292   { 0x39, L"Space" },
00293   { 0x3a, L"CAPLOK Lock" },
00294   { 0x3b, L"F1" },
00295   { 0x3c, L"F2" },
00296   { 0x3d, L"F3" },
00297   { 0x3e, L"F4" },
00298   { 0x3f, L"F5" },
00299   { 0x40, L"F6" },
00300   { 0x41, L"F7" },
00301   { 0x42, L"F8" },
00302   { 0x43, L"F9" },
00303   { 0x44, L"F10" },
00304   { 0x45, L"Pause" },
00305   { 0x46, L"Scroll Lock" },
00306   { 0x47, L"Num 7" },
00307   { 0x48, L"Num 8" },
00308   { 0x49, L"Num 9" },
00309   { 0x4a, L"Num -" },
00310   { 0x4b, L"Num 4" },
00311   { 0x4c, L"Num 5" },
00312   { 0x4d, L"Num 6" },
00313   { 0x4e, L"Num +" },
00314   { 0x4f, L"Num 1" },
00315   { 0x50, L"Num 2" },
00316   { 0x51, L"Num 3" },
00317   { 0x52, L"Num 0" },
00318   { 0x53, L"Num Del" },
00319   { 0x54, L"Sys Req" },
00320   { 0x57, L"F11" },
00321   { 0x58, L"F12" },
00322   { 0x7c, L"F13" },
00323   { 0x7d, L"F14" },
00324   { 0x7e, L"F15" },
00325   { 0x7f, L"F16" },
00326   { 0x80, L"F17" },
00327   { 0x81, L"F18" },
00328   { 0x82, L"F19" },
00329   { 0x83, L"F20" },
00330   { 0x84, L"F21" },
00331   { 0x85, L"F22" },
00332   { 0x86, L"F23" },
00333   { 0x87, L"F24" },
00334   { 0, NULL },
00335 };
00336 
00337 ROSDATA VSC_LPWSTR extended_key_names[] = {
00338   { 0x1c, L"Num Enter" },
00339   { 0x1d, L"Right Ctrl" },
00340   { 0x35, L"Num /" },
00341   { 0x37, L"Prnt Scrn" },
00342   { 0x38, L"Right Alt" },
00343   { 0x45, L"Num Lock" },
00344   { 0x46, L"Break" },
00345   { 0x47, L"Home" },
00346   { 0x48, L"Up" },
00347   { 0x49, L"Page Up" },
00348   { 0x4a, L"Left" },
00349   { 0x4c, L"Center" },
00350   { 0x4d, L"Right" },
00351   { 0x4f, L"End" },
00352   { 0x50, L"Down" },
00353   { 0x51, L"Page Down" },
00354   { 0x52, L"Insert" },
00355   { 0x53, L"Delete" },
00356   { 0x54, L"<ReactOS>" },
00357   { 0x55, L"Help" },
00358   { 0x56, L"Left Windows" },
00359   { 0x5b, L"Right Windows" },
00360   { 0, NULL },
00361 };
00362 
00363 #define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
00364 
00365 ROSDATA DEADKEY dead_key[] = {
00366    { DEADTRANS(0x0043, 0x02c7, 0x010c, 0x0000) },  // C with caron
00367    { DEADTRANS(0x0063, 0x02c7, 0x010d, 0x0000) },  // c with caron
00368    { DEADTRANS(0x0045, 0x02c7, 0x011a, 0x0000) },  // E with caron
00369    { DEADTRANS(0x0065, 0x02c7, 0x011b, 0x0000) },  // e with caron
00370    { DEADTRANS(0x0044, 0x02c7, 0x010e, 0x0000) },  // D with caron
00371    { DEADTRANS(0x0064, 0x02c7, 0x010f, 0x0000) },  // d with caron
00372    { DEADTRANS(0x004c, 0x02c7, 0x013d, 0x0000) },  // L with caron
00373    { DEADTRANS(0x006c, 0x02c7, 0x013e, 0x0000) },  // l with caron
00374    { DEADTRANS(0x004e, 0x02c7, 0x0147, 0x0000) },  // N with caron
00375    { DEADTRANS(0x006e, 0x02c7, 0x0148, 0x0000) },  // n with caron
00376    { DEADTRANS(0x0053, 0x02c7, 0x0160, 0x0000) },  // S with caron
00377    { DEADTRANS(0x0073, 0x02c7, 0x0161, 0x0000) },  // s with caron
00378    { DEADTRANS(0x0052, 0x02c7, 0x0158, 0x0000) },  // R with acute
00379    { DEADTRANS(0x0072, 0x02c7, 0x0159, 0x0000) },  // r with acute
00380    { DEADTRANS(0x0054, 0x02c7, 0x0164, 0x0000) },  // T with caron
00381    { DEADTRANS(0x0074, 0x02c7, 0x0165, 0x0000) },  // t with caron
00382    { DEADTRANS(0x005a, 0x02c7, 0x017d, 0x0000) },  // Z with caron
00383    { DEADTRANS(0x007a, 0x02c7, 0x017e, 0x0000) },  // z with caron
00384    { DEADTRANS(0x0020, 0x02c7, 0x02c7, 0x0000) },  // space > caron
00385 
00386    { DEADTRANS(0x0041, 0x00b4, 0x00c1, 0x0000) },  // A with acute
00387    { DEADTRANS(0x0061, 0x00b4, 0x00e1, 0x0000) },  // a with acute
00388    { DEADTRANS(0x0045, 0x00b4, 0x00c9, 0x0000) },  // E with acute
00389    { DEADTRANS(0x0065, 0x00b4, 0x00e9, 0x0000) },  // e with acute
00390    { DEADTRANS(0x0049, 0x00b4, 0x00cd, 0x0000) },  // I with acute
00391    { DEADTRANS(0x0069, 0x00b4, 0x00ed, 0x0000) },  // i with acute
00392    { DEADTRANS(0x004c, 0x00b4, 0x0139, 0x0000) },  // L with acute
00393    { DEADTRANS(0x006c, 0x00b4, 0x013a, 0x0000) },  // l with acute
00394    { DEADTRANS(0x004f, 0x00b4, 0x00d3, 0x0000) },  // O with acute
00395    { DEADTRANS(0x006f, 0x00b4, 0x00f3, 0x0000) },  // o with acute
00396    { DEADTRANS(0x0052, 0x00b4, 0x0154, 0x0000) },  // R with acute
00397    { DEADTRANS(0x0072, 0x00b4, 0x0155, 0x0000) },  // r with acute
00398    { DEADTRANS(0x0055, 0x00b4, 0x00da, 0x0000) },  // U with acute
00399    { DEADTRANS(0x0075, 0x00b4, 0x00fa, 0x0000) },  // u with acute
00400    { DEADTRANS(0x0059, 0x00b4, 0x00dd, 0x0000) },  // Y with acute
00401    { DEADTRANS(0x0079, 0x00b4, 0x00fd, 0x0000) },  // y with acute
00402    { DEADTRANS(0x005a, 0x00b4, 0x0179, 0x0000) },  // Z with acute
00403    { DEADTRANS(0x007a, 0x00b4, 0x017a, 0x0000) },  // z with acute
00404    { DEADTRANS(0x0020, 0x00b4, 0x00b4, 0x0000) },  // space > acute
00405 
00406    { DEADTRANS(0x0041, 0x00a8, 0x00c4, 0x0000) },  // A with diaeresis
00407    { DEADTRANS(0x0061, 0x00a8, 0x00e4, 0x0000) },  // a with diaeresis
00408    { DEADTRANS(0x0045, 0x00a8, 0x00cb, 0x0000) },  // E with diaeresis
00409    { DEADTRANS(0x0065, 0x00a8, 0x00eb, 0x0000) },  // e with diaeresis
00410    { DEADTRANS(0x004f, 0x00a8, 0x00d6, 0x0000) },  // O with diaeresis
00411    { DEADTRANS(0x006f, 0x00a8, 0x00f6, 0x0000) },  // o with diaeresis
00412    { DEADTRANS(0x0055, 0x00a8, 0x00dc, 0x0000) },  // U with diaeresis
00413    { DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) },  // u with diaeresis
00414    { DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) },  // space > diaeresis
00415 
00416    { DEADTRANS(0x0055, 0x00b0, 0x016e, 0x0000) },  // U with ring
00417    { DEADTRANS(0x0075, 0x00b0, 0x016f, 0x0000) },  // u with ring
00418    { DEADTRANS(0x0020, 0x00b0, 0x00b0, 0x0000) },  // space > ring
00419    { 0, 0, 0 },
00420 };
00421 
00422 ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
00423     L"\x00a1"   L"hacek",   // caron
00424     L"\x00b4"   L"carka",   // acute
00425     L"\x005e"   L"krouzek", // ring
00426     NULL
00427 };
00428 
00429 /* Finally, the master table */
00430 ROSDATA KBDTABLES keyboard_layout_table = {
00431   /* modifier assignments */
00432   &modifier_bits,
00433 
00434   /* character from vk tables */
00435   vk_to_wchar_master_table,
00436 
00437   /* diacritical marks */
00438   dead_key,
00439 
00440   /* Key names */
00441   (VSC_LPWSTR *)key_names,
00442   (VSC_LPWSTR *)extended_key_names,
00443   dead_key_names, /* Dead key names */
00444 
00445   /* scan code to virtual key maps */
00446   scancode_to_vk,
00447   sizeof(scancode_to_vk) / sizeof(scancode_to_vk[0]),
00448   extcode0_to_vk,
00449   extcode1_to_vk,
00450 
00451   MAKELONG(KLLF_ALTGR, 1), /* Version 1.0 */
00452 
00453   /* Ligatures -- Czech keyboard doesn't have any */
00454   0,
00455   0,
00456   NULL
00457 };
00458 
00459 PKBDTABLES WINAPI KbdLayerDescriptor(VOID) {
00460   return &keyboard_layout_table;
00461 }

Generated on Sat May 26 2012 04:20:54 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.