diff options
author | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-06-20 00:23:32 +0000 |
---|---|---|
committer | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2017-06-20 00:23:32 +0000 |
commit | 0c8b182b35dbd8a7b4b694573c696c2c419c67f4 (patch) | |
tree | 772824fa4eefb03078e3e8a90605dbaefc39f7b6 | |
parent | c6078519c65b91cf743231b7f43f9af4401357e5 (diff) | |
download | fpc-0c8b182b35dbd8a7b4b694573c696c2c419c67f4.tar.gz |
* merged all changes from ptc trunk from sourceforge; adds support for different
keyboard input modes in ptccrt (TP7 compatible, GO32 CRT compatible and WIN32
CRT compatible mode)
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@36555 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/graph/src/ptcgraph/ptccrt.pp | 200 | ||||
-rw-r--r-- | packages/ptc/docs/CHANGES.txt | 24 | ||||
-rw-r--r-- | packages/ptc/src/core/keyeventd.inc | 2 | ||||
-rw-r--r-- | packages/ptc/src/win32/base/win32kbd.inc | 21 | ||||
-rw-r--r-- | packages/ptc/src/x11/x11displayi.inc | 6 | ||||
-rw-r--r-- | packages/ptc/tests/crtkeys/crtkeys.pas | 19 | ||||
-rw-r--r-- | packages/ptc/tests/crtkeys/crtkeys_fpwincrt.txt | 124 | ||||
-rw-r--r-- | packages/ptc/tests/crtkeys/crtkeys_go32v2.txt | 117 | ||||
-rw-r--r-- | packages/ptc/tests/crtkeys/crtkeys_tp7.txt | 116 | ||||
-rw-r--r-- | packages/ptc/tests/crtkeys/ptccrtkeys.pas | 33 |
10 files changed, 654 insertions, 8 deletions
diff --git a/packages/graph/src/ptcgraph/ptccrt.pp b/packages/graph/src/ptcgraph/ptccrt.pp index cae870aea5..65c478f891 100644 --- a/packages/graph/src/ptcgraph/ptccrt.pp +++ b/packages/graph/src/ptcgraph/ptccrt.pp @@ -1,6 +1,6 @@ { This file is part of the Free Pascal run time library. - Copyright (c) 2010, 2011, 2013 by Nikolay Nikolov (nickysn@users.sourceforge.net) + Copyright (c) 2010, 2011, 2013, 2017 by Nikolay Nikolov (nickysn@users.sourceforge.net) This file implements keyboard input support for ptcgraph @@ -35,10 +35,12 @@ type {$ELSE HasCRT} tcrtcoord = 1..255; {$ENDIF HasCRT} + tkeymode = (kmTP7, kmGO32, kmFPWINCRT); var DirectVideo: Boolean {$IFDEF HasCRT}absolute crt.DirectVideo{$ENDIF HasCRT}; TextAttr: Byte {$IFDEF HasCRT}absolute crt.TextAttr{$ENDIF HasCRT}; + KeyMode: TKeyMode = kmTP7; function KeyPressed: Boolean; function ReadKey: Char; @@ -132,6 +134,9 @@ begin if KeyEv.Alt then begin case KeyEv.Code of + PTCKEY_ESCAPE: + if KeyMode = kmGO32 then + KeyBufAdd(#0#1); PTCKEY_F1: KeyBufAdd(#0#104); PTCKEY_F2: KeyBufAdd(#0#105); PTCKEY_F3: KeyBufAdd(#0#106); @@ -142,6 +147,12 @@ begin PTCKEY_F8: KeyBufAdd(#0#111); PTCKEY_F9: KeyBufAdd(#0#112); PTCKEY_F10: KeyBufAdd(#0#113); + PTCKEY_F11: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#139); + PTCKEY_F12: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#140); PTCKEY_ONE: KeyBufAdd(#0#120); PTCKEY_TWO: KeyBufAdd(#0#121); PTCKEY_THREE: KeyBufAdd(#0#122); @@ -180,6 +191,89 @@ begin PTCKEY_B: KeyBufAdd(#0#48); PTCKEY_N: KeyBufAdd(#0#49); PTCKEY_M: KeyBufAdd(#0#50); + PTCKEY_BACKQUOTE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#41); + PTCKEY_BACKSPACE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#14); + PTCKEY_TAB: + if KeyMode = kmGO32 then + KeyBufAdd(#0#165); + PTCKEY_OPENBRACKET: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#26); + PTCKEY_CLOSEBRACKET: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#27); + PTCKEY_BACKSLASH: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#43); + PTCKEY_SEMICOLON: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#39); + PTCKEY_QUOTE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#40); + PTCKEY_ENTER: + if KeyMode = kmGO32 then + if pmkNumPadKey in KeyEv.ModifierKeys then + KeyBufAdd(#0#166) + else + KeyBufAdd(#0#28); + PTCKEY_COMMA: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#51); + PTCKEY_PERIOD: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#52); + PTCKEY_SLASH: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#164) + else if KeyMode = kmGO32 then + KeyBufAdd(#0#53); + PTCKEY_INSERT: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#162); + PTCKEY_DELETE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#163); + PTCKEY_HOME: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#151); + PTCKEY_END: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#159); + PTCKEY_PAGEUP: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#153); + PTCKEY_PAGEDOWN: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#161); + PTCKEY_UP: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#152); + PTCKEY_LEFT: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#155); + PTCKEY_RIGHT: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#157); + PTCKEY_DOWN: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#160); + PTCKEY_DIVIDE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#164); + PTCKEY_MULTIPLY: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#55); + PTCKEY_SUBTRACT: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#74); + PTCKEY_ADD: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#78); end; end else @@ -197,7 +291,50 @@ begin PTCKEY_F8: KeyBufAdd(#0#101); PTCKEY_F9: KeyBufAdd(#0#102); PTCKEY_F10: KeyBufAdd(#0#103); + PTCKEY_F11: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#137); + PTCKEY_F12: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#138); + PTCKEY_ONE: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#2); PTCKEY_TWO: KeyBufAdd(#0#3); + PTCKEY_THREE: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#4); + PTCKEY_FOUR: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#5); + PTCKEY_FIVE: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#6); + PTCKEY_SIX: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#7) + else + KeyBufAdd(#30); + PTCKEY_SEVEN: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#8); + PTCKEY_EIGHT: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#9); + PTCKEY_NINE: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#10); + PTCKEY_ZERO: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#11); + PTCKEY_MINUS: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#12) + else + KeyBufAdd(#31); + PTCKEY_EQUALS: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#13); PTCKEY_BACKSPACE: KeyBufAdd(#127); PTCKEY_A: KeyBufAdd(#1); PTCKEY_B: KeyBufAdd(#2); @@ -228,8 +365,6 @@ begin PTCKEY_OPENBRACKET: KeyBufAdd(#27); PTCKEY_BACKSLASH: KeyBufAdd(#28); PTCKEY_CLOSEBRACKET: KeyBufAdd(#29); - PTCKEY_SIX: KeyBufAdd(#30); - PTCKEY_MINUS: KeyBufAdd(#31); PTCKEY_ENTER: KeyBufAdd(#10); PTCKEY_LEFT: KeyBufAdd(#0#115); PTCKEY_RIGHT: KeyBufAdd(#0#116); @@ -237,6 +372,53 @@ begin PTCKEY_END: KeyBufAdd(#0#117); PTCKEY_PAGEUP: KeyBufAdd(#0#132); PTCKEY_PAGEDOWN: KeyBufAdd(#0#118); + PTCKEY_BACKQUOTE: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#41); + PTCKEY_TAB: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#148); + PTCKEY_SEMICOLON: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#39); + PTCKEY_QUOTE: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#40); + PTCKEY_COMMA: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#51); + PTCKEY_PERIOD: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#52); + PTCKEY_SLASH: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#149); + PTCKEY_INSERT: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#146); + PTCKEY_DELETE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#147); + PTCKEY_UP: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#141); + PTCKEY_DOWN: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#145); + PTCKEY_DIVIDE: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#149); + PTCKEY_MULTIPLY: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#150); + PTCKEY_SUBTRACT: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#142); + PTCKEY_ADD: + if KeyMode = kmFPWINCRT then + KeyBufAdd(#0#78) + else if KeyMode = kmGO32 then + KeyBufAdd(#0#144); end; end else @@ -254,6 +436,12 @@ begin PTCKEY_F8: KeyBufAdd(#0#91); PTCKEY_F9: KeyBufAdd(#0#92); PTCKEY_F10: KeyBufAdd(#0#93); + PTCKEY_F11: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#135); + PTCKEY_F12: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#136); PTCKEY_BACKSPACE: KeyBufAdd(#8); PTCKEY_TAB: KeyBufAdd(#0#15); PTCKEY_ENTER: KeyBufAdd(#13); @@ -286,6 +474,12 @@ begin PTCKEY_F8: KeyBufAdd(#0#66); PTCKEY_F9: KeyBufAdd(#0#67); PTCKEY_F10: KeyBufAdd(#0#68); + PTCKEY_F11: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#133); + PTCKEY_F12: + if KeyMode in [kmGO32, kmFPWINCRT] then + KeyBufAdd(#0#134); PTCKEY_BACKSPACE: KeyBufAdd(#8); PTCKEY_TAB: KeyBufAdd(#9); PTCKEY_ENTER: KeyBufAdd(#13); diff --git a/packages/ptc/docs/CHANGES.txt b/packages/ptc/docs/CHANGES.txt index 4672a10be7..c414a657ec 100644 --- a/packages/ptc/docs/CHANGES.txt +++ b/packages/ptc/docs/CHANGES.txt @@ -12,16 +12,18 @@ then focusing back to it with a mouse click. - new key modifiers added for distinguishing between left and right shift, control and alt, the status of num lock, caps lock and scroll lock and for - distinguishing numpad keys and dead keys. All of them are implemented as - elements in the ModifierKeys set, which was added to IPTCKeyEvent. They can - be checked, for example, with: + distinguishing right keys (e.g. right shift, right alt, right ctrl), + numpad keys and dead keys. All of them are implemented as elements in the + ModifierKeys set, which was added to IPTCKeyEvent. They can be checked, + for example, with: if pmkNumLockActive in key_event.ModifierKeys then ... The following modifiers are available: pmkAlt, pmkShift, pmkControl, pmkLeftAlt, pmkRightAlt, pmkLeftShift, pmkRightShift, pmkLeftControl, pmkRightControl, pmkNumLockActive, pmkNumLockPressed, pmkCapsLockActive, pmkCapsLockPressed, - pmkScrollLockActive, pmkScrollLockPressed, pmkNumPadKey, pmkDeadKey + pmkScrollLockActive, pmkScrollLockPressed, pmkRightKey, pmkNumPadKey, + pmkDeadKey - there is now a MoveMouseTo method, added to the console. It can be used to warp the mouse cursor to a different location. - added support for a relative mouse mode. It supports continuous mouse @@ -43,6 +45,20 @@ PTCMouseButton9 - "forward" button ("X button 2") The remaining mouse buttons are hardware specific and will vary, depending on the actual mouse (provided it has that many buttons at all). + - ptccrt now supports several keyboard input modes, which can be set by + changing the new global variable KeyMode. The following values are supported: + kmTP7 - behaves like Turbo Pascal 7's CRT unit under DOS. This is the + default value. Previous versions of ptccrt always behaved this + way. Since TP7's CRT unit doesn't support the Enhanced + Keyboard, several keys (e.g. F11 and F12) and key combinations + are intentionally not recognized for compatibility reasons. + kmGO32 - behaves like Free Pascal's CRT unit under DOS (GO32V2). It has + Enhanced Keyboard support. + kmFPWINCRT - behaves like Free Pascal's CRT unit under Windows. Similar to + kmGO32, but emulates several incompatibilities that the + Windows CRT unit has with the GO32V2 CRT unit. Not all of them + are emulated though, since some of them can be considered + bugs. - ptcgraph now has a global string variable WindowTitle, which allows you to set the window title, before calling InitGraph - ptcgraph was extended to also support resolutions, different than the ones, diff --git a/packages/ptc/src/core/keyeventd.inc b/packages/ptc/src/core/keyeventd.inc index 1e268ee0a5..add306b39f 100644 --- a/packages/ptc/src/core/keyeventd.inc +++ b/packages/ptc/src/core/keyeventd.inc @@ -36,7 +36,7 @@ type pmkNumLockActive, pmkNumLockPressed, pmkCapsLockActive, pmkCapsLockPressed, pmkScrollLockActive, pmkScrollLockPressed, - pmkNumPadKey,pmkDeadKey); + pmkRightKey, pmkNumPadKey, pmkDeadKey); TPTCModifierKeys = set of TPTCModifierKey; IPTCKeyEvent = interface(IPTCEvent) ['{9BD1CD41-1DF6-4392-99DC-885EADB6D85A}'] diff --git a/packages/ptc/src/win32/base/win32kbd.inc b/packages/ptc/src/win32/base/win32kbd.inc index 1f00599a42..6b5c648f9a 100644 --- a/packages/ptc/src/win32/base/win32kbd.inc +++ b/packages/ptc/src/win32/base/win32kbd.inc @@ -82,8 +82,10 @@ var TranslatedCharacters, TranslatedWideCharacters: Integer; WideStr: WideString; KeyCode: Integer; + ScanCodeB: Byte; ExtendedKey, DeadKey: Boolean; ModifierKeys: TPTCModifierKeys; + tmpUINT: UINT; begin Result := 0; { check enabled flag } @@ -94,6 +96,7 @@ begin if (message = WM_KEYDOWN) or (message = WM_KEYUP) or (message = WM_SYSKEYDOWN) or (message = WM_SYSKEYUP) then begin press := (message = WM_KEYDOWN) or (message = WM_SYSKEYDOWN); + ScanCodeB := Byte(lParam shr 16); ExtendedKey := (lParam and (1 shl 24)) <> 0; ModifierKeys := []; @@ -187,6 +190,24 @@ begin if ExtendedKey then Include(ModifierKeys, pmkNumPadKey); end; + if wParam = VK_SHIFT then + begin + tmpUINT := MapVirtualKey(ScanCodeB, MAPVK_VSC_TO_VK_EX); + if tmpUINT <> 0 then + begin + { Windows NT 4.0/2000+ } + if tmpUINT = VK_RSHIFT then + Include(ModifierKeys, pmkRightKey); + end + else + begin + { Windows 98 } + if ScanCodeB = 54 then + Include(ModifierKeys, pmkRightKey); + end; + end; + if ExtendedKey and (wParam in [VK_MENU,VK_CONTROL]) then + Include(ModifierKeys, pmkRightKey); if not ExtendedKey and (wParam in [VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN,VK_INSERT,VK_DELETE, VK_HOME,VK_END,VK_PRIOR,VK_NEXT]) then diff --git a/packages/ptc/src/x11/x11displayi.inc b/packages/ptc/src/x11/x11displayi.inc index 48543f5965..010a097633 100644 --- a/packages/ptc/src/x11/x11displayi.inc +++ b/packages/ptc/src/x11/x11displayi.inc @@ -410,6 +410,7 @@ begin FNormalKeys[$FF and XK_semicolon] := Integer(PTCKEY_SEMICOLON); FNormalKeys[$FF and XK_equal] := Integer(PTCKEY_EQUALS); FNormalKeys[$FF and XK_grave] := Integer(PTCKEY_BACKQUOTE); + FNormalKeys[$FF and XK_apostrophe] := Integer(PTCKEY_QUOTE); FNormalKeys[$FF and XK_bracketleft] := Integer(PTCKEY_OPENBRACKET); FNormalKeys[$FF and XK_backslash] := Integer(PTCKEY_BACKSLASH); @@ -492,6 +493,11 @@ begin press := False; uni := -1; end; + if (sym_modded = XK_Shift_R) or + (sym_modded = XK_Control_R) or + (sym_modded = XK_Meta_R) or + (sym_modded = XK_Alt_R) then + Include(modkeys, pmkRightKey); if (sym_modded = XK_KP_Insert) or (sym_modded = XK_KP_Delete) or (sym_modded = XK_KP_Home) or diff --git a/packages/ptc/tests/crtkeys/crtkeys.pas b/packages/ptc/tests/crtkeys/crtkeys.pas new file mode 100644 index 0000000000..d933bbb763 --- /dev/null +++ b/packages/ptc/tests/crtkeys/crtkeys.pas @@ -0,0 +1,19 @@ +program crtkeys; +uses + crt; +var + Ch, Ex: Char; + Done: Boolean; +begin + Done := False; + repeat + Ch := ReadKey; + if Ch = #0 then + Ex := ReadKey + else + Ex := #0; + Writeln(Ord(Ch), ' ', Ord(Ex)); + if Ch = 'q' then + Done := True; + until Done; +end. diff --git a/packages/ptc/tests/crtkeys/crtkeys_fpwincrt.txt b/packages/ptc/tests/crtkeys/crtkeys_fpwincrt.txt new file mode 100644 index 0000000000..124ededad7 --- /dev/null +++ b/packages/ptc/tests/crtkeys/crtkeys_fpwincrt.txt @@ -0,0 +1,124 @@ +Test results from the Win32 crt unit (from FPC 3.0.2), run under 32-bit Windows 7, US keyboard: + +Ctrl in the table means: Ctrl or Ctrl+Shift +Alt in the table means: Alt or Alt+Shift or Alt+Ctrl or Alt+Ctrl+Shift + +key | - |Shift|Ctrl |Alt |NumLk|NumLk|NumLk|NumLk| + | | | | | |Shift|Ctrl |Alt | +-------------------+-----+-----+-----+-----+-----+-----+-----+-----+ +Esc |27 0 |27 0 |*WIN*|*WIN*|27 0 |27 0 |*WIN*|*WIN*| +F1 |0 59 |0 84 |0 94 |0 104|0 59 |0 84 |0 94 |0 104| +F2 |0 60 |0 85 |0 95 |0 105|0 60 |0 85 |0 95 |0 105| +F3 |0 61 |0 86 |0 96 |0 106|0 61 |0 86 |0 96 |0 106| +F4 |0 62 |0 87 |0 97 |0 107|0 62 |0 87 |0 97 |0 107| +F5 |0 63 |0 88 |0 98 |0 108|0 63 |0 88 |0 98 |0 108| +F6 |0 64 |0 89 |0 99 |0 109|0 64 |0 89 |0 99 |0 109| +F7 |0 65 |0 90 |0 100|0 110|0 65 |0 90 |0 100|0 110| +F8 |0 66 |0 91 |0 101|0 111|0 66 |0 91 |0 101|0 111| +F9 |0 67 |0 92 |0 102|0 112|0 67 |0 92 |0 102|0 112| +F10 |0 68 |0 93 |0 103|0 113|0 68 |0 93 |0 103|0 113| +F11 |0 133|0 135|0 137|0 139|0 133|0 135|0 137|0 139| +F12 |0 134|0 136|0 138|0 140|0 134|0 136|0 138|0 140| +Print Screen/SysRq | | | | | | | | | +Scroll Lock | | |*BRK*| | | |*BRK*| | +Pause/Break | | |*BRK*| | | |*BRK*| | +` |96 0 |126 0|0 41 |0 41 |96 0 |126 0|0 41 |0 41 | +1 |49 0 |33 0 |0 2 |0 120|49 0 |33 0 |0 2 |0 120| +2 |50 0 |64 0 |0 3 |0 121|50 0 |64 0 |0 3 |0 121| +3 |51 0 |35 0 |0 4 |0 122|51 0 |35 0 |0 4 |0 122| +4 |52 0 |36 0 |0 5 |0 123|52 0 |36 0 |0 5 |0 123| +5 |53 0 |37 0 |0 6 |0 124|53 0 |37 0 |0 6 |0 124| +6 |54 0 |94 0 |0 7 |0 125|54 0 |94 0 |0 7 |0 125| +7 |55 0 |38 0 |0 8 |0 126|55 0 |38 0 |0 8 |0 126| +8 |56 0 |42 0 |0 9 |0 127|56 0 |42 0 |0 9 |0 127| +9 |57 0 |40 0 |0 10 |0 128|57 0 |40 0 |0 10 |0 128| +0 |48 0 |41 0 |0 11 |0 129|48 0 |41 0 |0 11 |0 129| +- |45 0 |95 0 |0 12 |0 130|45 0 |95 0 |0 12 |0 130| += |61 0 |43 0 |0 13 |0 131|61 0 |43 0 |0 13 |0 131| +<- Backspace |8 0 |8 0 |127 0|0 14 |8 0 |8 0 |127 0|0 14 | +Tab |9 0 |0 15 |0 148|*WIN*|9 0 |0 15 |0 148|*WIN*| +q |113 0|81 0 |17 0 |0 16 |113 0|81 0 |17 0 |0 16 | +w |119 0|87 0 |23 0 |0 17 |119 0|87 0 |23 0 |0 17 | +e |101 0|69 0 |5 0 |0 18 |101 0|69 0 |5 0 |0 18 | +r |114 0|82 0 |18 0 |0 19 |114 0|82 0 |18 0 |0 19 | +t |116 0|84 0 |20 0 |0 20 |116 0|84 0 |20 0 |0 20 | +y |121 0|89 0 |25 0 |0 21 |121 0|89 0 |25 0 |0 21 | +u |117 0|85 0 |21 0 |0 22 |117 0|85 0 |21 0 |0 22 | +i |105 0|73 0 |9 0 |0 23 |105 0|73 0 |9 0 |0 23 | +o |111 0|79 0 |15 0 |0 24 |111 0|79 0 |15 0 |0 24 | +p |112 0|80 0 |16 0 |0 25 |112 0|80 0 |16 0 |0 25 | +[ |91 0 |123 0|27 0 |0 26 |91 0 |123 0|27 0 |0 26 | +] |93 0 |125 0|29 0 |0 27 |93 0 |125 0|29 0 |0 27 | +\ |92 0 |124 0|28 0 |0 43 |92 0 |124 0|28 0 |0 43 | +Caps Lock | | | | | | | | | +a |97 0 |65 0 |1 0 |0 30 |97 0 |65 0 |1 0 |0 30 | +s |115 0|83 0 |PAUSE|0 31 |115 0|83 0 |PAUSE|0 31 | +d |100 0|68 0 |4 0 |0 32 |100 0|68 0 |4 0 |0 32 | +f |102 0|70 0 |6 0 |0 33 |102 0|70 0 |6 0 |0 33 | +g |103 0|71 0 |7 0 |0 34 |103 0|71 0 |7 0 |0 34 | +h |104 0|72 0 |8 0 |0 35 |104 0|72 0 |8 0 |0 35 | +j |106 0|74 0 |10 0 |0 36 |106 0|74 0 |10 0 |0 36 | +k |107 0|75 0 |11 0 |0 37 |107 0|75 0 |11 0 |0 37 | +l |108 0|76 0 |12 0 |0 38 |108 0|76 0 |12 0 |0 38 | +; |59 0 |58 0 |0 39 |0 39 |59 0 |58 0 |0 39 |0 39 | +' |39 0 |34 0 |0 40 |0 40 |39 0 |34 0 |0 40 |0 40 | +Enter |13 0 |13 0 |10 0 |*WIN*|13 0 |13 0 |10 0 |*WIN*| +Left Shift | | | | | | | | | +z |122 0|90 0 |26 0 |0 44 |122 0|90 0 |26 0 |0 44 | +x |120 0|88 0 |24 0 |0 45 |120 0|88 0 |24 0 |0 45 | +c |99 0 |67 0 |*BRK*|0 46 |99 0 |67 0 |*BRK*|0 46 | +v |118 0|86 0 |22 0 |0 47 |118 0|86 0 |22 0 |0 47 | +b |98 0 |66 0 |2 0 |0 48 |98 0 |66 0 |2 0 |0 48 | +n |110 0|78 0 |14 0 |0 49 |110 0|78 0 |14 0 |0 49 | +m |109 0|77 0 |13 0 |0 50 |109 0|77 0 |13 0 |0 50 | +, |44 0 |60 0 |0 51 |0 51 |44 0 |60 0 |0 51 |0 51 | +. |46 0 |62 0 |0 52 |0 52 |46 0 |62 0 |0 52 |0 52 | +/ |47 0 |63 0 |0 149|0 164|47 0 |63 0 |0 149|0 164| +Right Shift | | | | | | | | | +Left Ctrl | | | | | | | | | +Left Alt | | | | | | | | | +Space |32 0 |32 0 |32 0 |*WIN*|32 0 |32 0 |32 0 |*WIN*| +Right Alt | | | | | | | | | +Right Ctrl | | | | | | | | | +Insert |0 82 |0 82 |0 146|NUMSC|0 82 |0 82 |0 146|NUMSC| +Delete |0 83 |0 83 |0 147|0 163|0 83 |0 83 |0 147|0 163| +Home |0 71 |0 71 |0 119|NUMSC|0 71 |0 71 |0 119|NUMSC| +End |0 79 |0 79 |0 117|NUMSC|0 79 |0 79 |0 117|NUMSC| +Page Up |0 73 |0 73 |0 132|NUMSC|0 73 |0 73 |0 132|NUMSC| +Page Down |0 81 |0 81 |0 118|NUMSC|0 81 |0 81 |0 118|NUMSC| +Up Arrow |0 72 |0 72 |0 141|NUMSC|0 72 |0 72 |0 141|NUMSC| +Left Arrow |0 75 |0 75 |0 115|NUMSC|0 75 |0 75 |0 115|NUMSC| +Right Arrow |0 77 |0 77 |0 116|NUMSC|0 77 |0 77 |0 116|NUMSC| +Down Arrow |0 80 |0 80 |0 145|NUMSC|0 80 |0 80 |0 145|NUMSC| +Num Lock | | | | | | | | | +Num / |0 53 |0 53 |0 149|0 164|0 53 |0 53 |0 149|0 164| +Num * |42 0 |42 0 |0 150|0 55 |42 0 |42 0 |0 150|0 55 | +Num - |45 0 |45 0 |0 142|0 74 |45 0 |45 0 |0 142|0 74 | +Num + |43 0 |43 0 |0 78 |0 78 |43 0 |43 0 |0 78 |0 78 | +Num Enter |13 0 |13 0 |10 0 |*WIN*|13 0 |13 0 |10 0 |*WIN*| +Num 0/Ins |0 82 |0 82 |0 146|NUMSC|48 0 |0 82 |0 146|NUMSC| +Num ./Del |0 83 |0 83 |0 147|0 163|46 0 |0 83 |0 147|0 163| +Num 1/End |0 79 |0 79 |0 117|NUMSC|49 0 |0 79 |0 117|NUMSC| +Num 2/Down Arrow |0 80 |0 80 |0 145|NUMSC|50 0 |0 80 |0 145|NUMSC| +Num 3/PgDn |0 81 |0 81 |0 118|NUMSC|51 0 |0 81 |0 118|NUMSC| +Num 4/Left Arrow |0 75 |0 75 |0 115|NUMSC|52 0 |0 75 |0 115|NUMSC| +Num 5 |0 76 |0 76 |0 143|NUMSC|53 0 |0 76 |0 143|NUMSC| +Num 6/Right Arrow |0 77 |0 77 |0 116|NUMSC|54 0 |0 77 |0 116|NUMSC| +Num 7/Home |0 71 |0 71 |0 119|NUMSC|55 0 |0 71 |0 119|NUMSC| +Num 8/Up Arrow |0 72 |0 72 |0 141|NUMSC|56 0 |0 72 |0 141|NUMSC| +Num 9/PgUp |0 73 |0 73 |0 132|NUMSC|57 0 |0 73 |0 132|NUMSC| + + +Special: + Ctrl+Shift+6: 30 0 + Ctrl+Shift+-: 31 0 + Ctrl+Shift+Backspace: 0 14 + Ctrl+Shift+Space: 0 57 + Alt+Ctrl+Space: 0 57 + Alt+Ctrl+Shift+Space: 0 57 + Alt+Ctrl+Enter: 0 166 + Alt+Ctrl+Shift+Enter: 0 166 + +*WIN* = Windows special key +*BRK* = Ctrl+Break +NUMSC = Numeric ASCII entry diff --git a/packages/ptc/tests/crtkeys/crtkeys_go32v2.txt b/packages/ptc/tests/crtkeys/crtkeys_go32v2.txt new file mode 100644 index 0000000000..7b3f779d38 --- /dev/null +++ b/packages/ptc/tests/crtkeys/crtkeys_go32v2.txt @@ -0,0 +1,117 @@ +Test results from the GO32V2 crt unit, run under DOS, on a PS/2 Model 76, 101-key US keyboard: + +Ctrl in the table means: Ctrl or Ctrl+Shift +Alt in the table means: Alt or Alt+Shift or Alt+Ctrl or Alt+Ctrl+Shift + +key | - |Shift|Ctrl |Alt |NumLk|NumLk|NumLk|NumLk| + | | | | | |Shift|Ctrl |Alt | +-------------------+-----+-----+-----+-----+-----+-----+-----+-----+ +Esc |27 0 |27 0 |27 0 |0 1 |27 0 |27 0 |27 0 |0 1 | +F1 |0 59 |0 84 |0 94 |0 104|0 59 |0 84 |0 94 |0 104| +F2 |0 60 |0 85 |0 95 |0 105|0 60 |0 85 |0 95 |0 105| +F3 |0 61 |0 86 |0 96 |0 106|0 61 |0 86 |0 96 |0 106| +F4 |0 62 |0 87 |0 97 |0 107|0 62 |0 87 |0 97 |0 107| +F5 |0 63 |0 88 |0 98 |0 108|0 63 |0 88 |0 98 |0 108| +F6 |0 64 |0 89 |0 99 |0 109|0 64 |0 89 |0 99 |0 109| +F7 |0 65 |0 90 |0 100|0 110|0 65 |0 90 |0 100|0 110| +F8 |0 66 |0 91 |0 101|0 111|0 66 |0 91 |0 101|0 111| +F9 |0 67 |0 92 |0 102|0 112|0 67 |0 92 |0 102|0 112| +F10 |0 68 |0 93 |0 103|0 113|0 68 |0 93 |0 103|0 113| +F11 |0 133|0 135|0 137|0 139|0 133|0 135|0 137|0 139| +F12 |0 134|0 136|0 138|0 140|0 134|0 136|0 138|0 140| +Print Screen/SysRq | | |0 114| | | |0 114| | +Scroll Lock | | | | | | | | | +Pause/Break | | |*BRK*| | | |*BRK*| | +` |96 0 |126 0| |0 41 |96 0 |126 0| |0 41 | +1 |49 0 |33 0 | |0 120|49 0 |33 0 | |0 120| +2 |50 0 |64 0 |0 3 |0 121|50 0 |64 0 |0 3 |0 121| +3 |51 0 |35 0 | |0 122|51 0 |35 0 | |0 122| +4 |52 0 |36 0 | |0 123|52 0 |36 0 | |0 123| +5 |53 0 |37 0 | |0 124|53 0 |37 0 | |0 124| +6 |54 0 |94 0 |30 0 |0 125|54 0 |94 0 |30 0 |0 125| +7 |55 0 |38 0 | |0 126|55 0 |38 0 | |0 126| +8 |56 0 |42 0 | |0 127|56 0 |42 0 | |0 127| +9 |57 0 |40 0 | |0 128|57 0 |40 0 | |0 128| +0 |48 0 |41 0 | |0 129|48 0 |41 0 | |0 129| +- |45 0 |95 0 |31 0 |0 130|45 0 |95 0 |31 0 |0 130| += |61 0 |43 0 | |0 131|61 0 |43 0 | |0 131| +<- Backspace |8 0 |8 0 |127 0|0 14 |8 0 |8 0 |127 0|0 14 | +Tab |9 0 |0 15 |0 148|0 165|9 0 |0 15 |0 148|0 165| +q |113 0|81 0 |17 0 |0 16 |113 0|81 0 |17 0 |0 16 | +w |119 0|87 0 |23 0 |0 17 |119 0|87 0 |23 0 |0 17 | +e |101 0|69 0 |5 0 |0 18 |101 0|69 0 |5 0 |0 18 | +r |114 0|82 0 |18 0 |0 19 |114 0|82 0 |18 0 |0 19 | +t |116 0|84 0 |20 0 |0 20 |116 0|84 0 |20 0 |0 20 | +y |121 0|89 0 |25 0 |0 21 |121 0|89 0 |25 0 |0 21 | +u |117 0|85 0 |21 0 |0 22 |117 0|85 0 |21 0 |0 22 | +i |105 0|73 0 |9 0 |0 23 |105 0|73 0 |9 0 |0 23 | +o |111 0|79 0 |15 0 |0 24 |111 0|79 0 |15 0 |0 24 | +p |112 0|80 0 |16 0 |0 25 |112 0|80 0 |16 0 |0 25 | +[ |91 0 |123 0|27 0 |0 26 |91 0 |123 0|27 0 |0 26 | +] |93 0 |125 0|29 0 |0 27 |93 0 |125 0|29 0 |0 27 | +\ |92 0 |124 0|28 0 |0 43 |92 0 |124 0|28 0 |0 43 | +Caps Lock | | | | | | | | | +a |97 0 |65 0 |1 0 |0 30 |97 0 |65 0 |1 0 |0 30 | +s |115 0|83 0 |19 0 |0 31 |115 0|83 0 |19 0 |0 31 | +d |100 0|68 0 |4 0 |0 32 |100 0|68 0 |4 0 |0 32 | +f |102 0|70 0 |6 0 |0 33 |102 0|70 0 |6 0 |0 33 | +g |103 0|71 0 |7 0 |0 34 |103 0|71 0 |7 0 |0 34 | +h |104 0|72 0 |8 0 |0 35 |104 0|72 0 |8 0 |0 35 | +j |106 0|74 0 |10 0 |0 36 |106 0|74 0 |10 0 |0 36 | +k |107 0|75 0 |11 0 |0 37 |107 0|75 0 |11 0 |0 37 | +l |108 0|76 0 |12 0 |0 38 |108 0|76 0 |12 0 |0 38 | +; |59 0 |58 0 | |0 39 |59 0 |58 0 | |0 39 | +' |39 0 |34 0 | |0 40 |39 0 |34 0 | |0 40 | +Enter |13 0 |13 0 |10 0 |0 28 |13 0 |13 0 |10 0 |0 28 | +Left Shift | | | | | | | | | +z |122 0|90 0 |26 0 |0 44 |122 0|90 0 |26 0 |0 44 | +x |120 0|88 0 |24 0 |0 45 |120 0|88 0 |24 0 |0 45 | +c |99 0 |67 0 |3 0 |0 46 |99 0 |67 0 |3 0 |0 46 | +v |118 0|86 0 |22 0 |0 47 |118 0|86 0 |22 0 |0 47 | +b |98 0 |66 0 |2 0 |0 48 |98 0 |66 0 |2 0 |0 48 | +n |110 0|78 0 |14 0 |0 49 |110 0|78 0 |14 0 |0 49 | +m |109 0|77 0 |13 0 |0 50 |109 0|77 0 |13 0 |0 50 | +, |44 0 |60 0 | |0 51 |44 0 |60 0 | |0 51 | +. |46 0 |62 0 | |0 52 |46 0 |62 0 | |0 52 | +/ |47 0 |63 0 | |0 53 |47 0 |63 0 | |0 53 | +Right Shift | | | | | | | | | +Left Ctrl | | | | | | | | | +Left Alt | | | | | | | | | +Space |32 0 |32 0 |32 0 |32 0 |32 0 |32 0 |32 0 |32 0 | +Right Alt | | | | | | | | | +Right Ctrl | | | | | | | | | +Insert |0 82 |0 82 |0 146|0 162|0 82 |0 82 |0 146|0 162| +Delete |0 83 |0 83 |0 147|0 163|0 83 |0 83 |0 147|0 163| +Home |0 71 |0 71 |0 119|0 151|0 71 |0 71 |0 119|0 151| +End |0 79 |0 79 |0 117|0 159|0 79 |0 79 |0 117|0 159| +Page Up |0 73 |0 73 |0 132|0 153|0 73 |0 73 |0 132|0 153| +Page Down |0 81 |0 81 |0 118|0 161|0 81 |0 81 |0 118|0 161| +Up Arrow |0 72 |0 72 |0 141|0 152|0 72 |0 72 |0 141|0 152| +Left Arrow |0 75 |0 75 |0 115|0 155|0 75 |0 75 |0 115|0 155| +Right Arrow |0 77 |0 77 |0 116|0 157|0 77 |0 77 |0 116|0 157| +Down Arrow |0 80 |0 80 |0 145|0 160|0 80 |0 80 |0 145|0 160| +Num Lock | | | | | | | | | +Num / |47 0 |47 0 |0 149|0 164|47 0 |47 0 |0 149|0 164| +Num * |42 0 |42 0 |0 150|0 55 |42 0 |42 0 |0 150|0 55 | +Num - |45 0 |45 0 |0 142|0 74 |45 0 |45 0 |0 142|0 74 | +Num + |43 0 |43 0 |0 144|0 78 |43 0 |43 0 |0 144|0 78 | +Num Enter |13 0 |13 0 |10 0 |0 166|13 0 |13 0 |10 0 |0 166| +Num 0/Ins |0 82 |48 0 |0 146|NUMSC|48 0 |0 82 |0 146|NUMSC| +Num ./Del |0 83 |46 0 |0 147| |46 0 |0 83 |0 147| | +Num 1/End |0 79 |49 0 |0 117|NUMSC|49 0 |0 79 |0 117|NUMSC| +Num 2/Down Arrow |0 80 |50 0 |0 145|NUMSC|50 0 |0 80 |0 145|NUMSC| +Num 3/PgDn |0 81 |51 0 |0 118|NUMSC|51 0 |0 81 |0 118|NUMSC| +Num 4/Left Arrow |0 75 |52 0 |0 115|NUMSC|52 0 |0 75 |0 115|NUMSC| +Num 5 |0 76 |53 0 |0 143|NUMSC|53 0 |0 76 |0 143|NUMSC| +Num 6/Right Arrow |0 77 |54 0 |0 116|NUMSC|54 0 |0 77 |0 116|NUMSC| +Num 7/Home |0 71 |55 0 |0 119|NUMSC|55 0 |0 71 |0 119|NUMSC| +Num 8/Up Arrow |0 72 |56 0 |0 141|NUMSC|56 0 |0 72 |0 141|NUMSC| +Num 9/PgUp |0 73 |57 0 |0 132|NUMSC|57 0 |0 73 |0 132|NUMSC| + + +Special: + Ctrl+Alt+Caps or Ctrl+Alt+Shift+Caps: 0 64 + Ctrl+Alt+Del or Ctrl+Alt+Shift+Del: reboot + +*BRK* = Ctrl+Break +NUMSC = Numeric ASCII entry diff --git a/packages/ptc/tests/crtkeys/crtkeys_tp7.txt b/packages/ptc/tests/crtkeys/crtkeys_tp7.txt new file mode 100644 index 0000000000..c021f4750f --- /dev/null +++ b/packages/ptc/tests/crtkeys/crtkeys_tp7.txt @@ -0,0 +1,116 @@ +Test results from the Turbo Pascal 7 crt unit, run under DOS, on a PS/2 Model 76, 101-key US keyboard: + +Ctrl in the table means: Ctrl or Ctrl+Shift +Alt in the table means: Alt or Alt+Shift or Alt+Ctrl or Alt+Ctrl+Shift + +key | - |Shift|Ctrl |Alt |NumLk|NumLk|NumLk|NumLk| + | | | | | |Shift|Ctrl |Alt | +-------------------+-----+-----+-----+-----+-----+-----+-----+-----+ +Esc |27 0 |27 0 |27 0 | |27 0 |27 0 |27 0 | | +F1 |0 59 |0 84 |0 94 |0 104|0 59 |0 84 |0 94 |0 104| +F2 |0 60 |0 85 |0 95 |0 105|0 60 |0 85 |0 95 |0 105| +F3 |0 61 |0 86 |0 96 |0 106|0 61 |0 86 |0 96 |0 106| +F4 |0 62 |0 87 |0 97 |0 107|0 62 |0 87 |0 97 |0 107| +F5 |0 63 |0 88 |0 98 |0 108|0 63 |0 88 |0 98 |0 108| +F6 |0 64 |0 89 |0 99 |0 109|0 64 |0 89 |0 99 |0 109| +F7 |0 65 |0 90 |0 100|0 110|0 65 |0 90 |0 100|0 110| +F8 |0 66 |0 91 |0 101|0 111|0 66 |0 91 |0 101|0 111| +F9 |0 67 |0 92 |0 102|0 112|0 67 |0 92 |0 102|0 112| +F10 |0 68 |0 93 |0 103|0 113|0 68 |0 93 |0 103|0 113| +F11 | | | | | | | | | +F12 | | | | | | | | | +Print Screen/SysRq | | |0 114| | | |0 114| | +Scroll Lock | | | | | | | | | +Pause/Break | | |*BRK*| | | |*BRK*| | +` |96 0 |126 0| | |96 0 |126 0| | | +1 |49 0 |33 0 | |0 120|49 0 |33 0 | |0 120| +2 |50 0 |64 0 |0 3 |0 121|50 0 |64 0 |0 3 |0 121| +3 |51 0 |35 0 | |0 122|51 0 |35 0 | |0 122| +4 |52 0 |36 0 | |0 123|52 0 |36 0 | |0 123| +5 |53 0 |37 0 | |0 124|53 0 |37 0 | |0 124| +6 |54 0 |94 0 |30 0 |0 125|54 0 |94 0 |30 0 |0 125| +7 |55 0 |38 0 | |0 126|55 0 |38 0 | |0 126| +8 |56 0 |42 0 | |0 127|56 0 |42 0 | |0 127| +9 |57 0 |40 0 | |0 128|57 0 |40 0 | |0 128| +0 |48 0 |41 0 | |0 129|48 0 |41 0 | |0 129| +- |45 0 |95 0 |31 0 |0 130|45 0 |95 0 |31 0 |0 130| += |61 0 |43 0 | |0 131|61 0 |43 0 | |0 131| +<- Backspace |8 0 |8 0 |127 0| |8 0 |8 0 |127 0| | +Tab |9 0 |0 15 | | |9 0 |0 15 | | | +q |113 0|81 0 |17 0 |0 16 |113 0|81 0 |17 0 |0 16 | +w |119 0|87 0 |23 0 |0 17 |119 0|87 0 |23 0 |0 17 | +e |101 0|69 0 |5 0 |0 18 |101 0|69 0 |5 0 |0 18 | +r |114 0|82 0 |18 0 |0 19 |114 0|82 0 |18 0 |0 19 | +t |116 0|84 0 |20 0 |0 20 |116 0|84 0 |20 0 |0 20 | +y |121 0|89 0 |25 0 |0 21 |121 0|89 0 |25 0 |0 21 | +u |117 0|85 0 |21 0 |0 22 |117 0|85 0 |21 0 |0 22 | +i |105 0|73 0 |9 0 |0 23 |105 0|73 0 |9 0 |0 23 | +o |111 0|79 0 |15 0 |0 24 |111 0|79 0 |15 0 |0 24 | +p |112 0|80 0 |16 0 |0 25 |112 0|80 0 |16 0 |0 25 | +[ |91 0 |123 0|27 0 | |91 0 |123 0|27 0 | | +] |93 0 |125 0|29 0 | |93 0 |125 0|29 0 | | +\ |92 0 |124 0|28 0 | |92 0 |124 0|28 0 | | +Caps Lock | | | | | | | | | +a |97 0 |65 0 |1 0 |0 30 |97 0 |65 0 |1 0 |0 30 | +s |115 0|83 0 |19 0 |0 31 |115 0|83 0 |19 0 |0 31 | +d |100 0|68 0 |4 0 |0 32 |100 0|68 0 |4 0 |0 32 | +f |102 0|70 0 |6 0 |0 33 |102 0|70 0 |6 0 |0 33 | +g |103 0|71 0 |7 0 |0 34 |103 0|71 0 |7 0 |0 34 | +h |104 0|72 0 |8 0 |0 35 |104 0|72 0 |8 0 |0 35 | +j |106 0|74 0 |10 0 |0 36 |106 0|74 0 |10 0 |0 36 | +k |107 0|75 0 |11 0 |0 37 |107 0|75 0 |11 0 |0 37 | +l |108 0|76 0 |12 0 |0 38 |108 0|76 0 |12 0 |0 38 | +; |59 0 |58 0 | | |59 0 |58 0 | | | +' |39 0 |34 0 | | |39 0 |34 0 | | | +Enter |13 0 |13 0 |10 0 | |13 0 |13 0 |10 0 | | +Left Shift | | | | | | | | | +z |122 0|90 0 |26 0 |0 44 |122 0|90 0 |26 0 |0 44 | +x |120 0|88 0 |24 0 |0 45 |120 0|88 0 |24 0 |0 45 | +c |99 0 |67 0 |3 0 |0 46 |99 0 |67 0 |3 0 |0 46 | +v |118 0|86 0 |22 0 |0 47 |118 0|86 0 |22 0 |0 47 | +b |98 0 |66 0 |2 0 |0 48 |98 0 |66 0 |2 0 |0 48 | +n |110 0|78 0 |14 0 |0 49 |110 0|78 0 |14 0 |0 49 | +m |109 0|77 0 |13 0 |0 50 |109 0|77 0 |13 0 |0 50 | +, |44 0 |60 0 | | |44 0 |60 0 | | | +. |46 0 |62 0 | | |46 0 |62 0 | | | +/ |47 0 |63 0 | | |47 0 |63 0 | | | +Right Shift | | | | | | | | | +Left Ctrl | | | | | | | | | +Left Alt | | | | | | | | | +Space |32 0 |32 0 |32 0 |32 0 |32 0 |32 0 |32 0 |32 0 | +Right Alt | | | | | | | | | +Right Ctrl | | | | | | | | | +Insert |0 82 |0 82 | | |0 82 |0 82 | | | +Delete |0 83 |0 83 | | |0 83 |0 83 | | | +Home |0 71 |0 71 |0 119| |0 71 |0 71 |0 119| | +End |0 79 |0 79 |0 117| |0 79 |0 79 |0 117| | +Page Up |0 73 |0 73 |0 132| |0 73 |0 73 |0 132| | +Page Down |0 81 |0 81 |0 118| |0 81 |0 81 |0 118| | +Up Arrow |0 72 |0 72 | | |0 72 |0 72 | | | +Left Arrow |0 75 |0 75 |0 115| |0 75 |0 75 |0 115| | +Right Arrow |0 77 |0 77 |0 116| |0 77 |0 77 |0 116| | +Down Arrow |0 80 |0 80 | | |0 80 |0 80 | | | +Num Lock | | | | | | | | | +Num / |47 0 |47 0 | | |47 0 |47 0 | | | +Num * |42 0 |42 0 | | |42 0 |42 0 | | | +Num - |45 0 |45 0 | | |45 0 |45 0 | | | +Num + |43 0 |43 0 | | |43 0 |43 0 | | | +Num Enter |13 0 |13 0 |10 0 | |13 0 |13 0 |10 0 | | +Num 0/Ins |0 82 |48 0 | |NUMSC|48 0 |0 82 | |NUMSC| +Num ./Del |0 83 |46 0 | | |46 0 |0 83 | | | +Num 1/End |0 79 |49 0 |0 117|NUMSC|49 0 |0 79 |0 117|NUMSC| +Num 2/Down Arrow |0 80 |50 0 | |NUMSC|50 0 |0 80 | |NUMSC| +Num 3/PgDn |0 81 |51 0 |0 118|NUMSC|51 0 |0 81 |0 118|NUMSC| +Num 4/Left Arrow |0 75 |52 0 |0 115|NUMSC|52 0 |0 75 |0 115|NUMSC| +Num 5 | |53 0 | |NUMSC|53 0 | | |NUMSC| +Num 6/Right Arrow |0 77 |54 0 |0 116|NUMSC|54 0 |0 77 |0 116|NUMSC| +Num 7/Home |0 71 |55 0 |0 119|NUMSC|55 0 |0 71 |0 119|NUMSC| +Num 8/Up Arrow |0 72 |56 0 | |NUMSC|56 0 |0 72 | |NUMSC| +Num 9/PgUp |0 73 |57 0 |0 132|NUMSC|57 0 |0 73 |0 132|NUMSC| + + +Special: + Ctrl+Alt+Del or Ctrl+Alt+Shift+Del: reboot + +*BRK* = Ctrl+Break +NUMSC = Numeric ASCII entry diff --git a/packages/ptc/tests/crtkeys/ptccrtkeys.pas b/packages/ptc/tests/crtkeys/ptccrtkeys.pas new file mode 100644 index 0000000000..5f962891cf --- /dev/null +++ b/packages/ptc/tests/crtkeys/ptccrtkeys.pas @@ -0,0 +1,33 @@ +program ptccrtkeys; +uses + ptccrt, ptcgraph; +var + Gd, Gm: Integer; + Ch, Ex: Char; + Done: Boolean; +begin + Gd := VGA; + Gm := VGAHi; + InitGraph(Gd, Gm, ''); + Writeln('startup KeyMode (press ''m'' to switch): ', KeyMode); + Done := False; + repeat + Ch := ReadKey; + if Ch = #0 then + Ex := ReadKey + else + Ex := #0; + Writeln(Ord(Ch), ' ', Ord(Ex)); + if Ch = 'm' then + begin + if KeyMode <> High(KeyMode) then + KeyMode := Succ(KeyMode) + else + KeyMode := Low(KeyMode); + Writeln('KeyMode: ', KeyMode); + end; + if Ch = 'q' then + Done := True; + until Done; + CloseGraph; +end. |