diff options
Diffstat (limited to 'private/os2/os2ses/kbddd.inc')
-rw-r--r-- | private/os2/os2ses/kbddd.inc | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/private/os2/os2ses/kbddd.inc b/private/os2/os2ses/kbddd.inc new file mode 100644 index 000000000..638d3a2af --- /dev/null +++ b/private/os2/os2ses/kbddd.inc @@ -0,0 +1,269 @@ +;; SCCSID = @(#)kbddd.inc 13.1 90/12/14 +;; SCCSID = @(#)kbddd.inc 12.2E% +;;*********************************************************************** +;;* * +;;@@ 1.1 Keyboard Device Driver Common Structures and Equates * +;;* * +;;*********************************************************************** + +;***** +;* Definition of a Character Data record. +;***** +CharData Struc ;Format of character data record. + Char db ? ;The translated character. + Scan db ? ;The original scan code (unless "extended" char). + Status db ? ;Status bits (init to "char available", and + ;@@ Shift Report off). + DShift db ? ;DBCS Shift state at time of keystroke. + Shift dw ? ;Shift state at time of keystroke. + Time dd ? ;@@ PTM 2233: Timestamp of keystroke in ms since IPL. +CharData Ends +ChDaRecLen Equ Size CharData ;Length of a CharData record. + +;***** +;* Definition of the packet to send to the monitors, if any registered. +;* Even when none registered, is used during and after translation. +;* See just below for bit equates for the flagwords in the packet. +;***** +KPacket Struc ;This is the packet. + MonFlags dw 0 ;Flagword for mon's to see with key. + Key db ChDaRecLen Dup(0) ;Space for a CharData record. + DDFlags dw 0 ;Device driver flags for the packet. + ;@@ See DDFlags equates below. +KPacket Ends +KeyPacketLen Equ Size KPacket ;Length of this packet. + +;*** +;* Following equates apply to the low byte of the MonFlags word in +;* a Key Packet: +;*** +;OpenPacket Equ 01h ;Packet is an open request (we don't use this). +;ClosePacket Equ 02h ;Packet is a close request (we don't use this). +;FlushPacket Equ 04h ;Packet is a flush request. +;;NOTE: following must match bit being defined by Mike Peters!!! +NotInserted Equ 80h ;Key wasn't inserted by a monitor. + +;*** +;* Following equates apply to the DDFlags word in a Key Packet: +;*** +NotSQPacket Equ 0400h ;&& Don't put this packet in SQ buffer +AccentedKey Equ 0200h ;Key was translated using previous accent. +MultiMake Equ 0100h ;Key was repeated make of a toggle key. +SecondaryKey Equ 0080h ;Previous scan code was the E0 prefix code. +KeyBreak Equ 0040h ;This is the break of the key. +KeyTypeMask Equ 003Fh ;Isolates the Key Type field of DDFlags. +UndefKey Equ 003Fh ;@@ Key packet is undefined +SysReqKey Equ 0017h ;@@ This key packet is the SysReq key (4990) +PrintFlushKey Equ 0016h ;@@ This packet is Ct-Alt-PrtScr +PSPrintEchoKey Equ 0015h ;@@ This packet is Ctl-P +PrintEchoKey Equ 0014h ;@@ This packet is Ctl-PrtScr +PrtScrKey Equ 0013h ;@@ This packet is PrtScr +PSBreakKey Equ 0012h ;@@ This packet is Ctl-C +BreakKey Equ 0011h ;@@ This packet is Ctl-Break +AccentKey Equ 0010h ;@@ This packet is an accent key +XRorPNot Equ 000Dh ;## This packet is a Read or Peek Notification Pct. +HotKeyPacket Equ 000Ch ;&& This packet is the hot key. +BadKeyCombo Equ 000Bh ;@@ Accent/char combo undefined, beep only. +WakeUpKey Equ 000Ah ;@@ This packet is one following PAUSEKEY +PSPauseKey Equ 0009h ;@@ This packet is Ctl-S +PauseKey Equ 0008h ;@@ This packet is Ctl-Numlock or PAUSE +ShiftMask Equ 0007h ;@@ Key is a shift Key +DumpKey Equ 0006h ;@@ This packet is Ctl-Numlock-NumLock +RebootKey Equ 0005h ;@@ This packet is Ctl-Alt-Del +ResendCode Equ 0004h ;@@ This packet is resend code from controller +OverRunCode Equ 0003h ;@@ This packet is overrun code from controller +SecPrefixCode Equ 0002h ;@@ This packet is E0/E1 scan code +AckCode Equ 0001h ;@@ This packet is ack code from keyboard + + +;***** +;* SFlags - Equates to use when accessing the ShiftFlags word in a Char- +;* Data rec. These equates are used when accessing Key Packets, etc. +;***** +SysRqFlag = 8000h ;SysRq key down. +CapsFlag = 4000h ;Capslock key down. +NumFlag = 2000h ;Numlock key down. +ScrollFlag = 1000h ;Scroll lock key down. +RAltFlag = 0800h ;Right Alt key down. +RCtlFlag = 0400h ;Right Ctrl key down. +LAltFlag = 0200h ;Left Alt key down. +LCtlFlag = 0100h ;Left Ctrl key down. + +;Following can be used when accessing low-byte only, also. + +InsTogl = 0080h ;Insert key toggled on. +CapsTogl = 0040h ;Capslock key toggled on. +NumTogl = 0020h ;Numlock key toggled on. +ScrollTogl = 0010h ;Scroll lock key toggled on. +AltFlag = 0008h ;An Alt key is down. +CtlFlag = 0004h ;A Ctrl key is down. +LShiftFlag = 0002h ;Left shift key down. +RShiftFlag = 0001h ;Right shift key down. + +ifdef JAPAN +; MSKK Aug.15.1993 V-AKihiS +;***** +;* DSFlags - Equates to use when accessing the DShiftFlags word in a Char- +;* Data rec. These equates are used when accessing Key Packets, etc. +;***** + +KanaToKanji = 10000000b ;Kana to Kanji transfar mode. +RomanMode = 01000000b ;Roman character mode. +ShiftDisp = 00011000b ;Display of shift status line. +CharMode = 00000110b ;Character mode. +DoubleChar = 00000001b ;Double byte character (Zen-Kaku). + +Katakana = 010b ;CharMode is katakana mode. +Hiragana = 100b ;CharMode is Hiragana mode. +CMResMask Equ RomanMode+Katakana+Hiragana+DoubleChar +ToggleMake Equ 01h ;Key was repeated make of a toggle key. +endif + +;@@ PTM 3377: Following equate used for checking reserved bits for Set +;@@ SM Hot Key IOCTL (56h): + +HKResMask Equ InsTogl+CapsTogl+NumTogl+ScrollTogl+AltFlag+CtlFlag ;@@ + +;@@ ***** +;@@ Following is the structure of the Flag variable data areas used +;@@ by KbdXlate, for both interrupt- and strategy- time translation. +;@@ ***** + +XlateVars Struc ;@@ The flag area structure. + XDRFlags dw 0 ;@@ See XCOMPLETE below. Not + ;@@ used at interrupt time. + XHotKeyShift dw 0 ;@@ ;OS2SS-Moved to here, Interrupt driven shift status + XPSGFlags dw 0 ;@@ ;OS2SS-Moved to here, Copy of caller's PSG flags. + ;&& (changed byte->word and position + ;&& in structure per DCR8) + XlateFlags db 0 ;@@ See equates below. + ToggleFlags db 0 ;@@ See equates below. + XInputMode db 0 ;@@ Copy of desired input mode. + XAltKeyPad db 0 ;@@ Accumulator for Alt-nnn entry + OtherFlags db 0 ;Misc flags (should be zeroed on a session switch). +XlateVars Ends ;@@ End flag area stucture. + +XLATEVARSIZE Equ Size XlateVars ;@@ Get the size of this area. + ;@@ NOTE! Beware of XDRSIZE + ;@@ adjustment of XlateVars in + ;@@ KBDDATA.ASM! + +;XCOMPLETE Equ 0001h ;@@ Indicates strategy time +; ;@@ translation is complete. + +;Equates for using XlateFlags byte in translation data area: + +DumpKeyOnce Equ 01h ;Dump key sequence has been hit once. +PSKeyDown Equ 02h ;Print Screen key is down right now. +SecPrefix Equ 04h ;G keyboard E0 prefix scan code just seen. +NormalAlt Equ 08h ;@@ Normal Alt (not AltGraph) is down +Use3Index Equ 10h ;@@ Use character 3 in translate table as index into + ;@@ accent table +PseudoCtl Equ 20h ;@@ Ctl key was emulated by Enhanced kbd +E1Prefix Equ 40h ;@@ Enhanced keyboard E1 prefix just seen + +;Equates for using ToggleFlags byte in translation data area: + +TKeyDown = ScrollTogl+NumTogl+CapsTogl ;Latches for toggle keys. +InsKeyDown Equ 80h ;Insert key is down right now. + +;***** +;* Equates for accessing the XtableFlags1 translate table flagword: +;***** +;;XTFlags1 Equ 2 ;Offset of XTableFlags1 in XTHead. ??? NEEDED? +ShftAlt Equ 0001h ;Use Shift+Alt instead of Ctl+Alt in CtlAltRemap. +AltGrafL Equ 0002h ;Use left Alt Key as an Alt-Graphics shift key. +AltGrafR Equ 0004h ;Use right Alt Key as an Alt-Graphics shift key. +ShiftLock Equ 0008h ;Keyboard uses ShiftLock rather than CapsLock. +DefTable Equ 0010h ;@@ Default Table for the Language +ShiftToggle Equ 0020h ;@@ ShiftLock Toggle keyboard +AccentPass Equ 0040h ;@@ Pass Accent key packet and beep +CapsShift Equ 0080h ;@@ If CapsShift down, use character 5 from XTable + +ATKbd Equ 0000h ;@@ XTKbdType it an AT kbd. +FERRARI_P Equ 0AB54h ;## PTM 3128 Equate for 88/89 key keyboard. +FERRARI_G Equ 0AB41h ;## PTM 3128 Equate for 101/102 key keyboard. +JAGUAR Equ 0AB86h ;%% DCR 1085 Equate for Jaguar 122 key keyboard. +PCATKBD Equ 0100h ;## ID byte indication for an AT kbd. + +;***** +;* Masks for accessing the XlateOp fields in a keydef. +;***** +AccFlagsMask Equ 0FE00h ;@@ Accent flags is now high 7 bits +ActionMask Equ 01FFh ;@@ KeyType is now low 9 bits + +;****** +;* Values for special keyboard scan codes ;@@ +;****** +BufferFull Equ 0FFh ;Keyboard overrun code sent by keyboard. +Resend Equ 0FEh ;Resend command request from keyboard. +Ack Equ 0FAh ;Command acknowledge from keyboard. +OtherKey Equ 0E0h ;Enhanced keyboard's secondary key prefix. +OtherKey2 Equ 0E1h ;Another secondary key prefix. +BreakBit Equ 80h ;Mask for break bit in a scan code. + +;***** +;* Equates for PSGFlags - misc flags used by individual screen group. +;* (Should be zeroed on session termination.) +;* DCR8: Changed from byte to word to add single queue support. +;***** +SQMODE Equ 0200h ;&& Indicates Single Queue mode processing. +SGInUse Equ 0080h ;This session has been initialized & not terminated. +;OS2SS-SG3xBox Equ 0040h ;This session is the 3xBox. +ActiveSG Equ 0020h ;This session is the currently active one. +Flushing Equ 0010h ;Currently flushing monitors in this PSG. +NowPaused Equ 0008h ;This session currently paused. +PrevAccent Equ 0007h ;Bits where accent number saved til next keystroke. +WakeUpSent Equ 0100h ;## B790266 The WakeUpKey flag has been set ON in the DDFlags + +;;***** +;;* Misc Equates used by various routines: +;;***** +;INPUTMODE Equ 80h ;@@ Input mode flag. 1=Binary, 0=ASCII. +EXTENDEDCODE Equ 2 ;## DCR 357: Define status bit for secondary keys. +SHIFTREPORT Equ 1 ;@@ Shift Report, input mode flag. + +;***** +;* OtherFlags: Misc flags (should be zeroed on a session switch). +;* Use following equates to access the OtherFlags byte: +;***** +OFlags Record a7:1,a6:1,a5:1,a4:1,a3:1,a2:1,a1:1,a0:1 +;Note: leave HotKeyDown & MHotKeyDown in bits 0 and 1!!! +;HotKeyDown = Mask a0 ;SM HotKey is down right now. +;MHotKeyDown = Mask a1 ;Monitor inserted SM HotKey down now. +InterruptTime = Mask a2 ;Currently processing an interrupt. +;HotKeyFound = Mask a3 ;@@ Hot key was found in table +;RecvdPMode = Mask a4 ;@@ PTM 7582 - Interrupt time mode flag. +;AlreadySwitch = Mask a5 ;@@ PTM 7582 - Interrupt time mode flag. +;IntInProgress = Mask a6 ;@@ PTM 5336 - Int is in progress. +;NestedInt = Mask a7 ;@@ PTM 5336 - Interrupt is nested. + +;;***** +;;* MiscFlags: Misc flags, mostly just used once by KBDDD. +;;* Use following equates to access the MiscFlags byte: +;;***** +MFlags Record m7:1,m6:1,m5:1,m4:1,m3:1,m2:1,m1:1,m0:1 +EnhancedKbd = Mask m4 ;Enhanced Kbd is out there (must be Bit 4!). + +;&& PTM 291: BEGIN +;&& ***** +;&& * MiscFlags3: +;&& * Use following equates to access the MiscFlags3 byte: +;&& ***** +;&& Define the bits... +MFlags3 Record mb7:1,mb6:1,mb5:1,mb4:1,mb3:1,mb2:1,mb1:1,mb0:1 +;SQon = Mask mb0 ;&& DCR 75: indicates whether any SG is in SQ. +AltPacket = Mask mb1 ;&& DCR 1713: indicates that Alt-Numpad + ;&& accumulation is finished. +PauseLatch = Mask mb2 ;&& PTM 2344: indicates correct keystroke + ;&& sequence for a Ctrl-NumLock. +;IOCTl1st = Mask mb3 ;&& PTM 2189: indicates first keyboard IOCTl for + ;&& SetCurrentSG received. +E0Packet = Mask mb4 ;&& PTM 2382: indicates that an E0 packet is + ;&& to be sent with the next packet. +;SENDTIMERNEEDED = Mask mb5 ;&& PTM 291 indicates whether we need the + ;&& timer handler to flag an error. +;SETSENDTIMER = Mask mb6 ;&& PTM 291 indicates whether we need to reset + ;&& the ticks for the timer handler. +SecAltNumPad = Mask mb7 ;## PTR AK00370: indicates AltNumpad with R-Alt. + |