//VK 虚拟键名称与代码 namespace key /**details(展开用法说明) 虚拟键名在 key.VK 命名空间定义(通常与键盘上显示的名称相同)。 key 库函数可以直接用字符串表示 key.VK 命名空间的键名。 例如:`key.press("ENTER")` 等价于 `key.press(key.VK.ENTER)` 。 虚拟键码常用在键名前加上 `_VK_` 前缀的自动完成常量表示。 例如在 aardio 编辑器中输入 `_VK_ENTER`, 然后利用 aardio 编辑器的自动补全模板(或按 `Ctrl+J`)可自动转换为 `0xD/*_VK_ENTER*/`。 end details**/ //@guide [虚拟键名称与代码](doc://library-guide/std/key/virtual-key-names.html) VK = { /*intellisense(key.VK)*/ CANCEL=3; BACK=8; TAB=9; CLEAR=12; ENTER=13; SHIFT=16; CONTROL=17; CTRL=17; MENU=18; ALT=18; PAUSE=19; CAPITAL=20; CAPSLK=20; HANGEUL=21; JUNJA=23; FINAL=24; KANJI=25; ESCAPE=27; ESC=27; CONVERT=28; NONCONVERT=29; ACCEPT=30; MODECHANGE=31; SPACE=32; PRIOR=33; PGUP=33; NEXT=34; PGDN=34; END=35; HOME=36; LEFT=37; UP=38; RIGHT=39; DOWN=40; SELECT=41; PRINT=42; EXECUTE=43; PRINTSCREEN=44; INS=45; INSERT=45; DELETE=46; HELP=47; LWIN=91; WIN=91; RWIN=92; APPS=93; SLEEP=95; NUMPAD0=96; NUMPAD1=97; NUMPAD2=98; NUMPAD3=99; NUMPAD4=100; NUMPAD5=101; NUMPAD6=102; NUMPAD7=103; NUMPAD8=104; NUMPAD9=105; NUMPAD_ENTER=13; MULTIPLY=106; ADD=107; SEPARATOR=108; SUBTRACT=109; DECIMAL=110; DIVIDE=111; F1=112; F2=113; F3=114; F4=115; F5=116; F6=117; F7=118; F8=119; F9=120; F10=121; F11=122; F12=123; F13=124; F14=125; F15=126; F16=127; F17=128; F18=129; F19=130; F20=131; F21=132; F22=133; F23=134; F24=135; NUMLOCK=144; NMLK=144; SCROLL=145; SCRLK=145; OEM_NEC_EQUAL=146; OEM_FJ_MASSHOU=147; OEM_FJ_TOUROKU=148; OEM_FJ_LOYA=149; OEM_FJ_ROYA=150; LSHIFT=160; RSHIFT=161; LCONTROL=162; RCONTROL=163; LCTRL=162; RCTRL=163; LMENU=164; RMENU=165; LALT=164; RALT=165; BROWSER_BACK=166; BROWSER_FORWARD=167; BROWSER_REFRESH=168; BROWSER_STOP=169; BROWSER_SEARCH=170; BROWSER_FAVORITES=171; BROWSER_HOME=172; VOLUME_MUTE=173; VOLUME_DOWN=174; VOLUME_UP=175; MEDIA_NEXT_TRACK=176; MEDIA_PREV_TRACK=177; MEDIA_STOP=178; MEDIA_PLAY_PAUSE=179; LAUNCH_MAIL=180; LAUNCH_MEDIA_SELECT=181; LAUNCH_APP1=182; LAUNCH_APP2=183; OEM_1=186; SEMICOLON=186; OEM_PLUS=187; PLUS=187; OEM_COMMA=188; COMMA=188; OEM_MINU=189; MINU=189; OEM_PERIOD=190; PERIOD=190; OEM_2=191; OEM_3=192; OEM_4=219; OEM_5=220; OEM_6=221; OEM_7=222; QUOTE=222; OEM_8=223; OEM_AX=225; BACKSLASH=226; ICO_HELP=227; ICO_00=228; PROCESSKEY=229; ICO_CLEAR=230; PACKET=231; OEM_RESET=233; OEM_JUMP=234; OEM_PA1=235; OEM_PA2=236; OEM_PA3=237; OEM_WSCTRL=238; OEM_CUSEL=239; OEM_ATTN=240; OEM_FINISH=241; OEM_COPY=242; OEM_AUTO=243; OEM_ENLW=244; OEM_BACKTAB=245; ATTN=246; CRSEL=247; EXSEL=248; EREOF=249; PLAY=250; ZOOM=251; NONAME=252; PA1=253; OEM_CLEAR=254; A='A'#; B='B'#; C='C'#; D='D'#; E='E'#; F='F'#; G='G'#; H='H'#; I='I'#; J='J'#; K='K'#; L='L'#; M='M'#; N='N'#; O='O'#; P='P'#; Q='Q'#; R='R'#; S='S'#; T='T'#; U='U'#; V='V'#; W='W'#; X='X'#; Y='Y'#; Z='Z'#; /*end intellisense*/ ["0"]='0'#; ["1"]='1'#; ["2"]='2'#; ["3"]='3'#; ["4"]='4'#; ["5"]='5'#; ["6"]='6'#; ["7"]='7'#; ["8"]='8'#; ["9"]='9'#; ["/"]=0xBF; ["`"]=0xC0; ["["]=0xDB; ["\"]=0xDC; ["]"]=0xDD; ['\'']=0xDE; [',']=188; ['.']=190; ['-']=189; ['=']=187; [' ']=32; ['\t']=8; ['\r']=13; ['\n']=13; [";"]=186; } //需要按SHIFT发送的字符 VK_MAPSHIFT = { ["~"]=0xC0; [")"]='0'#; ["!"]='1'#; ["@"]='2'#; ["#"]='3'#; ["$"]='4'#; ["%"]='5'#; ["^"]='6'#; ["&"]='7'#; ["*"]='8'#; ["("]='9'#; ["?"]=0xBF; ["{"]=0xDB; ["|"]=0xDC; ["}"]=0xDD; ['"']=0xDE; ['<']=188; ['>']=190; ['_']=189; ['+']=187; [":"]=186; } VK_NAME = { [147]="OEM_FJ_MASSHOU"; [188]=","; [103]="NUMPAD7"; [160]="LSHIFT"; [99]="NUMPAD3"; [146]="OEM_NEC_EQUAL"; [111]="DIVIDE"; [149]="OEM_FJ_LOYA"; [107]="ADD"; [113]="F2"; [40]="DOWN"; [101]="NUMPAD5"; [37]="LEFT"; [100]="NUMPAD4"; [12]="CLEAR"; [3]="CANCEL"; [235]="OEM_PA1"; [243]="OEM_AUTO"; [231]="PACKET"; [38]="UP"; [172]="BROWSER_HOME"; [8]="BACK"; [35]="END"; [116]="F5"; [109]="SUBTRACT"; [178]="MEDIA_STOP"; [44]="PRINTSCREEN"; [164]="LALT"; [132]="F21"; [222]="QUOTE"; [21]="HANGEUL"; [131]="F20"; [102]="NUMPAD6"; [237]="OEM_PA3"; [48]="0"; [124]="F13"; [50]="2"; [39]="RIGHT"; [34]="PGDN"; [55]="7"; [54]="6"; [57]="9"; [236]="OEM_PA2"; [167]="BROWSER_FORWARD"; [244]="OEM_ENLW"; [170]="BROWSER_SEARCH"; [127]="F16"; [179]="MEDIA_PLAY_PAUSE"; [148]="OEM_FJ_TOUROKU"; [67]="C"; [66]="B"; [43]="EXECUTE"; [68]="D"; [71]="G"; [70]="F"; [73]="I"; [233]="OEM_RESET"; [176]="MEDIA_NEXT_TRACK"; [74]="J"; [175]="VOLUME_UP"; [163]="RCTRL"; [79]="O"; [78]="N"; [24]="FINAL"; [134]="F23"; [83]="S"; [82]="R"; [85]="U"; [25]="KANJI"; [9]="TAB"; [162]="LCTRL"; [27]="ESC"; [88]="X"; [219]="["; [250]="PLAY"; [221]="]"; [220]="\"; [161]="RSHIFT"; [42]="PRINT"; [174]="VOLUME_DOWN"; [91]="LWIN"; [16]="SHIFT"; [253]="PA1"; [177]="MEDIA_PREV_TRACK"; [28]="CONVERT"; [95]="SLEEP"; [187]="="; [234]="OEM_JUMP"; [108]="SEPARATOR"; [117]="F6"; [240]="OEM_ATTN"; [110]="DECIMAL"; [123]="F12"; [92]="RWIN"; [122]="F11"; [150]="OEM_FJ_ROYA"; [251]="ZOOM"; [47]="HELP"; [130]="F19"; [126]="F15"; [225]="OEM_AX"; [121]="F10"; [192]="`"; [191]="/"; [56]="8"; [53]="5"; [52]="4"; [51]="3"; [112]="F1"; [49]="1"; [90]="Z"; [89]="Y"; [87]="W"; [86]="V"; [181]="LAUNCH_MEDIA_SELECT"; [84]="T"; [81]="Q"; [252]="NONAME"; [20]="CAPSLK"; [186]=";"; [129]="F18"; [80]="P"; [120]="F9"; [77]="M"; [145]="SCRLK"; [76]="L"; [23]="JUNJA"; [75]="K"; [36]="HOME"; [72]="H"; [69]="E"; [65]="A"; [254]="OEM_CLEAR"; [228]="ICO_00"; [249]="EREOF"; [104]="NUMPAD8"; [13]="ENTER"; [247]="CRSEL"; [246]="ATTN"; [46]="DELETE"; [173]="VOLUME_MUTE"; [241]="OEM_FINISH"; [97]="NUMPAD1"; [30]="ACCEPT"; [238]="OEM_WSCTRL"; [171]="BROWSER_FAVORITES"; [227]="ICO_HELP"; [230]="ICO_CLEAR"; [229]="PROCESSKEY"; [226]="BACKSLASH"; [223]="OEM_8"; [106]="MULTIPLY"; [190]="."; [119]="F8"; [189]="-"; [183]="LAUNCH_APP2"; [182]="LAUNCH_APP1"; [33]="PGUP"; [105]="NUMPAD9"; [180]="LAUNCH_MAIL"; [41]="SELECT"; [242]="OEM_COPY"; [135]="F24"; [168]="BROWSER_REFRESH"; [166]="BROWSER_BACK"; [96]="NUMPAD0"; [144]="NMLK"; [169]="BROWSER_STOP"; [133]="F22"; [19]="PAUSE"; [125]="F14"; [128]="F17"; [45]="INSERT"; [118]="F7"; [114]="F3"; [115]="F4"; [17]="CTRL"; [248]="EXSEL"; [98]="NUMPAD2"; [239]="OEM_CUSEL"; [165]="RALT"; [18]="ALT"; [93]="APPS"; [245]="OEM_BACKTAB"; [32]="SPACE"; [31]="MODECHANGE"; [29]="NONCONVERT" } VK_EXT = { [0x5B/*_VK_LWIN*/]=1 ; [0x5C/*_VK_RWIN*/]=1 ; [0xA3/*_VK_RCONTROL*/]=1 ; [0xA5/*_VK_RMENU*/]=1 ; [0x5D/*_VK_APPS*/]=1 ; [0x2D/*_VK_INSERT*/]=1 ; [0x24/*_VK_HOME*/]=1 ; [0x21/*_VK_PRIOR*/]=1 ; [0x2E/*_VK_DELETE*/]=1 ; [0x23/*_VK_END*/]=1 ; [0x22/*_VK_NEXT*/]=1 ; [0x26/*_VK_UP*/]=1 ; [0x28/*_VK_DOWN*/]=1 ; [0x25/*_VK_LEFT*/]=1 ; [0x27/*_VK_RIGHT*/]=1 ; [0x6F/*_VK_DIVIDE*/]=1 ; [0xA6/*_VK_BROWSER_BACK*/]=1 ; [0xA7/*_VK_BROWSER_FORWARD*/]=1 ; [0xA8/*_VK_BROWSER_REFRESH*/]=1 ; [0xA9/*_VK_BROWSER_STOP*/]=1 ; [0xAA/*_VK_BROWSER_SEARCH*/]=1 ; [0xAB/*_VK_BROWSER_FAVORITES*/]=1 ; [0xAC/*_VK_BROWSER_HOME*/]=1 ; [0xAD/*_VK_VOLUME_MUTE*/]=1 ; [0xAE/*_VK_VOLUME_DOWN*/]=1 ; [0xAF/*_VK_VOLUME_UP*/]=1 ; [0xB0/*_VK_MEDIA_NEXT_TRACK*/]=1 ; [0xB1/*_VK_MEDIA_PREV_TRACK*/]=1 ; [0xB2/*_VK_MEDIA_STOP*/]=1 ; [0xB3/*_VK_MEDIA_PLAY_PAUSE*/]=1 ; [0xB4/*_VK_LAUNCH_MAIL*/]=1 ; [0xB5/*_VK_LAUNCH_MEDIA_SELECT*/]=1 ; [0xB6/*_VK_LAUNCH_APP1*/]=1 ; [0xB7/*_VK_LAUNCH_APP2*/]=1 ; } //如果一个虚拟键码存在扩展与非扩展键,记录于此表 VK_EXT2 = { NUMPAD_ENTER=1; } VK_EXT2NAME = { [0xD/*_VK_RETURN*/] = "NUMPAD_ENTER"; } VK_NLR = { [ 0xA2/*_VK_LCONTROL*/ ] = 0x11; [ 0xA3/*_VK_RCONTROL*/ ] = 0x11; [ 0xA4/*_VK_LMENU*/ ] = 0x12; [ 0xA5/*_VK_RMENU*/ ] = 0x12; [ 0xA0/*_VK_LSHIFT*/ ] = 0x10; [ 0xA1/*_VK_RSHIFT*/ ] = 0x10; [ 0x5B/*_VK_LWIN*/] = 0x5B; [ 0x5C/*_VK_RWIN*/ ] = 0x5B; } /**intellisense() key.VK_NLR[__/*虚拟键码*/] = 返回忽略左右键的控制键码 _KEYEVENTF_EXTENDEDKEY=@0x1/*_KEYEVENTF_EXTENDEDKEY*/ _KEYEVENTF_KEYUP=@0x2/*_KEYEVENTF_KEYUP*/ _VK_SEMICOLON=@186/*_VK_SEMICOLON*/ _VK_OEM_PERIOD=@190/*_VK_OEM_PERIOD*/ _VK_PERIOD=@190/*_VK_PERIOD*/ _VK_OEM_COMMA=@188/*_VK_OEM_COMMA*/ _VK_COMMA=@188/*_VK_COMMA*/ _VK_OEM_1=@186/*_VK_OEM_1*/ _VK_OEM_PLUS=@0xBB/*_VK_OEM_PLUS*/ _VK_OEM_MINU=@0xBD/*_VK_OEM_MINU*/ _VK_PLUS=@0xBB/*_VK_PLUS*/ _VK_MINU=@0xBD/*_VK_MINU*/ _VK_QUOTE=@222/*_VK_QUOTE*/ _VK_ADD=@0x6B/*_VK_ADD*/ _VK_ATTN=@0xF6/*_VK_ATTN*/ _VK_BACK=@0x8/*_VK_BACK*/ _VK_CANCEL=@0x3/*_VK_CANCEL*/ _VK_CAPITAL=@0x14/*_VK_CAPITAL*/ _VK_CAPSLK=@0x14/*_VK_CAPSLK*/ _VK_CLEAR=@0xC/*_VK_CLEAR*/ _VK_CONTROL=@0x11/*_VK_CONTROL*/ _VK_CTRL=@0x11/*_VK_CTRL*/ _VK_CRSEL=@0xF7/*_VK_CRSEL*/ _VK_DECIMAL=@0x6E/*_VK_DECIMAL*/ _VK_DELETE=@0x2E/*_VK_DELETE*/ _VK_DIVIDE=@0x6F/*_VK_DIVIDE*/ _VK_DOWN=@0x28/*_VK_DOWN*/ _VK_END=@0x23/*_VK_END*/ _VK_EREOF=@0xF9/*_VK_EREOF*/ _VK_ESCAPE=@0x1B/*_VK_ESCAPE*/ _VK_ESC=@0x1B/*_VK_ESC*/ _VK_EXECUTE=@0x2B/*_VK_EXECUTE*/ _VK_EXSEL=@0xF8/*_VK_EXSEL*/ _VK_F1=@0x70/*_VK_F1*/ _VK_F10=@0x79/*_VK_F10*/ _VK_F11=@0x7A/*_VK_F11*/ _VK_F12=@0x7B/*_VK_F12*/ _VK_F13=@0x7C/*_VK_F13*/ _VK_F14=@0x7D/*_VK_F14*/ _VK_F15=@0x7E/*_VK_F15*/ _VK_F16=@0x7F/*_VK_F16*/ _VK_F17=@0x80/*_VK_F17*/ _VK_F18=@0x81/*_VK_F18*/ _VK_F19=@0x82/*_VK_F19*/ _VK_F2=@0x71/*_VK_F2*/ _VK_F20=@0x83/*_VK_F20*/ _VK_F21=@0x84/*_VK_F21*/ _VK_F22=@0x85/*_VK_F22*/ _VK_F23=@0x86/*_VK_F23*/ _VK_F24=@0x87/*_VK_F24*/ _VK_F3=@0x72/*_VK_F3*/ _VK_F4=@0x73/*_VK_F4*/ _VK_F5=@0x74/*_VK_F5*/ _VK_F6=@0x75/*_VK_F6*/ _VK_F7=@0x76/*_VK_F7*/ _VK_F8=@0x77/*_VK_F8*/ _VK_F9=@0x78/*_VK_F9*/ _VK_HELP=@0x2F/*_VK_HELP*/ _VK_HOME=@0x24/*_VK_HOME*/ _VK_INSERT=@0x2D/*_VK_INSERT*/ _VK_LBUTTON=@0x1/*_VK_LBUTTON*/ _VK_LCONTROL=@0xA2/*_VK_LCONTROL*/ _VK_LCTRL=@0xA2/*_VK_LCTRL*/ _VK_LEFT=@0x25/*_VK_LEFT*/ _VK_LMENU=@0xA4/*_VK_LMENU*/ _VK_LALT=@0xA4/*_VK_LALT*/ _VK_LSHIFT=@0xA0/*_VK_LSHIFT*/ _VK_MBUTTON=@0x4/*_VK_MBUTTON*/ _VK_MENU=@0x12/*_VK_MENU*/ _VK_ALT=@0x12/*_VK_ALT*/ _VK_MULTIPLY=@0x6A/*_VK_MULTIPLY*/ _VK_NEXT=@0x22/*_VK_NEXT*/ _VK_PGDN=@0x22/*_VK_PGDN*/ _VK_NONAME=@0xFC/*_VK_NONAME*/ _VK_NUMLOCK=@0x90/*_VK_NUMLOCK*/ _VK_NMLK=@0x90/*_VK_NMLK*/ _VK_NUMPAD0=@0x60/*_VK_NUMPAD0*/ _VK_NUMPAD1=@0x61/*_VK_NUMPAD1*/ _VK_NUMPAD2=@0x62/*_VK_NUMPAD2*/ _VK_NUMPAD3=@0x63/*_VK_NUMPAD3*/ _VK_NUMPAD4=@0x64/*_VK_NUMPAD4*/ _VK_NUMPAD5=@0x65/*_VK_NUMPAD5*/ _VK_NUMPAD6=@0x66/*_VK_NUMPAD6*/ _VK_NUMPAD7=@0x67/*_VK_NUMPAD7*/ _VK_NUMPAD8=@0x68/*_VK_NUMPAD8*/ _VK_NUMPAD9=@0x69/*_VK_NUMPAD9*/ _VK_OEM_CLEAR=@0xFE/*_VK_OEM_CLEAR*/ _VK_PA1=@0xFD/*_VK_PA1*/ _VK_PAUSE=@0x13/*_VK_PAUSE*/ _VK_PLAY=@0xFA/*_VK_PLAY*/ _VK_PRINT=@0x2A/*_VK_PRINT*/ _VK_PRIOR=@0x21/*_VK_PRIOR*/ _VK_PGUP=@0x21/*_VK_PGUP*/ _VK_PROCESSKEY=@0xE5/*_VK_PROCESSKEY*/ _VK_RBUTTON=@0x2/*_VK_RBUTTON*/ _VK_RCONTROL=@0xA3/*_VK_RCONTROL*/ _VK_RCTRL=@0xA3/*_VK_RCTRL*/ _VK_RETURN=@0xD/*_VK_RETURN*/ _VK_ENTER=@0xD/*_VK_ENTER*/ _VK_RIGHT=@0x27/*_VK_RIGHT*/ _VK_RMENU=@0xA5/*_VK_RMENU*/ _VK_RALT=@0xA5/*_VK_RALT*/ _VK_RSHIFT=@0xA1/*_VK_RSHIFT*/ _VK_SCROLL=@0x91/*_VK_SCROLL*/ _VK_SCRLK=@0x91/*_VK_SCRLK*/ _VK_SELECT=@0x29/*_VK_SELECT*/ _VK_SEPARATOR=@0x6C/*_VK_SEPARATOR*/ _VK_SHIFT=@0x10/*_VK_SHIFT*/ _VK_SNAPSHOT=@0x2C/*_VK_SNAPSHOT*/ _VK_SPACE=@0x20/*_VK_SPACE*/ _VK_SUBTRACT=@0x6D/*_VK_SUBTRACT*/ _VK_TAB=@0x9/*_VK_TAB*/ _VK_UP=@0x26/*_VK_UP*/ _VK_ZOOM=@0xFB/*_VK_ZOOM*/ _VK_LWIN=@0x5B/*_VK_LWIN*/ _VK_WIN=@0x5B/*_VK_LWIN*/ _VK_RWIN=@0x5C/*_VK_RWIN*/ _VK_APPS=@0x5D/*_VK_APPS*/ _VK_BROWSER_BACK=@0xA6/*_VK_BROWSER_BACK*/ _VK_BROWSER_FORWARD=@0xA7/*_VK_BROWSER_FORWARD*/ _VK_BROWSER_REFRESH=@0xA8/*_VK_BROWSER_REFRESH*/ _VK_BROWSER_STOP=@0xA9/*_VK_BROWSER_STOP*/ _VK_BROWSER_SEARCH=@0xAA/*_VK_BROWSER_SEARCH*/ _VK_BROWSER_FAVORITES=@0xAB/*_VK_BROWSER_FAVORITES*/ _VK_BROWSER_HOME=@0xAC/*_VK_BROWSER_HOME*/ _VK_VOLUME_MUTE=@0xAD/*_VK_VOLUME_MUTE*/ _VK_VOLUME_DOWN=@0xAE/*_VK_VOLUME_DOWN*/ _VK_VOLUME_UP=@0xAF/*_VK_VOLUME_UP*/ _VK_MEDIA_NEXT_TRACK=@0xB0/*_VK_MEDIA_NEXT_TRACK*/ _VK_MEDIA_PREV_TRACK=@0xB1/*_VK_MEDIA_PREV_TRACK*/ _VK_MEDIA_STOP=@0xB2/*_VK_MEDIA_STOP*/ _VK_MEDIA_PLAY_PAUSE=@0xB3/*_VK_MEDIA_PLAY_PAUSE*/ _VK_LAUNCH_MAIL=@0xB4/*_VK_LAUNCH_MAIL*/ _VK_LAUNCH_MEDIA_SELECT=@0xB5/*_VK_LAUNCH_MEDIA_SELECT*/ _VK_LAUNCH_APP1=@0xB6/*_VK_LAUNCH_APP1*/ _VK_LAUNCH_APP2=@0xB7/*_VK_LAUNCH_APP2*/ end intellisense**/