1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-29 10:30:36 +00:00
QB64-PE/internal/help/_KEYHIT.txt
SteveMcNeill 33adc04fc4 Add temp folder to repo. It's necessary as well!
Just more initial setting on... nothing much to see here.
2022-04-28 13:39:56 -04:00

119 lines
6.7 KiB
Plaintext

{{DISPLAYTITLE:_KEYHIT}}
The [[_KEYHIT]] function returns [[ASCII]] one and two byte, OpenGL Virtual Key and Unicode keyboard key press codes.
{{PageSyntax}}
:{{Parameter|keycode&}} = [[_KEYHIT]]
{{PageDescription}}
* Return values range up to &H40000000 so use a [[LONG]] or [[_INTEGER64]] variable type. See the [[_KEYDOWN]] code list:
:* 0-255: [[ASCII]] values (Refer to [http://en.wikipedia.org/wiki/Code_page_437 CP437]).
:* 256-65535: [[ASCII#Two_Byte_Codes|2-byte]] character codes : code = [[CVI]]([[CHR$]](0) + [[CHR$]](scancode)) (unaffected by SHIFT/ALT/CTRL modifiers).
:* 65536-&H40000000: [[_KEYDOWN|QB64-specific Virtual Key codes]] (designated with + for 100000 on keyboard below)
:* '''Negative''' [[LONG]] values returned indicate that a key was released or a lock function key has been turned off.
* '''Note: _KEYHIT can only return one value at a time so use the [[_KEYDOWN]] keyhit value to find key combinations.'''
* To receive input from a [[$CONSOLE]] window, use [[_CINP]].
{{WhiteStart}}' '''_KEYHIT Keyboard Codes'''
'
''''Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Sys ScL Pause'''
' 27 15104 15360 15616 15872 16128 16384 16640 16896 17152 17408 34048 34304 +316 +302 +019
''''`~ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ BkSp Ins Hme PUp NumL / * -'''
'126 33 64 35 36 37 94 38 42 40 41 95 43 8 20992 18176 18688 +300 47 42 45
''' 96 49 50 51 52 53 54 55 56 57 48 45 61''
''''Tab Q W E R T Y U I O P [{ ]} \| Del End PDn 7Hme 8/▲ 9PU + '''
' 9 81 87 69 82 84 89 85 73 79 80 123 125 124 21248 20224 20736 18176 18432 18688 43
''' 113 119 101 114 116 121 117 105 111 112 91 93 92 55 56 57 ''
''''CapL A S D F G H J K L ;: '" Enter 4/◄- 5 6/-►
'+301 65 83 68 70 71 72 74 75 76 58 34 13 19200 19456 19712 '''E'''
''' 97 115 100 102 103 104 106 107 108 59 39 52 53 54 '' '''n'''
''''Shift Z X C V B N M ,< .> /? Shift ▲ 1End 2/▼ 3PD t'''
'+304 90 88 67 86 66 78 77 60 62 63 +303 18432 20224 20480 20736 '''e'''
''' 122 120 99 118 98 110 109 44 46 47 49 50 51 '' '''r'''
''''Ctrl Win Alt Spacebar Alt Win Menu Ctrl ◄- ▼ -► 0Ins .Del '''
'+306 +311 +308 32 +307 +312 +319 +305 19200 20480 19712 20992 21248 13
' '' 48 46''
'
' ''' Lower value = LCase/NumLock On __________________ + = add 100000 '''
{{WhiteEnd}}
{{small|NOTE: The above commented table can be copied and pasted directly into the QB64 IDE}}
:* >= &H40000000: [[Unicode]].
* Font '''cyberbit.ttf''', included with QB64 ('''version 0.92 and up'''), is required to facilitate the '''IME'''(in Chinese settings) only. The 12.7 MB font is free for '''non-commercial''' use and is not loaded unless the user switches to the '''Input Mode Editor'''. Set to "UNICODE".
<center>'''[http://www.fileformat.info/tip/microsoft/enter_unicode.htm Setting up the Unicode Input Method Editor in Windows]'''</center>
<center>If you need help with IME support in '''Vista''' see the following article: [http://blogs.msdn.com/b/michkap/archive/2006/07/20/671835.aspx Setting up IME in Vista]</center>
* QB64 can use several Windows fonts when '''cyberbit''' is not present so it is not necessary to include with program packages.
* An '''important difference''' between [[INKEY$]] and _KEYHIT is how they work when '''CTRL, ALT''' or '''SHIFT''' are used. INKEY$ returns a different code if you hold down CTRL, ALT or SHIFT before pressing F1 (for example). _KEYHIT will return the same code regardless of which modifiers were used but you can check [[_KEYDOWN]] to see which modifying keys are being used.
* '''Keyboards with an Alt Gr key note:''' _KEYHIT may return both Alt (100307) and Ctrl (100306) codes when AltGr key is pressed or released.
{{PageExamples}}
''Example:'' This routine will return the codes for any keyboard presses.
{{CodeStart}}
'' ''
{{Cl|DEFLNG}} A-Z
{{Cl|SCREEN (statement)|SCREEN}} {{Cl|_NEWIMAGE}}(800, 600, 8)
{{Cl|CLS}} , 1
font = {{Cl|_LOADFONT}}("cyberbit.ttf", 24)
unifont = {{Cl|_LOADFONT}}("cyberbit.ttf", 24, "UNICODE")
{{Cl|_FONT}} font
{{Cl|DO}}
x = {{Cl|_KEYHIT}}
{{Cl|IF}} x {{Cl|THEN}}
{{Cl|IF}} x < 0 {{Cl|THEN}} 'negative value means key released
{{Cl|COLOR}} 2
{{Cl|PRINT}} "Released ";
x = -x
{{Cl|ELSE}}
{{Cl|COLOR}} 10
{{Cl|PRINT}} "Pressed "; 'positive value means key pressed
{{Cl|END IF}}
{{Cl|IF}} x < 256 {{Cl|THEN}} 'ASCII code values
{{Cl|PRINT}} "{{Cl|ASC}}II "; x;
{{Cl|IF}} x >= 32 {{Cl|AND (boolean)|AND}} x <= 255 {{Cl|THEN}} {{Cl|PRINT}} "[" + {{Cl|CHR$}}(x) + "]" {{Cl|ELSE}} {{Cl|PRINT}}
{{Cl|END IF}}
{{Cl|IF}} x >= 256 {{Cl|AND (boolean)|AND}} x < 65536 {{Cl|THEN}} '2 byte key codes
{{Cl|PRINT}} "2-BYTE-{{Cl|COM}}BO "; x {{Cl|AND (boolean)|AND}} 255; x \ 256;
x2 = x \ 256
{{Cl|IF}} x2 >= 32 {{Cl|AND (boolean)|AND}} x2 <= 255 {{Cl|THEN}} {{Cl|PRINT}} "[" + {{Cl|CHR$}}(x2) + "]" {{Cl|ELSE}} {{Cl|PRINT}}
{{Cl|END IF}}
{{Cl|IF}} x >= 100000 {{Cl|AND (boolean)|AND}} x < 200000 {{Cl|THEN}} 'QB84 Virtual Key codes
{{Cl|PRINT}} "SDL VK"; x - 100000
{{Cl|END IF}}
{{Cl|IF}} x >= 200000 {{Cl|AND (boolean)|AND}} x < {{Cl|&H}}40000000 {{Cl|THEN}}
{{Cl|PRINT}} "QB64 VK"; x - 200000
{{Cl|END IF}}
{{Cl|IF}} x >= {{Cl|&H}}40000000 {{Cl|THEN}} 'Unicode values (IME Input mode)
{{Cl|PRINT}} "UNICODE "; x - {{Cl|&H}}40000000; "0x" + {{Cl|HEX$}}(x - {{Cl|&H}}40000000) + " ...";
cx = {{Cl|POS}}(1): cy = {{Cl|CSRLIN}}
{{Cl|_FONT}} unifont
{{Cl|LOCATE}} cy, cx
{{Cl|COLOR}} 15
z$ = {{Cl|MKL$}}(x - {{Cl|&H}}40000000) + {{Cl|MKL$}}(0)
{{Cl|PRINT}} z$ + z$ + z$;
{{Cl|_FONT}} font
{{Cl|LOCATE}} cy, 1: {{Cl|PRINT}}
{{Cl|END IF}}
{{Cl|END IF}}
{{Cl|LOOP}} '' ''
{{CodeEnd}}
{{small|Code by Galleon}}
{{PageSeeAlso}}
* [[_KEYDOWN]], [[_CINP]]
* [[_MAPUNICODE]], [[_MAPUNICODE (function)]]
* [[INKEY$]], [[ASCII]] {{text|(code table)}},
* [[Unicode]], [[Code Pages]] {{text|(by region)}}
* [[INP]]([[&H|&H60]]), [[Scancodes]]
* [[ON KEY(n)]], [[KEY(n)]], [[KEY n]]
* [[Windows_Libraries#Hot_Keys_.28maximize.29|Windows hot keys]]
{{PageNavigation}}
<