⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbdit.c

📁 这是一个开放源代码的与WINNT/WIN2K/WIN2003兼容的操作系统
💻 C
字号:
/*
 * ReactOS Italian Keyboard layout
 * Copyright (C) 2007 ReactOS
 * License: LGPL, see: LGPL.txt
 * 
 */

#include <windows.h>
#include <internal/kbd.h>

#ifdef _M_IA64
#define ROSDATA static __declspec(allocate(".data"))
#else
#ifdef _MSC_VER
#pragma data_seg(".data")
#define ROSDATA static
#else
#define ROSDATA static __attribute__((section(".data")))
#endif
#endif

#define VK_EMPTY 0xff   /* The non-existent VK */
#define KSHIFT   0x001  /* Shift modifier */
#define KCTRL    0x002  /* Ctrl modifier */
#define KALT     0x004  /* Alt modifier */
#define KEXT     0x100  /* Extended key code */
#define KMULTI   0x200  /* Multi-key */
#define KSPEC    0x400  /* Special key */
#define KNUMP    0x800  /* Number-pad */
#define KNUMS    0xc00  /* Special + number pad */
#define KMEXT    0x300  /* Multi + ext */

#define SHFT_INVALID 0x0F

ROSDATA USHORT scancode_to_vk[] = {
/* 00 */  VK_EMPTY, 	
/* 01 */  VK_ESCAPE,	
/* 02 */  '1',		
/* 03 */  '2',		
/* 04 */  '3',		
/* 05 */  '4',		
/* 06 */  '5',		
/* 07 */  '6',		
/* 08 */  '7',    	     
/* 09 */  '8',    	 
/* 0a */  '9',  	       
/* 0b */  '0',		
/* 0c */  VK_OEM_4, 	
/* 0d */  VK_OEM_6,    
/* 0e */  VK_BACK,	
/* 0f */  VK_TAB, 	     
/* 10 */  'Q', 		    
/* 11 */  'W',		        
/* 12 */  'E',		
/* 13 */  'R',  	      
/* 14 */  'T', 		      
/* 15 */  'Y', 		         
/* 16 */  'U',  	
/* 17 */  'I',          
/* 18 */  'O',          
/* 19 */  'P',         
/* 1a */  VK_OEM_1,     
/* 1b */  VK_OEM_PLUS,     
/* 1c */  VK_RETURN,
/* 1d */  VK_LCONTROL, 
/* 1e */  'A',          
/* 1f */  'S',          
/* 20 */  'D',          
/* 21 */  'F',
/* 22 */  'G',          
/* 23 */  'H',          
/* 24 */  'J',          
/* 25 */  'K',
/* 26 */  'L',         
/* 27 */  VK_OEM_3,                           
/* 28 */  VK_OEM_7,               
/* 29 */  VK_OEM_2,
/* 2a */  VK_LSHIFT,    
/* 2b */  VK_OEM_5,     
/* 2c */  'Z',          
/* 2d */  'X',          
/* 2e */  'C',         
/* 2f */  'V',         
/* 30 */  'B',          
/* 31 */  'N',          
/* 32 */  'M',                                
/* 33 */  VK_OEM_COMMA,
/* 34 */  VK_OEM_PERIOD, 
/* 35 */  VK_OEM_MINUS,     
/* 36 */  VK_RSHIFT,
/* 37 */  VK_MULTIPLY,  
/* 38 */  VK_LMENU,     
/* 39 */  VK_SPACE,     
/* 3a */  VK_CAPITAL,
/* 3b */  VK_F1, 
/* 3c */  VK_F2, 
/* 3d */  VK_F3, 
/* 3e */  VK_F4, 
/* 3f */  VK_F5, 
/* 40 */  VK_F6,
/* 41 */  VK_F7,
/* 42 */  VK_F8,
/* 43 */  VK_F9, 
/* 44 */  VK_F10,
/* 45 */  VK_NUMLOCK | KMEXT,  
/* 46 */  VK_SCROLL | KMULTI, 
/* 47 */  VK_HOME | KNUMS,    
/* 48 */  VK_UP | KNUMS,        
/* 49 */  VK_PRIOR | KNUMS,       
/* 4a */  VK_SUBTRACT,
/* 4b */  VK_LEFT | KNUMS,
/* 4c */  VK_CLEAR | KNUMS,      
/* 4d */  VK_RIGHT | KNUMS,       
/* 4e */  VK_ADD,
/* 4f */  VK_END | KNUMS, 
/* 50 */  VK_DOWN | KNUMS,      
/* 51 */  VK_NEXT | KNUMS,       
/* 52 */  VK_INSERT | KNUMS, 
/* 53 */  VK_DELETE | KNUMS,   
/* 54 */  VK_SNAPSHOT,
/* 55 */  VK_EMPTY,     
/* 56 */  VK_OEM_102,  
/* 57 */  VK_F11,           
/* 58 */  VK_F12,
/* 59 */  VK_EMPTY,     
/* 5a */  VK_CLEAR,     
/* 5b */  VK_EMPTY,     
/* 5c */  VK_EMPTY,     
/* 5d */  VK_EMPTY,     
/* 5e */  VK_EMPTY, /* EREOF */
/* 5f */  VK_EMPTY,     
/* 60 */  VK_EMPTY,     
/* 61 */  VK_EMPTY,     
/* 62 */  VK_EMPTY,     
/* 63 */  VK_EMPTY, /* ZOOM */
/* 64 */  VK_HELP,     
/* 65 */  VK_F13, 
/* 66 */  VK_F14, 
/* 67 */  VK_F15, 
/* 68 */  VK_F16, 
/* 69 */  VK_F17, 
/* 6a */  VK_F18, 
/* 6b */  VK_F19, 
/* 6c */  VK_F20,
/* 6d */  VK_F21, 
/* 6e */  VK_F22, 
/* 6f */  VK_F23,
/* 70 */  VK_EMPTY, 
/* 71 */  VK_EMPTY, 
/* 72 */  VK_EMPTY,
/* 73 */  VK_EMPTY,
/* 74 */  VK_EMPTY, 
/* 75 */  VK_EMPTY, 
/* 76 */  VK_EMPTY,
/* 77 */  VK_F24,
/* 78 */  VK_EMPTY,
/* 79 */  VK_EMPTY, 
/* 7a */  VK_EMPTY, 
/* 7b */  VK_EMPTY,
/* 7c */  VK_EMPTY, 
/* 7d */  VK_EMPTY, 
/* 7e */  VK_EMPTY, 
/* 7f */  VK_EMPTY, 
/* 80 */  VK_EMPTY,
/* 00 */  0
};

