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

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

Generated on Mon May 28 2012 04:21:59 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.