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

kbdes.c
Go to the documentation of this file.
00001 /*
00002  * ReactOS Spanish Keyboard Layout
00003  * Copyright (C) 2003 ReactOS
00004  * License: LGPL, see: LGPL.txt
00005  * Created by HUMA2000 from kbdus, kbdgr, kbdda and kbdfr
00006  * huma2000@terra.es
00007  * Thanks to arty for the kbtest utility and help
00008  * Thanks to carraca from reactos.com forum for his fixes
00009  * Thanks Elrond for help
00010  *
00011  * Thanks to: http://www.barcodeman.com/altek/mule/scandoc.php
00012  * and http://win.tue.nl/~aeb/linux/kbd/scancodes-1.html
00013  */
00014 
00015 #include <windows.h>
00016 #include <ndk/kbd.h>
00017 
00018 #ifdef _M_IA64
00019 #define ROSDATA static __declspec(allocate(".data"))
00020 #else
00021 #ifdef _MSC_VER
00022 #pragma data_seg(".data")
00023 #define ROSDATA static
00024 #else
00025 #define ROSDATA static __attribute__((section(".data")))
00026 #endif
00027 #endif
00028 
00029 #define VK_EMPTY  0xff   /* The non-existent VK */
00030 
00031 #define KNUMS     KBDNUMPAD|KBDSPECIAL /* Special + number pad */
00032 #define KMEXT     KBDEXT|KBDMULTIVK    /* Multi + ext */
00033 
00034 ROSDATA USHORT scancode_to_vk[] = {
00035 /* 00 */  VK_EMPTY,
00036 /* 01 */  VK_ESCAPE,
00037 /* 02 */  '1',
00038 /* 03 */  '2',
00039 /* 04 */  '3',
00040 /* 05 */  '4',
00041 /* 06 */  '5',
00042 /* 07 */  '6',
00043 /* 08 */  '7',
00044 /* 09 */  '8',
00045 /* 0a */  '9',
00046 /* 0b */  '0',
00047 /* 0c */  VK_OEM_4,
00048 /* 0d */  VK_OEM_6,
00049 /* 0e */  VK_BACK,
00050 /* 0f */  VK_TAB,
00051 /* 10 */  'Q',
00052 /* 11 */  'W',
00053 /* 12 */  'E',
00054 /* 13 */  'R',
00055 /* 14 */  'T',
00056 /* 15 */  'Y',
00057 /* 16 */  'U',
00058 /* 17 */  'I',
00059 /* 18 */  'O',
00060 /* 19 */  'P',
00061 /* 1a */  VK_OEM_1,
00062 /* 1b */  VK_OEM_PLUS,
00063 /* 1c */  VK_RETURN,
00064 /* 1d */  VK_LCONTROL,
00065 /* 1e */  'A',
00066 /* 1f */  'S',
00067 /* 20 */  'D',
00068 /* 21 */  'F',
00069 /* 22 */  'G',
00070 /* 23 */  'H',
00071 /* 24 */  'J',
00072 /* 25 */  'K',
00073 /* 26 */  'L',
00074 /* 27 */  VK_OEM_3,
00075 /* 28 */  VK_OEM_7,
00076 /* 29 */  VK_OEM_5,
00077 /* 2a */  VK_LSHIFT,
00078 /* 2b */  VK_OEM_2,
00079 /* 2c */  'Z',
00080 /* 2d */  'X',
00081 /* 2e */  'C',
00082 /* 2f */  'V',
00083 /* 30 */  'B',
00084 /* 31 */  'N',
00085 /* 32 */  'M',
00086 /* 33 */  VK_OEM_COMMA,
00087 /* 34 */  VK_OEM_PERIOD,
00088 /* 35 */  VK_OEM_MINUS,
00089 /* 36 */  VK_RSHIFT,
00090 /* 37 */  VK_MULTIPLY,
00091 /* 38 */  VK_LMENU,
00092 /* 39 */  VK_SPACE,
00093 /* 3a */  VK_CAPITAL,
00094 /* 3b */  VK_F1,
00095 /* 3c */  VK_F2,
00096 /* 3d */  VK_F3,
00097 /* 3e */  VK_F4,
00098 /* 3f */  VK_F5,
00099 /* 40 */  VK_F6,
00100 /* 41 */  VK_F7,
00101 /* 42 */  VK_F8,
00102 /* 43 */  VK_F9,
00103 /* 44 */  VK_F10,
00104 /* 45 */  VK_NUMLOCK | KMEXT,
00105 /* 46 */  VK_SCROLL | KBDMULTIVK,
00106 /* 47 */  VK_HOME | KNUMS,
00107 /* 48 */  VK_UP | KNUMS,
00108 /* 49 */  VK_PRIOR | KNUMS,
00109 /* 4a */  VK_SUBTRACT,
00110 /* 4b */  VK_LEFT | KNUMS,
00111 /* 4c */  VK_CLEAR | KNUMS,
00112 /* 4d */  VK_RIGHT | KNUMS,
00113 /* 4e */  VK_ADD,
00114 /* 4f */  VK_END | KNUMS,
00115 /* 50 */  VK_DOWN | KNUMS,
00116 /* 51 */  VK_NEXT | KNUMS,
00117 /* 52 */  VK_INSERT | KNUMS,
00118 /* 53 */  VK_DELETE | KNUMS,
00119 /* 54 */  VK_SNAPSHOT,
00120 /* 55 */  VK_EMPTY,
00121 /* 56 */  VK_OEM_102,
00122 /* 57 */  VK_F11,
00123 /* 58 */  VK_F12,
00124 /* 59 */  VK_EMPTY,
00125 /* 5a */  VK_CLEAR,
00126 /* 5b */  VK_EMPTY,
00127 /* 5c */  VK_EMPTY,
00128 /* 5d */  VK_EMPTY,
00129 /* 5e */  VK_EMPTY, /* EREOF */
00130 /* 5f */  VK_EMPTY,
00131 /* 60 */  VK_EMPTY,
00132 /* 61 */  VK_EMPTY,
00133 /* 62 */  VK_EMPTY,
00134 /* 63 */  VK_EMPTY, /* ZOOM */
00135 /* 64 */  VK_HELP,
00136 /* 65 */  VK_F13,
00137 /* 66 */  VK_F14,
00138 /* 67 */  VK_F15,
00139 /* 68 */  VK_F16,
00140 /* 69 */  VK_F17,
00141 /* 6a */  VK_F18,
00142 /* 6b */  VK_F19,
00143 /* 6c */  VK_F20,
00144 /* 6d */  VK_F21,
00145 /* 6e */  VK_F22,
00146 /* 6f */  VK_F23,
00147 /* 70 */  VK_EMPTY,
00148 /* 71 */  VK_EMPTY,
00149 /* 72 */  VK_EMPTY,
00150 /* 73 */  VK_EMPTY,
00151 /* 74 */  VK_EMPTY,
00152 /* 75 */  VK_EMPTY,
00153 /* 76 */  VK_EMPTY,
00154 /* 77 */  VK_F24,
00155 /* 78 */  VK_EMPTY,
00156 /* 79 */  VK_EMPTY,
00157 /* 7a */  VK_EMPTY,
00158 /* 7b */  VK_EMPTY,
00159 /* 7c */  VK_EMPTY,
00160 /* 7d */  VK_EMPTY,
00161 /* 7e */  VK_EMPTY,
00162 /* 7f */  VK_EMPTY,
00163 /* 80 */  VK_EMPTY,
00164 /* 00 */  0
00165 };
00166 
00167 ROSDATA VSC_VK extcode0_to_vk[] = {
00168   { 0x10, VK_MEDIA_PREV_TRACK | KBDEXT }, // Pista anterior, no puedo probarlo hasta que no se implemente el sonido
00169   { 0x19, VK_MEDIA_NEXT_TRACK | KBDEXT }, // Pista siguiente,
00170   { 0x1D, VK_RCONTROL | KBDEXT }, // Tecla control
00171   { 0x20, VK_VOLUME_MUTE | KBDEXT }, // Silenciar volumen
00172   { 0x21, VK_LAUNCH_APP2 | KBDEXT }, // Tecla calculadora
00173   { 0x22, VK_MEDIA_PLAY_PAUSE | KBDEXT }, // Play/pause
00174   { 0x24, VK_MEDIA_STOP | KBDEXT }, // Stop
00175   { 0x2E, VK_VOLUME_DOWN | KBDEXT }, // Bajar volumen
00176   { 0x30, VK_VOLUME_UP | KBDEXT }, // Subir volumen
00177   { 0x32, VK_BROWSER_HOME | KBDEXT }, // Pagina de inicio del navegador de internet o abrirlo si no esta activolo
00178   { 0x35, VK_DIVIDE | KBDEXT }, // Tecla
00179   { 0x37, VK_SNAPSHOT | KBDEXT }, // La tecla de imprimir pantalla
00180   { 0x38, VK_RMENU | KBDEXT }, // Tecla alt
00181   { 0x47, VK_HOME | KBDEXT }, // Tecla inicio
00182   { 0x48, VK_UP | KBDEXT }, // Cursor arriba
00183   { 0x49, VK_PRIOR | KBDEXT }, // Tecla Re pag
00184   { 0x4B, VK_LEFT | KBDEXT }, // Cursor izquierda
00185   { 0x4D, VK_RIGHT | KBDEXT }, // Cursor derecha
00186   { 0x4F, VK_END | KBDEXT }, // Tecla Fin
00187   { 0x50, VK_DOWN | KBDEXT }, // Cursor abajo
00188   { 0x51, VK_NEXT | KBDEXT }, // Tecla Av pag
00189   { 0x52, VK_INSERT | KBDEXT }, // Tecla insertar
00190   { 0x53, VK_DELETE | KBDEXT }, // Tecla deletear
00191   { 0x5B, VK_LWIN | KBDEXT }, // Tecla windows izquierda
00192   { 0x5C, VK_RWIN | KBDEXT }, // Tecla windows derecha
00193   { 0x5D, VK_APPS | KBDEXT }, // Tecla menu aplicacion derecha
00194   { 0x5F, VK_SLEEP | KBDEXT }, // Tecla Sleep
00195   { 0x65, VK_BROWSER_SEARCH | KBDEXT }, // Pagina de búsqueda en el navegador de internet
00196   { 0x66, VK_BROWSER_FAVORITES | KBDEXT }, // Favoritos, tengo que esperar a que el tcp/ip
00197   { 0x67, VK_BROWSER_REFRESH | KBDEXT }, // Refrescar el navegador de internet
00198   { 0x68, VK_BROWSER_STOP | KBDEXT }, // Stop en el navegador de internet
00199   { 0x69, VK_BROWSER_FORWARD | KBDEXT }, // Adelante en el navegador de internet
00200   { 0x6A, VK_BROWSER_BACK | KBDEXT }, // Atrás en el navegador de internet
00201   { 0x6B, VK_LAUNCH_APP1 | KBDEXT }, // Tecla Mi pc
00202   { 0x6C, VK_LAUNCH_MAIL | KBDEXT }, // Abrir programa de e-mail
00203   { 0x6D, VK_LAUNCH_MEDIA_SELECT | KBDEXT }, // Abrir reproductor multimedia
00204   { 0x1C, VK_RETURN | KBDEXT }, // La tecla de intro
00205   { 0x46, VK_CANCEL | KBDEXT }, // Tecla escape
00206   { 0, 0 },
00207 };
00208 
00209 ROSDATA VSC_VK extcode1_to_vk[] = {
00210   { 0, 0 },
00211 };
00212 
00213 ROSDATA VK_TO_BIT modifier_keys[] = {
00214   { VK_SHIFT,   KBDSHIFT },
00215   { VK_CONTROL, KBDCTRL },
00216   { VK_MENU,    KBDALT },
00217   { 0,  0 }
00218 };
00219 
00220 ROSDATA MODIFIERS modifier_bits = {
00221   modifier_keys,
00222   6,
00223   {   0,     1,    2,          4,   SHFT_INVALID, SHFT_INVALID, 3  }
00224 /* NONE, SHIFT, CTRL, CTRL+SHIFT, ALT */
00225 };
00226 
00227 ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
00228   /* Normal vs Shifted */
00229   /* The numbers */
00230   //Del 1 al 5 tienen tres estados
00231   { '4',         0, {'4', '$'} },
00232   { '5',         0, {'5',   '%'} },
00233   //El 6 tiene 3 estados
00234   { '7',         0, {'7', '/'} },
00235   { '8',         0, {'8', '('} },
00236   { '9',         0, {'9', ')'} },
00237   { '0',         0, {'0', '='} },
00238   { VK_OEM_3,    CAPLOK,   {0x00F1, 0x00D1} }, // ñÑ
00239 
00240   /* Specials */
00241   /* Ctrl-_ generates ES */
00242   { VK_OEM_6     ,0, {0x00a1, 0x00bf} }, // ¡¿
00243   { VK_OEM_4       ,0, {0x0027, '?'}    }, //'?
00244   { VK_OEM_COMMA   ,0, {',',    ';'}    },
00245   { VK_OEM_PERIOD  ,0, {'.',    ':'}    },
00246   { VK_OEM_MINUS   ,0, {'-',    '_'}    },
00247   { VK_OEM_102     ,0, {'<',    '>'}    },
00248 
00249   /* Keys that do not have shift states */
00250   { VK_TAB,     0, {'\t',   '\t'}   },
00251   { VK_ADD,     0, {'+',    '+'}    },
00252   { VK_SUBTRACT,  0, {'-',  '-'}    },
00253   { VK_MULTIPLY,    0, {'*',    '*'}    },
00254   { VK_DIVIDE,  0, {'/',    '/'}    },
00255   { VK_ESCAPE,  0, {0x1b,0x1b} },
00256   { VK_SPACE,   0, {' ',    ' '}    },
00257   { 0, 0 }
00258 };
00259 
00260 ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
00261   /* Normal, Shifted, Ctrl */
00262 
00263   /* The alphabet */
00264   { 'A',         CAPLOK,   {'a', 'A', 0x01} },
00265   { 'B',         CAPLOK,   {'b', 'B', 0x02} },
00266   { 'C',         CAPLOK,   {'c', 'C', 0x03} },
00267   { 'D',         CAPLOK,   {'d', 'D', 0x04} },
00268   { 'F',         CAPLOK,   {'f', 'F', 0x06} },
00269   { 'G',         CAPLOK,   {'g', 'G', 0x07} },
00270   { 'H',         CAPLOK,   {'h', 'H', 0x08} },
00271   { 'I',         CAPLOK,   {'i', 'I', 0x09} },
00272   { 'J',         CAPLOK,   {'j', 'J', 0x0a} },
00273   { 'K',         CAPLOK,   {'k', 'K', 0x0b} },
00274   { 'L',         CAPLOK,   {'l', 'L', 0x0c} },
00275   { 'M',         CAPLOK,   {'m', 'M', 0x0d} },
00276   { 'N',         CAPLOK,   {'n', 'N', 0x0e} },
00277   { 'O',         CAPLOK,   {'o', 'O', 0x0f} },
00278   { 'P',         CAPLOK,   {'p', 'P', 0x10} },
00279   { 'Q',         CAPLOK,   {'q', 'Q', 0x11} },
00280   { 'R',         CAPLOK,   {'r', 'R', 0x12} },
00281   { 'S',         CAPLOK,   {'s', 'S', 0x13} },
00282   { 'T',         CAPLOK,   {'t', 'T', 0x14} },
00283   { 'U',         CAPLOK,   {'u', 'U', 0x15} },
00284   { 'V',         CAPLOK,   {'v', 'V', 0x16} },
00285   { 'W',         CAPLOK,   {'w', 'W', 0x17} },
00286   { 'X',         CAPLOK,   {'x', 'X', 0x18} },
00287   { 'Y',         CAPLOK,   {'y', 'Y', 0x19} },
00288   { 'Z',         CAPLOK,   {'z', 'Z', 0x1a} },
00289 
00290   /* Legacy (telnet-style) ascii escapes */
00291   { VK_RETURN,  0, {'\r',     '\r',     '\n'}    },
00292   { 0,0 }
00293 };
00294 
00295 ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
00296 /* Normal, shifted, control, Alt+Gr */
00297   { '1',        0, {'1',      '!',      WCH_NONE,  0x00a6}  }, // 1!|
00298   { '2',        0, {'2',    '"',      WCH_NONE,  '@'}     }, // 2"@
00299   { '3',        0, {'3',    0x00B7,   WCH_NONE,  '#'}     }, // 3·#
00300   { '6',        0, {'6',    '&',      WCH_NONE,  0x00AC}  }, // 6&¬
00301   { 'E',        CAPLOK,   {'e',     'E',      0x05,  0x20AC}  }, // eE€
00302   { VK_OEM_PLUS,  0, {'+',      '*',        WCH_NONE,  0x005d}  }, // +*]
00303   { VK_OEM_2,   0, {0x00e7,   0x00c7,   WCH_NONE,  '}'}     }, // çÇ}
00304 
00305   { VK_OEM_7,   0, {WCH_DEAD,   WCH_DEAD, WCH_NONE,  '{'} }, //  ´¨{
00306   { VK_EMPTY,   0, {0xB4,       0xA8,     WCH_NONE,  WCH_NONE} },  //  ´¨{
00307 
00308   { VK_OEM_1,   0, {WCH_DEAD,   WCH_DEAD, WCH_NONE,  0x5B}    }, // `^[
00309   { VK_EMPTY,   0, {0x60,       0x5e,     WCH_NONE,  WCH_NONE}  }, // `^[
00310 
00311   { VK_OEM_5,   0, {0x00BA,   0x00AA,   WCH_NONE,  0x005c}  }, // çÇ}
00312   { 0, 0 }
00313 };
00314 
00315 ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
00316   { VK_NUMPAD0, 0, {'0'} },
00317   { VK_NUMPAD1, 0, {'1'} },
00318   { VK_NUMPAD2, 0, {'2'} },
00319   { VK_NUMPAD3, 0, {'3'} },
00320   { VK_NUMPAD4, 0, {'4'} },
00321   { VK_NUMPAD5, 0, {'5'} },
00322   { VK_NUMPAD6, 0, {'6'} },
00323   { VK_NUMPAD7, 0, {'7'} },
00324   { VK_NUMPAD8, 0, {'8'} },
00325   { VK_NUMPAD9, 0, {'9'} },
00326   { VK_DECIMAL, 0, {'.'} },
00327   { VK_BACK,    0, {'\010'} },
00328   { 0,0 }
00329 };
00330 
00331 #define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
00332 
00333 ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[] = {
00334   vk_master(1,keypad_numbers),
00335   vk_master(2,key_to_chars_2mod),
00336   vk_master(3,key_to_chars_3mod),
00337   vk_master(4,key_to_chars_4mod),
00338   { 0,0,0 }
00339 };
00340 
00341 #define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags //no funciona
00342 ROSDATA DEADKEY  deadkey[] =
00343 {
00344             //*´*
00345             { DEADTRANS(L'a', 0xb4, 0xE1, 0x00) }, // letra a con ´
00346             { DEADTRANS(L'A', 0xb4, 0xC1, 0x00) }, // letra A con ´
00347             { DEADTRANS(L'e', 0xb4, 0xE9, 0x00) }, // letra e con ´
00348             { DEADTRANS(L'E', 0xb4, 0xC9, 0x00) }, // letra E con ´
00349             { DEADTRANS(L'i', 0xb4, 0xED, 0x00) }, // letra i con ´
00350             { DEADTRANS(L'I', 0xb4, 0xCD, 0x00) }, // letra I con ´
00351             { DEADTRANS(L'o', 0xb4, 0xF3, 0x00) }, // letra o con ´
00352             { DEADTRANS(L'O', 0xb4, 0xD3, 0x00) }, // letra O con ´
00353             { DEADTRANS(L'u', 0xb4, 0xFA, 0x00) }, // letra u con ´
00354             { DEADTRANS(L'U', 0xb4, 0xDA, 0x00) }, // letra U con ´
00355             //*`*
00356             { DEADTRANS(L'a', 0x60, 0xE0, 0x00) }, // letra a con `
00357             { DEADTRANS(L'A', 0x60, 0xC0, 0x00) }, // letra A con `
00358             { DEADTRANS(L'e', 0x60, 0xE8, 0x00) }, // letra e con `
00359             { DEADTRANS(L'E', 0x60, 0xC8, 0x00) }, // letra E con `
00360             { DEADTRANS(L'i', 0x60, 0xEC, 0x00) }, // letra i con `
00361             { DEADTRANS(L'I', 0x60, 0xCC, 0x00) }, // letra I con `
00362             { DEADTRANS(L'o', 0x60, 0xF2, 0x00) }, // letra o con `
00363             { DEADTRANS(L'O', 0x60, 0xD2, 0x00) }, // letra O con `
00364             { DEADTRANS(L'u', 0x60, 0xF9, 0x00) }, // letra u con `
00365             { DEADTRANS(L'U', 0x60, 0xD9, 0x00) }, // letra U con `
00366             //*^*
00367             { DEADTRANS(L'a', 0x5E, 0xE2, 0x00) }, // letra a con ^
00368             { DEADTRANS(L'A', 0x5E, 0xC2, 0x00) }, // letra A con ^
00369             { DEADTRANS(L'e', 0x5E, 0xEA, 0x00) }, // letra e con ^
00370             { DEADTRANS(L'E', 0x5E, 0xCA, 0x00) }, // letra E con ^
00371             { DEADTRANS(L'i', 0x5E, 0xEE, 0x00) }, // letra i con ^
00372             { DEADTRANS(L'I', 0x5E, 0xCE, 0x00) }, // letra I con ^
00373             { DEADTRANS(L'o', 0x5E, 0xF4, 0x00) }, // letra o con ^
00374             { DEADTRANS(L'O', 0x5E, 0xD4, 0x00) }, // letra O con ^
00375             { DEADTRANS(L'u', 0x5E, 0xFB, 0x00) }, // letra u con ^
00376             { DEADTRANS(L'U', 0x5E, 0xDB, 0x00) }, // letra U con ^
00377             //*¨*
00378             { DEADTRANS(L'a', 0xA8, 0xE4, 0x00) }, // letra a con ¨
00379             { DEADTRANS(L'A', 0xA8, 0xC4, 0x00) }, // letra A con ¨
00380             { DEADTRANS(L'e', 0xA8, 0xEB, 0x00) }, // letra e con ¨
00381             { DEADTRANS(L'E', 0xA8, 0xCB, 0x00) }, // letra E con ¨
00382             { DEADTRANS(L'i', 0xA8, 0xEF, 0x00) }, // letra i con ¨
00383             { DEADTRANS(L'I', 0xA8, 0xCF, 0x00) }, // letra I con ¨
00384             { DEADTRANS(L'o', 0xA8, 0xF6, 0x00) }, // letra o con ¨
00385             { DEADTRANS(L'O', 0xA8, 0xD6, 0x00) }, // letra O con ¨
00386             { DEADTRANS(L'u', 0xA8, 0xFC, 0x00) }, // letra u con ¨
00387             { DEADTRANS(L'U', 0xA8, 0xDC, 0x00) }, // letra U con ¨
00388             { 0, 0, 0}
00389 };
00390 
00391 ROSDATA VSC_LPWSTR key_names[] = {
00392   { 0x00, L"" },
00393   { 0x01, L"Escape" },
00394   { 0x0e, L"Borrar" },
00395   { 0x0f, L"Tabulador" },
00396   { 0x1c, L"Intro" },
00397   { 0x1d, L"Ctrl" },
00398   { 0x2a, L"Shift" },
00399   { 0x36, L"Shift derecho" },
00400   { 0x37, L"* numerico" },
00401   { 0x38, L"Alt" },
00402   { 0x39, L"Espacio" },
00403   { 0x3a, L"Bloqueo mayusculas" },
00404   { 0x3b, L"F1" },
00405   { 0x3c, L"F2" },
00406   { 0x3d, L"F3" },
00407   { 0x3e, L"F4" },
00408   { 0x3f, L"F5" },
00409   { 0x40, L"F6" },
00410   { 0x41, L"F7" },
00411   { 0x42, L"F8" },
00412   { 0x43, L"F9" },
00413   { 0x44, L"F10" },
00414   { 0x45, L"Pausa" },
00415   { 0x46, L"Bloqueo de scroll" },
00416   { 0x47, L"Num 7" },
00417   { 0x48, L"Num 8" },
00418   { 0x49, L"Num 9" },
00419   { 0x4a, L"Num -" },
00420   { 0x4b, L"Num 4" },
00421   { 0x4c, L"Num 5" },
00422   { 0x4d, L"Num 6" },
00423   { 0x4e, L"Num +" },
00424   { 0x4f, L"Num 1" },
00425   { 0x50, L"Num 2" },
00426   { 0x51, L"Num 3" },
00427   { 0x52, L"Num 0" },
00428   { 0x53, L"Borrardo numerico" },
00429   { 0x54, L"Peticion de sistema" },
00430   { 0x57, L"F11" },
00431   { 0x58, L"F12" },
00432   { 0x7c, L"F13" },
00433   { 0x7d, L"F14" },
00434   { 0x7e, L"F15" },
00435   { 0x7f, L"F16" },
00436   { 0x80, L"F17" },
00437   { 0x81, L"F18" },
00438   { 0x82, L"F19" },
00439   { 0x83, L"F20" },
00440   { 0x84, L"F21" },
00441   { 0x85, L"F22" },
00442   { 0x86, L"F23" },
00443   { 0x87, L"F24" },
00444   { 0, NULL },
00445 };
00446 
00447 ROSDATA VSC_LPWSTR extended_key_names[] = {
00448   { 0x1c, L"Intro numerico" },
00449   { 0x1d, L"Ctrl derecho" },
00450   { 0x35, L"/ numerica" },
00451   { 0x37, L"Imprimir pantalla" },
00452   { 0x38, L"Alt derecho" },
00453   { 0x45, L"Bloqueo numerico" },
00454   { 0x46, L"Interrumpir" },
00455   { 0x47, L"Inicio" },
00456   { 0x48, L"Arriba" },
00457   { 0x49, L"Subir pagina" },
00458   { 0x4b, L"Izquierda" },
00459   { 0x4c, L"Centrar" },
00460   { 0x4d, L"Derecha" },
00461   { 0x4f, L"Fin" },
00462   { 0x50, L"Abajo" },
00463   { 0x51, L"Bajar pagina" },
00464   { 0x52, L"Insertar" },
00465   { 0x53, L"Borrar" },
00466   { 0x54, L"<ReactOS>" },
00467   { 0x55, L"Ayuda" },
00468   { 0x5b, L"Windows izquierda" },
00469   { 0x5c, L"Windows derecha" },
00470   { 0, NULL },
00471 };
00472 
00473 ROSDATA DEADKEY_LPWSTR dead_key_names[] = {
00474     L"\x00b4"   L"Agudo",
00475     L"\x0060"   L"Grave",
00476     L"\x005e"   L"Circunflejo",
00477     L"\x00A8"   L"Dieresis",
00478     NULL
00479 };
00480 
00481 /* Finally, the master table */
00482 ROSDATA KBDTABLES keyboard_layout_table = {
00483 
00484   /* modifier assignments */
00485   &modifier_bits,
00486 
00487   /* character from vk tables */
00488   vk_to_wchar_master_table,
00489 
00490   /* diacritical marks -- currently implemented by wine code */
00491   /* Spanish have severals */
00492   deadkey,
00493 
00494   /* Key names */
00495   (VSC_LPWSTR *)key_names,
00496   (VSC_LPWSTR *)extended_key_names,
00497   dead_key_names,
00498   /* Dead key names */
00499 
00500   /* scan code to virtual key maps */
00501   scancode_to_vk,
00502   sizeof(scancode_to_vk) / sizeof(scancode_to_vk[0]),
00503   extcode0_to_vk,
00504   extcode1_to_vk,
00505 
00506   MAKELONG(KLLF_ALTGR, 1), /* Version 1.0 */
00507 
00508   /* Ligatures -- Spanish doesn't have any  */
00509   0,
00510   0,
00511   NULL
00512 };
00513 
00514 PKBDTABLES WINAPI KbdLayerDescriptor(VOID) {
00515   return &keyboard_layout_table;
00516 }

Generated on Sun May 27 2012 04:22:28 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.