请问在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
{
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
key_L_win equ 0e3h
key_r_ctrl equ 0e4h
key_r_shift equ 0e5h
key_r_alt equ 0e6h
key_r_win equ 0e7h
; for multi key
key_V_plus equ 0100h
key_V_neg equ 0101h
key_mute equ 0102h
key_play_pause equ 0103h
key_next_track equ 0104h
key_pre_track equ 0105h
key_stop equ 0106h
key_eject equ 0107h
key_www_refresh equ 0108h
key_www_stop equ 0109h
key_www_F equ 010ah
key_www_b equ 010bh
key_www_home equ 010ch
key_www_goto equ 010dh
key_www_search equ 010eh
key_e_mail equ 011fh
key_media equ 0110h
key_explorer equ 0111h
key_calculator equ 0112h
key_screensave equ 0113h
key_computer equ 0114h
key_min equ 0115h
key_rec equ 0116h
key_rew equ 0117h
; for combine key
key_00 equ 0200h
key_000 equ 0201h
key_open equ 0202h ;ctrl--O
key_save equ 0203h ;CTRL--S
key_print_key equ 0204h ;CTRL--P
key_cut equ 0205h ;CTRL--X
key_copy equ 0206h ;CTRL--C
key_paste equ 0207h ;CTRL--V
key_rotate equ 0208h ;ALT-TAB
key_close equ 0209h ;ALT--F4
;for two defined key 1
key_f1_f11 equ 0300h
key_f2_f12 equ 0301h
key_f10_scroll equ 0302h
key_Up_pgup equ 0303h
key_dn_pgdn equ 0304h
key_L_home equ 0305h
key_r_end equ 0306h
;for two defined key 2
key_7_num_7 equ 0400h
key_8_num_8 equ 0401h
key_9_num_9 equ 0402h
key_0_num_star equ 0403h
key_u_num_4 equ 0404h
key_i_num_5 equ 0405h
key_o_num_6 equ 0406h
key_p_num_neg equ 0407h
key_j_num_1 equ 0408h
key_k_num_2 equ 0409h
key_l_num_3 equ 040ah
key_semicolon_plus equ 040bh
key_m_num_0 equ 040ch
key_comma_107 equ 040dh
key_dot_num equ 040eh
key_interrogation_div equ 040fh
key_enter_LR equ 0410h
; for function key
key_fn equ 5000h