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.
172 lines
5.2 KiB
172 lines
5.2 KiB
;******************************************************************************
|
|
;
|
|
; (C) Copyright MICROSOFT Corp., 1988-1990
|
|
;
|
|
; Title: vkd.inc -
|
|
;
|
|
; Version: 1.00
|
|
;
|
|
; Date: 10-Aug-1988
|
|
;
|
|
; Author: RAP
|
|
;
|
|
;------------------------------------------------------------------------------
|
|
;
|
|
; Change log:
|
|
;
|
|
; DATE REV DESCRIPTION
|
|
; ----------- --- -----------------------------------------------------------
|
|
; 10-Aug-1988 RAP started re-write of VKD
|
|
; 03-Nov-1988 RAP separated internal stuff out into VKDSYS.INC
|
|
;
|
|
;==============================================================================
|
|
|
|
|
|
Begin_Service_Table VKD
|
|
|
|
VKD_Service VKD_Get_Version, LOCAL
|
|
VKD_Service VKD_Define_Hot_Key, LOCAL
|
|
VKD_Service VKD_Remove_Hot_Key, LOCAL
|
|
VKD_Service VKD_Local_Enable_Hot_Key, LOCAL
|
|
VKD_Service VKD_Local_Disable_Hot_Key, LOCAL
|
|
VKD_Service VKD_Reflect_Hot_Key, LOCAL
|
|
VKD_Service VKD_Cancel_Hot_Key_State, LOCAL
|
|
VKD_Service VKD_Force_Keys, LOCAL
|
|
VKD_Service VKD_Get_Kbd_Owner, LOCAL
|
|
VKD_Service VKD_Define_Paste_Mode, LOCAL
|
|
VKD_Service VKD_Start_Paste, LOCAL
|
|
VKD_Service VKD_Cancel_Paste, LOCAL
|
|
VKD_Service VKD_Get_Msg_Key, LOCAL
|
|
VKD_Service VKD_Peek_Msg_Key, LOCAL
|
|
VKD_Service VKD_Flush_Msg_Key_Queue, LOCAL
|
|
|
|
End_Service_Table VKD
|
|
|
|
|
|
VKD_Version equ 200h
|
|
|
|
|
|
;******************************************************************************
|
|
;
|
|
; shift state bits for both global & local shift states
|
|
;
|
|
;;5432109876543210
|
|
SS_Shift equ 0000000000000001b ; left or right
|
|
SS_LShift equ 0000000000000010b
|
|
SS_RShift equ 0000001000000000b
|
|
SS_Ctrl equ 0000000010000000b ; left or right
|
|
SS_LCtrl equ 0000000000000100b
|
|
SS_RCtrl equ 0000010000000000b
|
|
SS_Alt equ 0000000100000000b ; left or right
|
|
SS_LAlt equ 0000000000001000b
|
|
SS_RAlt equ 0000100000000000b
|
|
SS_CapLock equ 0000000001000000b
|
|
SS_NumLock equ 0000000000100000b
|
|
SS_ScrlLock equ 0000000000010000b
|
|
SS_CapLock_Dn equ 0100000000000000b ; SS_CapLock shl 8
|
|
SS_NumLock_Dn equ 0010000000000000b ; SS_NumLock shl 8
|
|
SS_ScrlLock_Dn equ 0001000000000000b ; SS_ScrlLock shl 8
|
|
SS_Unused equ 1000000000000000b
|
|
|
|
SS_Toggle_mask equ SS_CapLock + SS_NumLock + SS_ScrlLock
|
|
SS_Toggle_Dn_mask equ SS_CapLock_Dn + SS_NumLock_Dn + SS_ScrlLock_Dn
|
|
SS_LShift_mask equ SS_LShift + SS_LCtrl + SS_LAlt
|
|
SS_Shift_mask equ SS_LShift_mask + SS_RShift + SS_RCtrl + SS_RAlt
|
|
|
|
SS_Either_Shift equ SS_LShift + SS_RShift
|
|
SS_Either_Ctrl equ SS_LCtrl + SS_RCtrl
|
|
SS_Either_Alt equ SS_LAlt + SS_RAlt
|
|
|
|
|
|
; LED state bits
|
|
LED_ScLok equ 1 ; Scroll Lock
|
|
LED_NmLok equ 2 ; Num Lock
|
|
LED_CpLok equ 4 ; Caps Lock
|
|
Toggle_To_LED equ 4 ; "state shr Toggle_To_LED" converts
|
|
; state bits into kybd LED bits
|
|
|
|
|
|
; VKD_Define_Hot_Key equates & macro
|
|
|
|
ExtendedKey_B equ 1
|
|
ExtendedKey equ 100h
|
|
AllowExtended_B equ 0FFh
|
|
AllowExtended equ 0FF00h
|
|
|
|
|
|
;VKD_Define_Hot_Key flags:
|
|
|
|
CallOnPress equ 1 ; Call call-back when key press is detected
|
|
CallOnRelease equ 2 ; Call call-back when key release is detected
|
|
; (keyboard may still be in hot-key hold state)
|
|
CallOnRepeat equ 4 ; Call call-back when repeated press is detected
|
|
CallOnComplete equ 8 ; Call call-back when the hot key state is
|
|
; ended (all shift modifier keys are released)
|
|
; or when a different hot key is entered
|
|
; (i.e. pressing ALT 1 2, if both ALT-1
|
|
; and ALT-2 are defined hot keys, then ALT-1's
|
|
; call back will be called before ALT-2's to
|
|
; indicate that the ALT-1 is complete even
|
|
; though the ALT key is still down)
|
|
CallOnUpDwn equ CallOnPress + CallOnRelease
|
|
; Call call-back on both press and release
|
|
CallOnAll equ 0 ; Call call-back on press, release, auto-repeat
|
|
; and complete
|
|
PriorityNotify equ 10h ; notification calls to the call-back can only
|
|
; happen when interrupts are enabled and
|
|
; the critical section is un-owned
|
|
Local_Key equ 80h ; key can be locally enabled/disabled
|
|
|
|
Hot_Key_Pressed equ 0
|
|
Hot_Key_Released equ 1
|
|
Hot_Key_Repeated equ 2
|
|
Hot_Key_Completed equ 3
|
|
|
|
Hot_Key_SysVM_Notify equ 80h
|
|
Hot_Key_SysVM_Notify_bit equ 7
|
|
|
|
BeginDoc
|
|
;******************************************************************************
|
|
;
|
|
; ShiftState
|
|
;
|
|
; DESCRIPTION: Macro to aid in setting EBX with the shift state mask and
|
|
; shift state compare value for calling VKD_Define_Hot_Key.
|
|
;
|
|
; USAGE: ShiftState mask, compare
|
|
;
|
|
; The mask specifies the shift state bits that should be
|
|
; excluded before the compare is done.
|
|
;
|
|
;==============================================================================
|
|
EndDoc
|
|
ShiftState MACRO mask, compare
|
|
mov ebx, ((NOT mask) SHL 16) + compare
|
|
ENDM
|
|
|
|
; common shift states
|
|
|
|
HKSS_Shift equ (NOT (SS_Either_Shift + SS_Toggle_mask)) SHL 16 + SS_Shift
|
|
HKSS_Ctrl equ (NOT (SS_Either_Ctrl + SS_Toggle_mask)) SHL 16 + SS_Ctrl
|
|
HKSS_Alt equ (NOT (SS_Either_Alt + SS_Toggle_mask)) SHL 16 + SS_Alt
|
|
|
|
|
|
; include structure of entries in paste buffer
|
|
|
|
include VKDpaste.INC
|
|
|
|
|
|
; paste completion flags passed to the paste call-back
|
|
|
|
Paste_Complete equ 0 ; paste successful
|
|
Paste_Aborted equ 1 ; paste aborted by user
|
|
Paste_VM_Term equ 2 ; paste aborted because VM terminated
|
|
|
|
;
|
|
; Modifier byte for Message Keys, retrieved with services VKD_Get_Msg_Key and
|
|
; VKD_Peek_Msg_Key
|
|
;
|
|
MK_Shift equ 00000010b
|
|
MK_Ctrl equ 00000100b
|
|
MK_Alt equ 00001000b
|
|
MK_Extended equ 10000000b
|