ROSDATA VSC_VK extcode0_to_vk[] = {
  { 0, 0 },
};

ROSDATA VSC_VK extcode1_to_vk[] = {
  { 0, 0 },
};

ROSDATA VK_TO_BIT modifier_keys[] = {
  { VK_SHIFT,   KSHIFT },
  { VK_CONTROL, KCTRL },
  { VK_MENU,    KALT },
  { 0,          0 }
};

ROSDATA MODIFIERS modifier_bits = {
  modifier_keys,
  6,
  {   0,     1,    2,          4,   SHFT_INVALID, SHFT_INVALID, 3  } 
};

#define NOCAPS 0
#define CAPS   KSHIFT /* Caps -> shift */

ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
  /* Normal vs Shifted */
  /* The numbers */
  { '1',         NOCAPS, {'1', '!'} },
  { '2',         NOCAPS, {'2', '"'} },
  { '3',         NOCAPS, {'3', 0x00a3} },
  { '4',         NOCAPS, {'4', '$'} },
  { '5',         NOCAPS, {'5', '%'} },
  { '6',         NOCAPS, {'6', '&'} },
  { '7',         NOCAPS, {'7', '/'} },
  { '8',         NOCAPS, {'8', '('} },
  { '9',         NOCAPS, {'9', ')'} },
  { '0',         NOCAPS, {'0', '='} },

  /* Specials */
  /* Ctrl-_ generates US */
  { VK_OEM_2       ,NOCAPS, {'\\', '|'} },
  { VK_OEM_4       ,NOCAPS, {'\'', '?'} },
  { VK_OEM_102     ,NOCAPS, {'<', '>'} }, 
  { VK_OEM_COMMA   ,NOCAPS, {',', ';'} },
  { VK_OEM_PERIOD  ,NOCAPS, {'.', ':'} },
  { VK_OEM_MINUS   ,NOCAPS, {'-', '_'} },
  /* Keys that do not have shift states */
  { VK_TAB     ,NOCAPS, {'\t','\t'} },
  { VK_ADD     ,NOCAPS, {'+', '+'} },
  { VK_SUBTRACT,NOCAPS, {'-', '-'} },
  { VK_MULTIPLY,NOCAPS, {'*', '*'} },
  { VK_DIVIDE  ,NOCAPS, {'/', '/'} },
  { VK_ESCAPE  ,NOCAPS, {'\x1b','\x1b'} },
  { VK_SPACE   ,NOCAPS, {' ', ' '} },
  { VK_OEM_5   ,NOCAPS, {0x00f9, 0x00a7} },//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -