当前位置: 代码迷 >> 驱动开发 >> 键盘扫描码转化为字符的有关问题
  详细解决方案

键盘扫描码转化为字符的有关问题

热度:354   发布时间:2016-04-28 11:22:42.0
键盘扫描码转化为字符的问题
请问在DDK编程中 得到键盘的扫描码 怎么转化为ASCII码呢
在键入的键盘是A-Z时 为什么一下代码不能打印出ASCII呢 A-Z时扫描码对应的就是ASCII码吗

  ULONG buf_len = 0;
  size_t i;
  PKEYBOARD_INPUT_DATA buf;

  buf=Irp->AssociatedIrp.SystemBuffer;
  buf_len=Irp->IoStatus.Information/sizeof(KEYBOARD_INPUT_DATA);
  for(i=0; i<buf_len; i++)
  {
  if(!buf->Flags)
  KdPrint(("%C\n", buf->MakeCode));
  buf++;
  }

------解决方案--------------------
注意!键盘编码和ASCII编码不一样。 这里贴出键盘编码,自己可以到网上搜索ASCII编码。
============================================================================
key_system_power equ 81h
key_system_sleep equ 82h
key_system_wake equ 083h


key_error equ 01h

key_undefine equ 03h
key_a equ 04h
key_b equ 05h
key_c equ 06h
key_d equ 07h
key_e equ 08h
key_f equ 09h
key_g equ 0ah
key_h equ 0bh
key_i equ 0ch
key_j equ 0dh
key_k equ 0eh
key_l equ 0fh

key_m equ 10h
key_n equ 11h
key_o equ 12h
key_p equ 13h
key_q equ 14h
key_r equ 15h
key_s equ 16h
key_t equ 17h
key_u equ 18h
key_v equ 19h
key_w equ 1ah
key_x equ 1bh
key_y equ 1ch
key_z equ 1dh
key_1 equ 1eh
key_2 equ 1fh

key_3 equ 20h
key_4 equ 21h
key_5 equ 22h
key_6 equ 23h
key_7 equ 24h
key_8 equ 25h
key_9 equ 26h
key_0 equ 27h
key_enter equ 028h
key_esc equ 029h
key_bs equ 02ah
key_tab equ 02bh
key_space equ 02ch
key_neg equ 02dh
key_equation equ 02eh
key_L_brackets equ 02fh

key_R_brackets equ 030h
key_div equ 031h
key_code42 equ 032h
key_semicolon equ 033h
key_apostrophe equ 034h
key_tilde equ 035h
key_comma equ 036h
key_dot equ 037h
key_interrogation equ 038h
key_cap equ 039h
key_f1 equ 03ah
key_f2 equ 03bh
key_f3 equ 03ch
key_F4 equ 03Dh
key_f5 equ 03eh
key_F6 equ 03fh

key_f7 equ 040h
key_f8 equ 041h
key_f9 equ 042h
key_f10 equ 043h
key_f11 equ 044h
key_f12 equ 045h
key_print equ 046h
key_scroll equ 047h
key_pause equ 048h
key_insert equ 049h
key_home equ 04ah
key_pgup equ 04bh
key_del equ 04ch
key_end equ 04dh
key_pgdn equ 04eh
key_R_arrow equ 04fh

key_L_arrow equ 050h
key_dn_arrow equ 051h
key_Up_arrow equ 052h
key_num_lock equ 053h
key_num_div equ 054h
key_num_star equ 055h
key_num_neg equ 056h
key_num_plus equ 057h
key_num_enter equ 058h
key_num_1 equ 059h
key_num_2 equ 05ah
key_num_3 equ 05bh
key_num_4 equ 05ch
key_num_5 equ 05dh
key_num_6 equ 05eh
key_num_7 equ 05fh


key_num_8 equ 060h
key_num_9 equ 061h
key_num_0 equ 062h
key_num_dot equ 063h
key_code45 equ 064h
key_app equ 065h

key_code107 equ 085h ;for Brazilian keypad period (.)
key_code56 equ 087h ;for Brazilian forward-slash (/) and question-mark (?)
key_code133 equ 088h ;for Japan DBE_KATAKANA (ROMA)
key_code14 equ 089h ;for Japan
key_code132 equ 08Ah ;for Japan CONVERT? (CHG)
key_code131 equ 08Bh ;for Japan NONCONVERT? (N-CHG)

key_Hangul equ 90h ;korean key F1
Key_Hanja equ 91h ;Korean key F2

key_L_ctrl equ 0e0h
key_l_shift equ 0e1h
key_l_alt equ 0e2h
  相关解决方案