mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
13 KiB
269 lines
13 KiB
;; 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.
|
|
|