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

kbdsw.c
Go to the documentation of this file.
00001 /*
00002  * ReactOS Swedish ASCII Keyboard layout
00003  * Copyright (C) 2004 ReactOS
00004  * License: LGPL, see: LGPL.txt
00005  *
00006  * Thanks to: http://www.barcodeman.com/altek/mule/scandoc.php
00007  * and http://win.tue.nl/~aeb/linux/kbd/scancodes-1.html
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_PLUS, VK_OEM_4,  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_6,     VK_OEM_1,     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_3,     VK_OEM_7,     VK_OEM_5,
00049   VK_LSHIFT,    VK_OEM_2,
00050   /* - 2c - */
00051   /* Third letters row */
00052   'Z',          'X',          'C',          'V',
00053   'B',          'N',          'M',          VK_OEM_COMMA,
00054   VK_OEM_PERIOD,VK_OEM_MINUS,     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   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 
00165   /* The numbers */
00166   { '1',         0, {'1', '!'} },
00167   /* Ctrl-2 generates NUL */
00168 
00169   /* Specials */
00170   { VK_OEM_4,   0, {WCH_DEAD, WCH_DEAD} },
00171   { VK_OEM_7,   CAPLOK, {0xe4,0xc4} },
00172   { VK_OEM_3,   CAPLOK, {0xf6, 0xd6} },
00173 
00174   { VK_OEM_COMMA,  CAPLOK, {',', ';'} },
00175   { VK_OEM_PERIOD, CAPLOK, {'.', ':'} },
00176   { VK_OEM_2,    0, {'\'', '*'} },
00177 
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   { 'N',         CAPLOK,   {'n', 'N', 0x0e} },
00203   { 'O',         CAPLOK,   {'o', 'O', 0x0f} },
00204   { 'P',         CAPLOK,   {'p', 'P', 0x10} },
00205   { 'Q',         CAPLOK,   {'q', 'Q', 0x11} },
00206   { 'R',         CAPLOK,   {'r', 'R', 0x12} },
00207   { 'S',         CAPLOK,   {'s', 'S', 0x13} },
00208   { 'T',         CAPLOK,   {'t', 'T', 0x14} },
00209   { 'U',         CAPLOK,   {'u', 'U', 0x15} },
00210   { 'V',         CAPLOK,   {'v', 'V', 0x16} },
00211   { 'W',         CAPLOK,   {'w', 'W', 0x17} },
00212   { 'X',         CAPLOK,   {'x', 'X', 0x18} },
00213   { 'Y',         CAPLOK,   {'y', 'Y', 0x19} },
00214   { 'Z',         CAPLOK,   {'z', 'Z', 0x1a} },
00215 
00216   /* Legacy (telnet-style) ascii escapes */
00217   {VK_OEM_6, CAPLOK, {0xe5,0xc5, 0x1d /* GS */} },
00218   { VK_OEM_5, 0, {0xa7,0xbd, 0x1c /* FS */} },
00219   { VK_OEM_MINUS, 0, {'-', '_', 0x1f /* US */} },
00220   { VK_RETURN,0, {'\r', '\r', '\n'} },
00221 
00222   { VK_BACK, 0, {'\b', '\b', 0x7f} },
00223   { VK_ESCAPE, 0, {0x1b, 0x1b, 0x1b} },
00224   { VK_SPACE, 0, {' ', ' ', ' '} },
00225   { VK_CANCEL, 0, {0x03, 0x03, 0x03} },
00226 
00227   { 0,0 }
00228 };
00229 
00230 ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
00231   /* Normal, Shifted, Ctrl, Ctrl-Alt */
00232   /* Legacy Ascii generators */
00233 
00234   { '2', 0, {'2', '\"', WCH_NONE,'@'} },
00235   { '3', 0, {'3', '#', WCH_NONE, 0x00a3} },
00236   { '4', 0, {'4', 0xa4, WCH_NONE, '$'} },
00237   { '5', 0, {'5', '%',  WCH_NONE, 0x00ac} },
00238   { '7', 0, {'7', '/', WCH_NONE, '{'} },
00239   { '8', 0, {'8', '(', WCH_NONE, '['} },
00240   { '9', 0, {'9', ')', WCH_NONE, ']'} },
00241   { '0', 0, {'0', '=', WCH_NONE, '}'} },
00242   { VK_OEM_PLUS ,0, {'+', '?', WCH_NONE, '\\'} },
00243   { 'E', CAPLOK,   {'e', 'E' , 0x05, 0x00ac} },
00244   { VK_OEM_1 ,0, {0xa8, '^', 0x001d, '~'} },
00245   { 'M', CAPLOK,   {'m', 'M', 0x0d, 0x00b5} },
00246   {VK_OEM_102, 0, {'<', '>' ,0x001c,'|'} },
00247   { 0, 0 }
00248 };
00249 
00250 ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
00251   /* Normal, Shifted, Ctrl, Ctrl-Alt, C-S-x */
00252   { '6', 0, {'6', '&', WCH_NONE, WCH_NONE, 0x1e /* RS */} },
00253   { 0, 0 }
00254 };
00255 
00256 ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
00257   { VK_DECIMAL, 0, {'.'} },
00258   { VK_NUMPAD0, 0, {'0'} },
00259   { VK_NUMPAD1, 0, {'1'} },
00260   { VK_NUMPAD2, 0, {'2'} },
00261   { VK_NUMPAD3, 0, {'3'} },
00262   { VK_NUMPAD4, 0, {'4'} },
00263   { VK_NUMPAD5, 0, {'5'} },
00264   { VK_NUMPAD6, 0, {'6'} },
00265   { VK_NUMPAD7, 0, {'7'} },
00266   { VK_NUMPAD8, 0, {'8'} },
00267   { VK_NUMPAD9, 0, {'9'} },
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(3,key_to_chars_3mod),
00275   vk_master(4,key_to_chars_4mod),
00276   vk_master(5,key_to_chars_5mod),
00277   vk_master(2,key_to_chars_2mod),
00278   vk_master(1,keypad_numbers),
00279   { 0,0,0 }
00280 };
00281 
00282 ROSDATA VSC_LPWSTR key_names[] = {
00283   { 0x00, L"" },
00284   { 0x01, L"ESC" },
00285   { 0x0e, L"BACKSTEG" },
00286   { 0x0f, L"TAB" },
00287   { 0x1c, L"RETUR" },
00288   { 0x1d, L"CTRL" },
00289   { 0x2a, L"SKIFT" },
00290   { 0x36, L"H\x00D6GER SKIFT" },
00291   { 0x37, L"NUM * (Numerisk tangent)" },
00292   { 0x38, L"ALT" },
00293   { 0x39, L"BLANKSTEG" },
00294   { 0x3a, L"CAPLOK LOCK" },
00295   { 0x3b, L"F1" },
00296   { 0x3c, L"F2" },
00297   { 0x3d, L"F3" },
00298   { 0x3e, L"F4" },
00299   { 0x3f, L"F5" },
00300   { 0x40, L"F6" },
00301   { 0x41, L"F7" },
00302   { 0x42, L"F8" },
00303   { 0x43, L"F9" },
00304   { 0x44, L"F10" },
00305   { 0x45, L"PAUSE" },
00306   { 0x46, L"SCROLL LOCK" },
00307   { 0x47, L"7 (Numerisk tangent)" },
00308   { 0x48, L"8 (Numerisk tangent)" },
00309   { 0x49, L"9 (Numerisk tangent)" },
00310   { 0x4a, L"- (Numerisk tangent)" },
00311   { 0x4b, L"4 (Numerisk tangent)" },
00312   { 0x4c, L"5 (Numerisk tangent)" },
00313   { 0x4d, L"6 (Numerisk tangent)" },
00314   { 0x4e, L"+ (Numerisk tangent)" },
00315   { 0x4f, L"1 (Numerisk tangent)" },
00316   { 0x50, L"2 (Numerisk tangent)" },
00317   { 0x51, L"3 (Numerisk tangent)" },
00318   { 0x52, L"0 (Numerisk tangent)" },
00319   { 0x53, L"DECIMAL (Numerisk tangent)" },
00320   { 0x54, L"Sys Req" },
00321   { 0x57, L"F11" },
00322   { 0x58, L"F12" },
00323   { 0x7c, L"F13" },
00324   { 0x7d, L"F14" },
00325   { 0x7e, L"F15" },
00326   { 0x7f, L"F16" },
00327   { 0x80, L"F17" },
00328   { 0x81, L"F18" },
00329   { 0x82, L"F19" },
00330   { 0x83, L"F20" },
00331   { 0x84, L"F21" },
00332   { 0x85, L"F22" },
00333   { 0x86, L"F23" },
00334   { 0x87, L"F24" },
00335   { 0, NULL }
00336 };
00337 
00338 ROSDATA VSC_LPWSTR extended_key_names[] = {
00339   { 0x1c, L"RETUR (Numerisk tangent)" },
00340   { 0x1d, L"H\x00D6GER CTRL" },
00341   { 0x35, L"DIVISION (Numerisk tangent)" },
00342   { 0x37, L"PRINT SCREEN" },
00343   { 0x38, L"H\x00D6GER ALT" },
00344   { 0x45, L"NUM LOCK" },
00345   { 0x46, L"BREAK" },
00346   { 0x47, L"HOME" },
00347   { 0x48, L"UPPIL" },
00348   { 0x49, L"PAGE UP" },
00349   { 0x4b, L"V\x00C4NSTER PIL" },
00350 //{ 0x4c, L"Center" },
00351   { 0x4d, L"H\x00D6GER PIL" },
00352   { 0x4f, L"END" },
00353   { 0x50, L"NEDPIL" },
00354   { 0x51, L"PAGE DOWN" },
00355   { 0x52, L"INS" },
00356   { 0x53, L"DEL" },
00357   { 0x54, L"<ReactOS>" },
00358   { 0x56, L"HELP" },
00359   { 0x5b, L"V\x00C4NSTER <ReactOS>" },
00360   { 0x5c, L"H\x00D6GER <ReactOS>" },
00361   { 0x5d, L"Program" },
00362   { 0, NULL }
00363 };
00364 
00365 ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
00366     L"\x00a8"   L"Omljud",
00367     L"\x005e"   L"Cirkumflex",
00368     L"\x007e"   L"Tilde",
00369     L"\x00b4"   L"Akut",
00370     L"\x0060"   L"Grav",
00371     NULL
00372 };
00373 
00374 #define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
00375 
00376 ROSDATA DEADKEY dead_key[] = {
00377   { DEADTRANS(0x0061, 0x00a8, 0x00e4, 0x0000) },
00378   { DEADTRANS(0x0065, 0x00a8, 0x00eb, 0x0000) },
00379   { DEADTRANS(0x0069, 0x00a8, 0x00ef, 0x0000) },
00380   { DEADTRANS(0x006f, 0x00a8, 0x00f6, 0x0000) },
00381   { DEADTRANS(0x0075, 0x00a8, 0x00fc, 0x0000) },
00382   { DEADTRANS(0x0079, 0x00a8, 0x00ff, 0x0000) },
00383   { DEADTRANS(0x0041, 0x00a8, 0x00c4, 0x0000) },
00384   { DEADTRANS(0x0045, 0x00a8, 0x00cb, 0x0000) },
00385   { DEADTRANS(0x0049, 0x00a8, 0x00cf, 0x0000) },
00386   { DEADTRANS(0x004f, 0x00a8, 0x00d6, 0x0000) },
00387   { DEADTRANS(0x0055, 0x00a8, 0x00dc, 0x0000) },
00388   { DEADTRANS(0x0020, 0x00a8, 0x00a8, 0x0000) },
00389 
00390   { DEADTRANS(0x0061, 0x005e, 0x00e2, 0x0000) },
00391   { DEADTRANS(0x0065, 0x005e, 0x00ea, 0x0000) },
00392   { DEADTRANS(0x0069, 0x005e, 0x00ee, 0x0000) },
00393   { DEADTRANS(0x006f, 0x005e, 0x00f4, 0x0000) },
00394   { DEADTRANS(0x0075, 0x005e, 0x00fb, 0x0000) },
00395   { DEADTRANS(0x0041, 0x005e, 0x00c2, 0x0000) },
00396   { DEADTRANS(0x0045, 0x005e, 0x00ca, 0x0000) },
00397   { DEADTRANS(0x0049, 0x005e, 0x00ce, 0x0000) },
00398   { DEADTRANS(0x004f, 0x005e, 0x00d4, 0x0000) },
00399   { DEADTRANS(0x0055, 0x005e, 0x00db, 0x0000) },
00400   { DEADTRANS(0x0020, 0x005e, 0x005e, 0x0000) },
00401 
00402   { DEADTRANS(0x0061, 0x007e, 0x00e3, 0x0000) },
00403   { DEADTRANS(0x006f, 0x007e, 0x00f5, 0x0000) },
00404   { DEADTRANS(0x006e, 0x007e, 0x00f1, 0x0000) },
00405   { DEADTRANS(0x0041, 0x007e, 0x00c3, 0x0000) },
00406   { DEADTRANS(0x004f, 0x007e, 0x00d5, 0x0000) },
00407   { DEADTRANS(0x004e, 0x007e, 0x00d1, 0x0000) },
00408   { DEADTRANS(0x0020, 0x007e, 0x007e, 0x0000) },
00409 
00410   { DEADTRANS(0x0061, 0x00b4, 0x00e1, 0x0000) },
00411   { DEADTRANS(0x0065, 0x00b4, 0x00e9, 0x0000) },
00412   { DEADTRANS(0x0069, 0x00b4, 0x00ed, 0x0000) },
00413   { DEADTRANS(0x006f, 0x00b4, 0x00f3, 0x0000) },
00414   { DEADTRANS(0x0075, 0x00b4, 0x00fa, 0x0000) },
00415   { DEADTRANS(0x0079, 0x00b4, 0x00fd, 0x0000) },
00416   { DEADTRANS(0x0041, 0x00b4, 0x00c1, 0x0000) },
00417   { DEADTRANS(0x0045, 0x00b4, 0x00c9, 0x0000) },
00418   { DEADTRANS(0x0049, 0x00b4, 0x00cd, 0x0000) },
00419   { DEADTRANS(0x004f, 0x00b4, 0x00d3, 0x0000) },
00420   { DEADTRANS(0x0055, 0x00b4, 0x00da, 0x0000) },
00421   { DEADTRANS(0x0059, 0x00b4, 0x00dd, 0x0000) },
00422   { DEADTRANS(0x0020, 0x00b4, 0x00b4, 0x0000) },
00423 
00424   { DEADTRANS(0x0061, 0x0060, 0x00e0, 0x0000) },
00425   { DEADTRANS(0x0065, 0x0060, 0x00e8, 0x0000) },
00426   { DEADTRANS(0x0069, 0x0060, 0x00ec, 0x0000) },
00427   { DEADTRANS(0x006f, 0x0060, 0x00f2, 0x0000) },
00428   { DEADTRANS(0x0075, 0x0060, 0x00f9, 0x0000) },
00429   { DEADTRANS(0x0041, 0x0060, 0x00c0, 0x0000) },
00430   { DEADTRANS(0x0045, 0x0060, 0x00c8, 0x0000) },
00431   { DEADTRANS(0x0049, 0x0060, 0x00cc, 0x0000) },
00432   { DEADTRANS(0x004f, 0x0060, 0x00d2, 0x0000) },
00433   { DEADTRANS(0x0055, 0x0060, 0x00d9, 0x0000) },
00434   { DEADTRANS(0x0020, 0x0060, 0x0060, 0x0000) },
00435   { 0, 0 }
00436 };
00437 
00438 /* Finally, the master table */
00439 ROSDATA KBDTABLES keyboard_layout_table = {
00440   /* modifier assignments */
00441   &modifier_bits,
00442 
00443   /* character from vk tables */
00444   vk_to_wchar_master_table,
00445 
00446   /* diacritical marks -- currently implemented by wine code */
00447   dead_key,
00448 
00449   /* Key names */
00450   (VSC_LPWSTR *)key_names,
00451   (VSC_LPWSTR *)extended_key_names,
00452   dead_key_names, /* Dead key names */
00453 
00454   /* scan code to virtual key maps */
00455   scancode_to_vk,
00456   sizeof(scancode_to_vk) / sizeof(scancode_to_vk[0]),
00457   extcode0_to_vk,
00458   extcode1_to_vk,
00459 
00460   MAKELONG(KLLF_ALTGR, 1), /* Version 1.0 */
00461 
00462   /* Ligatures -- Swedish doesn't have any */
00463   0,
00464   0,
00465   NULL
00466 };
00467 
00468 PKBDTABLES WINAPI KbdLayerDescriptor(VOID) {
00469   return &keyboard_layout_table;
00470 }
00471 
00472 INT WINAPI
00473 DllMain(
00474   PVOID hinstDll,
00475   ULONG dwReason,
00476   PVOID reserved)
00477 {
00478   return 1;
00479 }
00480 

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