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

kbdbe.c
Go to the documentation of this file.
00001 /*
00002  * Belgian (point) Keyboard layout
00003  * Copyright (C) 2005 ReactOS Development Team
00004  * Autor: i386DX
00005  */
00006 
00007 /* ToDo - ToFix
00008  * Dead keys
00009  */
00010 
00011 #include <windows.h>
00012 #include <ndk/kbd.h>
00013 
00014 #ifdef _M_IA64
00015 #define ROSDATA static __declspec(allocate(".data"))
00016 #else
00017 #ifdef _MSC_VER
00018 #pragma data_seg(".data")
00019 #define ROSDATA static
00020 #else
00021 #define ROSDATA static __attribute__((section(".data")))
00022 #endif
00023 #endif
00024 
00025 #define VK_EMPTY  0xff   /* The non-existent VK */
00026 
00027 #define KNUMS     KBDNUMPAD|KBDSPECIAL /* Special + number pad */
00028 #define KMEXT     KBDEXT|KBDMULTIVK    /* Multi + ext */
00029 
00030 ROSDATA USHORT scancode_to_vk[] = {
00031   /* Numbers Row */
00032   /* - 00 - */
00033   /* 1 ...         2 ...         3 ...         4 ... */
00034   VK_EMPTY,     VK_ESCAPE,    '1',          '2',
00035   '3',          '4',          '5',          '6',
00036   '7',          '8',          '9',          '0',
00037   VK_OEM_2,     VK_OEM_MINUS, VK_BACK,
00038   /* - 0f - */
00039   /* First Letters Row */
00040   VK_TAB,       'A',          'Z',          'E',
00041   'R',          'T',          'Y',          'U',
00042   'I',          'O',          'P',          VK_OEM_4,
00043   VK_OEM_6,     VK_RETURN,
00044   /* - 1d - */
00045   /* Second Letters Row */
00046   VK_LCONTROL,
00047   'Q',          'S',          'D',          'F',
00048   'G',          'H',          'J',          'K',
00049   'L',          'M',          VK_OEM_7,     VK_OEM_3,
00050   VK_LSHIFT,    VK_OEM_5,
00051   /* - 2c - */
00052   /* Third letters row */
00053   'W',          'X',          'C',          'V',
00054   'B',          'N',          VK_OEM_COMMA,  VK_OEM_PERIOD,
00055   VK_OEM_1,     VK_OEM_PLUS,  VK_RSHIFT,
00056   /* - 37 - */
00057   /* Bottom Row */
00058   VK_MULTIPLY,  VK_LMENU,     VK_SPACE,     VK_CAPITAL,
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   6,
00160   { 0, 1, 2, 4, SHFT_INVALID, SHFT_INVALID, 3 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT, MENU, SHIFT + MENU, CTRL + MENU */
00161 };
00162 
00163 ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
00164   /* Normal vs Shifted */
00165   /* The numbers */
00166   { '4',           0, {0x27,      '4'} },
00167   { '5',       0, {'(',       '5'} },
00168   { '7',           0, {0xE8,      '7'} },
00169   { '8',           0, {'!',       '8'} },
00170   { VK_OEM_2,      0, {')',       0xB0} },
00171 
00172   /* Specials */
00173   { VK_OEM_COMMA,  CAPLOK,   {',',      '?'} },
00174   { VK_OEM_PERIOD, CAPLOK,   {';',      '.'} },
00175 
00176   { VK_OEM_1,      CAPLOK,   {':',      '/'} },
00177   { VK_OEM_3,      0, {0xB2,     0xB3 } },
00178   { VK_DECIMAL,    0, {'.',      '.'} },
00179   { VK_TAB,        0, {'\t',     '\t'} },
00180   { VK_ADD,        0, {'+',      '+'} },
00181   { VK_DIVIDE,     0, {'/',      '/'} },
00182   { VK_MULTIPLY,   0, {'*',      '*'} },
00183   { VK_SUBTRACT,   0, {'-',      '-'} },
00184   { 0, 0 }
00185 };
00186 
00187 ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
00188   /* Normal, Shifted, Ctrl */
00189 
00190   /* The alphabet */
00191   { 'A',         CAPLOK,   {'a', 'A', 0x01} },
00192   { 'B',         CAPLOK,   {'b', 'B', 0x02} },
00193   { 'C',         CAPLOK,   {'c', 'C', 0x03} },
00194   { 'D',         CAPLOK,   {'d', 'D', 0x04} },
00195   { 'F',         CAPLOK,   {'f', 'F', 0x06} },
00196   { 'G',         CAPLOK,   {'g', 'G', 0x07} },
00197   { 'H',         CAPLOK,   {'h', 'H', 0x08} },
00198   { 'I',         CAPLOK,   {'i', 'I', 0x09} },
00199   { 'J',         CAPLOK,   {'j', 'J', 0x0a} },
00200   { 'K',         CAPLOK,   {'k', 'K', 0x0b} },
00201   { 'L',         CAPLOK,   {'l', 'L', 0x0c} },
00202   { 'M',         CAPLOK,   {'m', 'M', 0x0d} },
00203   { 'N',         CAPLOK,   {'n', 'N', 0x0e} },
00204   { 'O',         CAPLOK,   {'o', 'O', 0x0f} },
00205   { 'P',         CAPLOK,   {'p', 'P', 0x10} },
00206   { 'Q',         CAPLOK,   {'q', 'Q', 0x11} },
00207   { 'R',         CAPLOK,   {'r', 'R', 0x12} },
00208   { 'S',         CAPLOK,   {'s', 'S', 0x13} },
00209   { 'T',         CAPLOK,   {'t', 'T', 0x14} },
00210   { 'U',         CAPLOK,   {'u', 'U', 0x15} },
00211   { 'V',         CAPLOK,   {'v', 'V', 0x16} },
00212   { 'W',         CAPLOK,   {'w', 'W', 0x17} },
00213   { 'X',         CAPLOK,   {'x', 'X', 0x18} },
00214   { 'Y',         CAPLOK,   {'y', 'Y', 0x19} },
00215   { 'Z',         CAPLOK,   {'z', 'Z', 0x1a} },
00216   /* Legacy (telnet-style) ascii escapes */
00217   { VK_OEM_MINUS, 0, {'-',      '_',      0x1f} }, //0x1f unit separator 
00218   { VK_RETURN,    0, {'\r',     '\r',     '\n'} },
00219 
00220   { VK_BACK,      0, {'\b',     '\b',     0x7f} },
00221   { VK_ESCAPE,    0, {0x1b,     0x1b,     0x1b} },
00222   { VK_SPACE,     0, {' ',      ' ',      ' ' } },
00223   { VK_CANCEL,    0, {0x03,     0x03,     0x03} },
00224   { 0,0 }
00225 };
00226 
00227 ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
00228   /* Normal, Shifted, Ctrl, Ctrl-Alt */
00229 
00230   /* Legacy Ascii generators */
00231   { '1',     0, {'&',      '1',     WCH_NONE, '|'     } },
00232   { '2',         0, {0xE9,     '2',     WCH_NONE, '@'     } },
00233   { '3',         0, {'"',      '3',     WCH_NONE, '#'     } },
00234   { '6',     0, {0xA7,     '6',     WCH_NONE, WCH_DEAD} },
00235   { '9',         0, {0xE7,     '9',     WCH_NONE, '{'     } },
00236   { '0',         0, {0xE0,     '0',     WCH_NONE, '}'     } },
00237   { VK_OEM_PLUS, 0, {'=',      '+',     WCH_NONE, WCH_DEAD} },
00238 
00239   { VK_OEM_4,    0, {WCH_DEAD, WCH_DEAD,WCH_NONE, '['     } },
00240   { VK_OEM_5,    CAPLOK,   {0xB5,     0xA3,    WCH_NONE, WCH_DEAD} },
00241   { VK_OEM_6,    0, {'$',      '*',     WCH_NONE, ']'     } },
00242   { VK_OEM_7,    0, {0xF9,     '%',     WCH_NONE, WCH_DEAD} },
00243   { VK_EMPTY ,   0, {0xb4,     '`',      '|',     WCH_NONE} },
00244 
00245   { 'E',         CAPLOK,   {'e',      'E',      0x05, 0x20ac} },
00246   { VK_EMPTY ,   0, {0xa8,     '^',      WCH_NONE, '~'} },
00247 
00248   { VK_OEM_102,  0, {'<',      '>',      0x001c,   '\\'} },
00249   { 0, 0 }
00250 };
00251 
00252 ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
00253   /* Normal, Shifted, Ctrl, Ctrl-Alt, C-S-x */
00254   { '6', 0, {'6', '&', WCH_NONE, WCH_NONE, 0x1e /* RS */} },
00255   { 0, 0 }
00256 };
00257 
00258 ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
00259   { VK_NUMPAD0, 0, {'0'} },
00260   { VK_NUMPAD1, 0, {'1'} },
00261   { VK_NUMPAD2, 0, {'2'} },
00262   { VK_NUMPAD3, 0, {'3'} },
00263   { VK_NUMPAD4, 0, {'4'} },
00264   { VK_NUMPAD5, 0, {'5'} },
00265   { VK_NUMPAD6, 0, {'6'} },
00266   { VK_NUMPAD7, 0, {'7'} },
00267   { VK_NUMPAD8, 0, {'8'} },
00268   { VK_NUMPAD9, 0, {'9'} },
00269   { VK_DECIMAL, 0, {'.'} },
00270   { 0,0 }
00271 };
00272 
00273 #define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
00274 
00275 ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = {
00276   vk_master(3, key_to_chars_3mod),
00277   vk_master(4, key_to_chars_4mod),
00278   vk_master(5, key_to_chars_5mod),
00279   vk_master(2, key_to_chars_2mod),
00280   vk_master(1, keypad_numbers),
00281   { 0,0,0 }
00282 };
00283 
00284 ROSDATA VSC_LPWSTR key_names[] = {
00285   { 0x00, L"" },
00286   { 0x01, L"Esc" },
00287   { 0x0e, L"Backspace" },
00288   { 0x0f, L"Tab" },
00289   { 0x1c, L"Enter" },
00290   { 0x1d, L"Ctrl" },
00291   { 0x2a, L"Shift" },
00292   { 0x36, L"Right Shift" },
00293   { 0x37, L"Num *" },
00294   { 0x38, L"Alt" },
00295   { 0x39, L"Spatie" },
00296   { 0x3a, L"CAPLOK Lock" },
00297   { 0x3b, L"F1" },
00298   { 0x3c, L"F2" },
00299   { 0x3d, L"F3" },
00300   { 0x3e, L"F4" },
00301   { 0x3f, L"F5" },
00302   { 0x40, L"F6" },
00303   { 0x41, L"F7" },
00304   { 0x42, L"F8" },
00305   { 0x43, L"F9" },
00306   { 0x44, L"F10" },
00307   { 0x45, L"Pause" },
00308   { 0x46, L"Scroll Lock" },
00309   { 0x47, L"Num 7" },
00310   { 0x48, L"Num 8" },
00311   { 0x49, L"Num 9" },
00312   { 0x4a, L"Num -" },
00313   { 0x4b, L"Num 4" },
00314   { 0x4c, L"Num 5" },
00315   { 0x4d, L"Num 6" },
00316   { 0x4e, L"Num +" },
00317   { 0x4f, L"Num 1" },
00318   { 0x50, L"Num 2" },
00319   { 0x51, L"Num 3" },
00320   { 0x52, L"Num 0" },
00321   { 0x53, L"Num Del" },
00322   { 0x54, L"Sys Req" },
00323   { 0x57, L"F11" },
00324   { 0x58, L"F12" },
00325   { 0x7c, L"F13" },
00326   { 0x7d, L"F14" },
00327   { 0x7e, L"F15" },
00328   { 0x7f, L"F16" },
00329   { 0x80, L"F17" },
00330   { 0x81, L"F18" },
00331   { 0x82, L"F19" },
00332   { 0x83, L"F20" },
00333   { 0x84, L"F21" },
00334   { 0x85, L"F22" },
00335   { 0x86, L"F23" },
00336   { 0x87, L"F24" },
00337   { 0, NULL },
00338 };
00339 
00340 ROSDATA VSC_LPWSTR extended_key_names[] = {
00341   { 0x1c, L"Num Enter" },
00342   { 0x1d, L"Right Ctrl" },
00343   { 0x35, L"Num /" },
00344   { 0x37, L"Prnt Scrn" },
00345   { 0x38, L"Right Alt" },
00346   { 0x45, L"Num Lock" },
00347   { 0x46, L"Break" },
00348   { 0x47, L"Home" },
00349   { 0x48, L"Up" },
00350   { 0x49, L"Page Up" },
00351   { 0x4a, L"Left" },
00352   { 0x4c, L"Center" },
00353   { 0x4d, L"Right" },
00354   { 0x4f, L"End" },
00355   { 0x50, L"Down" },
00356   { 0x51, L"Page Down" },
00357   { 0x52, L"Insert" },
00358   { 0x53, L"Delete" },
00359   { 0x54, L"<ReactOS>" },
00360   { 0x55, L"Help" },
00361   { 0x56, L"Left Windows" },
00362   { 0x5b, L"Right Windows" },
00363   { 0, NULL },
00364 };
00365 
00366 ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
00367     L"\x005e"   L"Circumflex",
00368     L"\x007e"   L"Tilde",
00369     L"\x0060"   L"Grave",
00370     NULL
00371 };
00372 
00373 #define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
00374 
00375 ROSDATA DEADKEY dead_key[] = {
00376   /* ¨ */
00377   { DEADTRANS(0x0061, 0x00a8, 0x00e4, 0x0000) }, // a -> ä
00378   { DEADTRANS(0x0065, 0x00a8, 0x00eb, 0x0000) }, // e -> ë
00379   { DEADTRANS(0x0069, 0x00a8, 0x00ef, 0x0000) }, // i -> ï
00380   { DEADTRANS(0x006f, 0x00a8, 0x00f6, 0x0000) }, // o -> ö
00381   { DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) }, // u -> ü
00382   { DEADTRANS(0x0079, 0x00a8, 0x00ff, 0x0000) }, // y -> ÿ
00383   { DEADTRANS(0x0041, 0x00a8, 0x00c4, 0x0000) }, // A -> Ä
00384   { DEADTRANS(0x0045, 0x00a8, 0x00cb, 0x0000) }, // E -> Ë
00385   { DEADTRANS(0x0049, 0x00a8, 0x00cf, 0x0000) }, // I -> Ï
00386   { DEADTRANS(0x004f, 0x00a8, 0x00d6, 0x0000) }, // O -> Ö
00387   { DEADTRANS(0x0055, 0x00a8, 0x00dc, 0x0000) }, // U -> Ü
00388   { DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) }, // Space -> ¨
00389 
00390   /* ^ */
00391   { DEADTRANS(0x0061, 0x005e, 0x00e2, 0x0000) }, // a -> â
00392   { DEADTRANS(0x0065, 0x005e, 0x00ea, 0x0000) }, // e -> ê
00393   { DEADTRANS(0x0069, 0x005e, 0x00ee, 0x0000) }, // i -> î
00394   { DEADTRANS(0x006f, 0x005e, 0x00f4, 0x0000) }, // o -> ô
00395   { DEADTRANS(0x0075, 0x005e, 0x00fb, 0x0000) }, // u -> û
00396   { DEADTRANS(0x0041, 0x005e, 0x00c2, 0x0000) }, // A -> Â
00397   { DEADTRANS(0x0045, 0x005e, 0x00ca, 0x0000) }, // E -> Ê
00398   { DEADTRANS(0x0049, 0x005e, 0x00ce, 0x0000) }, // I -> Î
00399   { DEADTRANS(0x004f, 0x005e, 0x00d4, 0x0000) }, // O -> Ô
00400   { DEADTRANS(0x0055, 0x005e, 0x00db, 0x0000) }, // U -> Û
00401   { DEADTRANS(0x0020, 0x005e, 0x005e, 0x0000) }, // Space -> ^
00402 
00403   /* ~ */
00404   { DEADTRANS(0x0061, 0x007e, 0x00e3, 0x0000) }, // a -> ã
00405   { DEADTRANS(0x006f, 0x007e, 0x00f5, 0x0000) }, // o -> õ
00406   { DEADTRANS(0x006e, 0x007e, 0x00f1, 0x0000) }, // n -> ñ
00407   { DEADTRANS(0x0041, 0x007e, 0x00c3, 0x0000) }, // A -> Ã
00408   { DEADTRANS(0x004f, 0x007e, 0x00d5, 0x0000) }, // O -> Õ
00409   { DEADTRANS(0x004e, 0x007e, 0x00d1, 0x0000) }, // N -> Ñ
00410   { DEADTRANS(0x0020, 0x007e, 0x007e, 0x0000) }, // Space -> ~
00411 
00412   /* ´ */
00413   { DEADTRANS(0x0061, 0x00b4, 0x00e1, 0x0000) }, // a -> á
00414   { DEADTRANS(0x0065, 0x00b4, 0x00e9, 0x0000) }, // e -> é
00415   { DEADTRANS(0x0069, 0x00b4, 0x00ed, 0x0000) }, // i -> í
00416   { DEADTRANS(0x006f, 0x00b4, 0x00f3, 0x0000) }, // o -> ó
00417   { DEADTRANS(0x0075, 0x00b4, 0x00fa, 0x0000) }, // u -> ú
00418   { DEADTRANS(0x0079, 0x00b4, 0x00fd, 0x0000) }, // y -> ý
00419   { DEADTRANS(0x0041, 0x00b4, 0x00c1, 0x0000) }, // A -> Á
00420   { DEADTRANS(0x0045, 0x00b4, 0x00c9, 0x0000) }, // E -> É
00421   { DEADTRANS(0x0049, 0x00b4, 0x00cd, 0x0000) }, // I -> Í
00422   { DEADTRANS(0x004f, 0x00b4, 0x00d3, 0x0000) }, // O -> Ó
00423   { DEADTRANS(0x0055, 0x00b4, 0x00da, 0x0000) }, // U -> Ú
00424   { DEADTRANS(0x0059, 0x00b4, 0x00dd, 0x0000) }, // Y -> Ý
00425   { DEADTRANS(0x0020, 0x00b4, 0x00b4, 0x0000) }, // Space -> ´
00426 
00427   /* ` */
00428   { DEADTRANS(0x0061, 0x0060, 0x00e0, 0x0000) }, // a -> à
00429   { DEADTRANS(0x0065, 0x0060, 0x00e8, 0x0000) }, // e -> è
00430   { DEADTRANS(0x0069, 0x0060, 0x00ec, 0x0000) }, // i -> ì
00431   { DEADTRANS(0x006f, 0x0060, 0x00f2, 0x0000) }, // o -> ò
00432   { DEADTRANS(0x0075, 0x0060, 0x00f9, 0x0000) }, // u -> ù
00433   { DEADTRANS(0x0041, 0x0060, 0x00c0, 0x0000) }, // A -> À
00434   { DEADTRANS(0x0045, 0x0060, 0x00c8, 0x0000) }, // E -> È
00435   { DEADTRANS(0x0049, 0x0060, 0x00cc, 0x0000) }, // I -> Ì
00436   { DEADTRANS(0x004f, 0x0060, 0x00d2, 0x0000) }, // O -> Ò
00437   { DEADTRANS(0x0055, 0x0060, 0x00d9, 0x0000) }, // U -> Ù
00438   { DEADTRANS(0x0020, 0x0060, 0x0060, 0x0000) }, // Space -> `
00439   { 0, 0 }
00440 };
00441 
00442 /* Finally, the master table */
00443 ROSDATA KBDTABLES keyboard_layout_table = {
00444   /* modifier assignments */
00445   &modifier_bits,
00446 
00447   /* character from vk tables */
00448   vk_to_wchar_master_table,
00449 
00450   /* diacritical marks -- currently implemented by wine code */
00451   dead_key,
00452 
00453   /* Key names */
00454   (VSC_LPWSTR *)key_names,
00455   (VSC_LPWSTR *)extended_key_names,
00456   dead_key_names, /* Dead key names */
00457 
00458   /* scan code to virtual key maps */
00459   scancode_to_vk,
00460   sizeof(scancode_to_vk) / sizeof(scancode_to_vk[0]),
00461   extcode0_to_vk,
00462   extcode1_to_vk,
00463 
00464   MAKELONG(KLLF_ALTGR, 1), /* Version 1.0 */
00465 
00466   /* Ligatures -- None in Dutch */
00467   0,
00468   0,
00469   NULL
00470 };
00471 
00472 PKBDTABLES WINAPI KbdLayerDescriptor(VOID) {
00473   return &keyboard_layout_table;
00474 }
00475 
00476 INT WINAPI
00477 DllMain(
00478   PVOID hinstDll,
00479   ULONG dwReason,
00480   PVOID reserved)
00481 {
00482   UNREFERENCED_PARAMETER(hinstDll);
00483   UNREFERENCED_PARAMETER(dwReason);
00484   UNREFERENCED_PARAMETER(reserved);
00485   return 1;
00486 }

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.