Leaked source code of windows server 2003
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.
 
 
 
 
 
 

589 lines
26 KiB

PAGE ,132
TITLE PC DOS 3.3 Keyboard Definition File
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PC DOS 3.3 - NLS Support - Keyboard Defintion File
;; (c) Copyright IBM Corp 198?,...
;;
;; This file contains the keyboard tables for Spanish.
;;
;; Linkage Instructions:
;; Refer to KDF.ASM.
;;
;;
;; Author: BILL DEVLIN - IBM Canada Laboratory - May 1986
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
INCLUDE KEYBSHAR.INC ;;
INCLUDE POSTEQU.INC ;;
INCLUDE KEYBMAC.INC ;;
;;
PUBLIC DV_LOGIC ;;
PUBLIC DV_COMMON_XLAT ;;
;;
CODE SEGMENT PUBLIC 'CODE' ;;
ASSUME CS:CODE,DS:CODE ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Standard translate table options are a liner search table
;; (TYPE_2_TAB) and ASCII entries ONLY (ASCII_ONLY)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
STANDARD_TABLE EQU TYPE_2_TAB+ASCII_ONLY
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;***************************************
;; DV State Logic
;;***************************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;
DV_LOGIC:
DW LOGIC_END-$ ;; length
;;
DW 0 ;; special features
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COMMANDS START HERE
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; OPTIONS: If we find a scan match in
;; an XLATT or SET_FLAG operation then
;; exit from INT 9.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
OPTION EXIT_IF_FOUND ;;
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Dead key definitions must come before
;; dead key translations to handle
;; dead key + dead key.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
IFF EITHER_ALT,NOT ;;
ANDF EITHER_CTL,NOT ;;
IFF EITHER_SHIFT ;;
SET_FLAG DEAD_UPPER ;;
ELSEF ;;
SET_FLAG DEAD_LOWER ;;
ENDIFF ;;
ENDIFF ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ACUTE ACCENT TRANSLATIONS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
ACUTE_PROC: ;;
;;
IFF ACUTE,NOT ;;
GOTO DIARESIS_PROC ;;
ENDIFF ;;
;;
RESET_NLS ;;
IFF R_ALT_SHIFT,NOT ;;
XLATT ACUTE_SPACE ;;
ENDIFF ;;
IFF EITHER_CTL,NOT ;;
ANDF EITHER_ALT,NOT ;;
IFF EITHER_SHIFT ;;
IFF CAPS_STATE ;;
XLATT ACUTE_LOWER ;;
ELSEF ;;
XLATT ACUTE_UPPER ;;
ENDIFF ;;
ELSEF ;;
IFF CAPS_STATE ;;
XLATT ACUTE_UPPER ;;
ELSEF ;;
XLATT ACUTE_LOWER ;;
ENDIFF ;;
ENDIFF ;;
ENDIFF ;;
;;
INVALID_ACUTE: ;;
PUT_ERROR_CHAR ACUTE_LOWER ;; If we get here then either the XLATT
BEEP ;; failed or we are ina bad shift state.
GOTO NON_DEAD ;; Either is invalid so BEEP and fall
;; through to generate the second char.
;; Note that the dead key flag will be
;; reset before we get here.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DIARESIS ACCENT TRANSLATIONS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DIARESIS_PROC: ;;
;;
IFF DIARESIS,NOT ;;
GOTO GRAVE_PROC ;;
ENDIFF ;;
;;
RESET_NLS ;;
IFF R_ALT_SHIFT,NOT ;;
XLATT DIARESIS_SPACE ;; exist for 437 so beep for
ENDIFF ;;
IFF EITHER_CTL,NOT ;;
ANDF EITHER_ALT,NOT ;;
IFF EITHER_SHIFT ;;
IFF CAPS_STATE ;;
XLATT DIARESIS_LOWER ;;
ELSEF ;;
XLATT DIARESIS_UPPER ;;
ENDIFF ;;
ELSEF ;;
IFF CAPS_STATE ;;
XLATT DIARESIS_UPPER ;;
ELSEF ;;
XLATT DIARESIS_LOWER ;;
ENDIFF ;;
ENDIFF ;;
ENDIFF ;;
;;
INVALID_DIARESIS: ;;
PUT_ERROR_CHAR DIARESIS_SPACE ;; standalone accent
BEEP ;; Invalid dead key combo.
GOTO NON_DEAD ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GRAVE ACCENT TRANSLATIONS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
GRAVE_PROC: ;;
;;
IFF GRAVE,NOT ;;
GOTO CIRCUMFLEX_PROC ;;
ENDIFF ;;
;;
RESET_NLS ;;
IFF R_ALT_SHIFT,NOT ;;
XLATT GRAVE_SPACE ;;
ENDIFF ;;
IFF EITHER_CTL,NOT ;;
ANDF EITHER_ALT,NOT ;;
IFF EITHER_SHIFT ;;
IFF CAPS_STATE ;;
XLATT GRAVE_LOWER ;;
ELSEF ;;
XLATT GRAVE_UPPER ;;
ENDIFF ;;
ELSEF ;;
IFF CAPS_STATE,NOT ;;
XLATT GRAVE_LOWER ;;
ELSEF ;;
XLATT GRAVE_UPPER ;;
ENDIFF ;;
ENDIFF ;;
ENDIFF ;;
;;
INVALID_GRAVE: ;;
PUT_ERROR_CHAR GRAVE_LOWER ;; standalone accent
BEEP ;; Invalid dead key combo.
GOTO NON_DEAD ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CIRCUMFLEX ACCENT TRANSLATIONS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
CIRCUMFLEX_PROC: ;;
;;
IFF CIRCUMFLEX,NOT ;;
GOTO NON_DEAD ;;
ENDIFF ;;
;;
RESET_NLS ;;
IFF R_ALT_SHIFT,NOT ;;
XLATT CIRCUMFLEX_SPACE ;;
ENDIFF ;;
IFF EITHER_CTL,NOT ;;
ANDF EITHER_ALT,NOT ;;
IFF EITHER_SHIFT ;;
IFF CAPS_STATE ;;
XLATT CIRCUMFLEX_LOWER ;;
ELSEF ;;
XLATT CIRCUMFLEX_UPPER ;;
ENDIFF ;;
ELSEF ;;
IFF CAPS_STATE,NOT ;;
XLATT CIRCUMFLEX_LOWER ;;
ELSEF ;;
XLATT CIRCUMFLEX_UPPER ;;
ENDIFF ;;
ENDIFF ;;
ENDIFF ;;
;;
INVALID_CIRCUMFLEX: ;;
PUT_ERROR_CHAR CIRCUMFLEX_LOWER ;; standalone accent
BEEP ;; Invalid dead key combo.
GOTO NON_DEAD ;;
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Upper, lower and third shifts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
NON_DEAD: ;;
;;
IFKBD G_KB+P12_KB ;; Avoid accidentally translating
ANDF LC_E0 ;; the "/" on the numeric pad of the
EXIT_STATE_LOGIC ;; G keyboard
ENDIFF ;;
;;***BD ADDED FOR ALT, CTRL CASES ;;
IFF EITHER_CTL,NOT ;;
IFF ALT_SHIFT ;; ALT - case
ANDF R_ALT_SHIFT,NOT ;;
XLATT ALT_CASE ;;
ENDIFF ;;
ELSEF ;;
IFF EITHER_ALT,NOT ;; CTRL - case
XLATT CTRL_CASE ;;
ENDIFF ;;
ENDIFF ;;
;;***BD END OF ADDITION
;;
IFF EITHER_ALT,NOT ;; Lower and upper case. Alphabetic
ANDF EITHER_CTL,NOT ;; keys are affected by CAPS LOCK.
IFF EITHER_SHIFT ;; Numeric keys are not.
;;***BD ADDED FOR NUMERIC PAD
IFF NUM_STATE,NOT ;;
XLATT NUMERIC_PAD ;;
ENDIFF ;;
;;***BD END OF ADDITION
XLATT NON_ALPHA_UPPER ;;
IFF CAPS_STATE ;;
XLATT ALPHA_LOWER ;;
ELSEF ;;
XLATT ALPHA_UPPER ;;
ENDIFF ;;
ELSEF ;;
;;***BD ADDED FOR NUMERIC PAD
IFF NUM_STATE ;;
XLATT NUMERIC_PAD ;;
ENDIFF ;;
;;***BD END OF ADDITION
XLATT NON_ALPHA_LOWER ;;
IFF CAPS_STATE ;;
XLATT ALPHA_UPPER ;;
ELSEF ;;
XLATT ALPHA_LOWER ;;
ENDIFF ;;
ENDIFF ;;
ELSEF ;;
IFF EITHER_SHIFT,NOT ;;
IFKBD XT_KB+AT_KB ;;
IFF EITHER_CTL ;;
ANDF ALT_SHIFT ;;
XLATT THIRD_SHIFT ;;
ENDIFF ;;
ELSEF ;;
IFF EITHER_CTL,NOT ;;
ANDF R_ALT_SHIFT ;;
XLATT THIRD_SHIFT ;;
ENDIFF ;;
ENDIFF ;;
ENDIFF ;;
ENDIFF ;;
;;
EXIT_STATE_LOGIC ;;
;;
LOGIC_END: ;;
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;***************************************
;; DV Common Translate Section
;; This section contains translations for the lower 128 characters
;; only since these will never change from code page to code page.
;; In addition the dead key "Set Flag" tables are here since the
;; dead keys are on the same keytops for all code pages.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
PUBLIC DV_COMMON_XLAT ;;
DV_COMMON_XLAT: ;;
;;
DW COMMON_XLAT_END-$ ;; length of section
DW -1 ;; code page
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;***************************************
;;***BD - ADDED FOR ALT CASE
;;******************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Alt Case
;; KEYBOARD TYPES: All
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DW COM_ALT_K2_END-$ ;; length of state section
DB ALT_CASE ;; State ID
DW ANY_KB ;; Keyboard Type
DB -1,-1 ;; Buffer entry for error character
;;
DW COM_ALT_K2_T1_END-$ ;; Size of xlat table
DB TYPE_2_TAB ;; xlat options:
DB 36 ;; number of entries
DB 0CH, 0, 01AH ;; Alt+{
DB 0DH, 0, 01BH ;; Alt+}
DB 010H, 0, 028H ;; Altl+"
DB 011H, 0, 033H ;; Altl+,
DB 012H, 0, 034H ;; Altl+.
DB 013H, 0, 019H ;; Altl+P
DB 014H, 0, 015H ;; Altl+Y
DB 015H, 0, 021H ;; Altl+F
DB 016H, 0, 022H ;; Altl+G
DB 017H, 0, 02EH ;; Altl+C
DB 018H, 0, 013H ;; Altl+R
DB 019H, 0, 026H ;; Altl+L
DB 01AH, 0, 035H ;; Altl+?
DB 01BH, 0, 0DH ;; Altl+=
DB 01EH, 0, 01EH ;; Altl+A
DB 01FH, 0, 018H ;; Altl+O
DB 020H, 0, 012H ;; Altl+E
DB 021H, 0, 016H ;; Altl+U
DB 022H, 0, 017H ;; Altl+I
DB 023H, 0, 020H ;; Altl+D
DB 024H, 0, 023H ;; Altl+H
DB 025H, 0, 014H ;; Altl+T
DB 026H, 0, 031H ;; Altl+N
DB 027H, 0, 01FH ;; Altl+S
DB 028H, 0, 0CH ;; Altl+-
DB 02BH, 0, 02BH ;; Altl+|
DB 02CH, 0, 027H ;; Altl+;
DB 02DH, 0, 010H ;; Altl+Q
DB 02EH, 0, 024H ;; Altl+J
DB 02FH, 0, 025H ;; Altl+K
DB 030H, 0, 02DH ;; Altl+X
DB 031H, 0, 030H ;; Altl+B
DB 032H, 0, 032H ;; Altl+M
DB 033H, 0, 011H ;; Altl+W
DB 034H, 0, 02FH ;; Altl+V
DB 035H, 0, 02CH ;; Altl+Z
COM_ALT_K2_T1_END: ;;
;;
DW 0 ;; Size of xlat table - null table
;;
COM_ALT_K2_END: ;;
;;
;;******************************
;;***BD - ADDED FOR CTRL CASE
;;******************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Ctrl Case
;; KEYBOARD TYPES: G_KB+P12_KB+AT
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DW COM_CTRL_K2_END-$ ;; length of state section
DB CTRL_CASE ;; State ID
DW G_KB+P12_KB+AT_KB ;; Keyboard Type
DB -1,-1 ;; Buffer entry for error character
;;
DW COM_CTRL_K2_T1_END-$ ;; Size of xlat table
DB TYPE_2_TAB ;; xlat options:
DB 36 ;; number of entries
DB 0CH, 01BH, 0CH ;; Ctrl+{
DB 0DH, 01DH, 0DH ;; Ctrl+}
DB 010H, 00H, 010H ;; Ctrl+"
DB 011H, 00H, 011H ;; Ctrl+,
DB 012H, 00H, 012H ;; Ctrl+.
DB 013H, 010H, 013H ;; Ctrl+P
DB 014H, 019H, 014H ;; Ctrl+Y
DB 015H, 06H, 015H ;; Ctrl+F
DB 016H, 07H, 016H ;; Ctrl+G
DB 017H, 03H, 017H ;; Ctrl+C
DB 018H, 012H, 018H ;; Ctrl+R
DB 019H, 0CH, 019H ;; Ctrl+L
DB 01AH, 00H, 01AH ;; Ctrl+?
DB 01BH, 00H, 01BH ;; Ctrl+=
DB 01EH, 01H, 01EH ;; Ctrl+A
DB 01FH, 0FH, 01FH ;; Ctrl+O
DB 020H, 05H, 020H ;; Ctrl+E
DB 021H, 015H, 021H ;; Ctrl+U
DB 022H, 09H, 022H ;; Ctrl+I
DB 023H, 04H, 023H ;; Ctrl+D
DB 024H, 08H, 024H ;; Ctrl+H
DB 025H, 014H, 025H ;; Ctrl+T
DB 026H, 0EH, 026H ;; Ctrl+N
DB 027H, 013H, 027H ;; Ctrl+S
DB 028H, 01FH, 028H ;; Ctrl+-
DB 02BH, 00H, 02BH ;; Ctrl+|
DB 02CH, 00H, 02CH ;; Ctrl+;
DB 02DH, 011H, 02DH ;; Ctrl+Q
DB 02EH, 0AH, 02EH ;; Ctrl+J
DB 02FH, 0BH, 02FH ;; Ctrl+K
DB 030H, 018H, 030H ;; Ctrl+X
DB 031H, 02H, 031H ;; Ctrl+B
DB 032H, 0DH, 032H ;; Ctrl+M
DB 033H, 017H, 033H ;; Ctrl+W
DB 034H, 016H, 034H ;; Ctrl+V
DB 035H, 01AH, 035H ;; Ctrl+Z
COM_CTRL_K2_T1_END: ;;
;;
DW 0 ;; Size of xlat table - null table
;;
COM_CTRL_K2_END: ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Non-Alpha Lower Case
;; KEYBOARD TYPES: G_KB+P12_KB
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DW COM_NA_LO_K1_END-$ ;; length of state section
DB NON_ALPHA_LOWER ;; State ID
DW ANY_KB ;; Keyboard Type
DB -1,-1 ;; Buffer entry for error character
;;
DW COM_NA_LO_K1_T1_END-$ ;; Size of xlat table
DB STANDARD_TABLE ;; xlat options:
DB 9 ;; number of entries
DB 00CH,"[" ;; '
DB 00DH,']' ;; #
DB 010H,"'" ;; #
DB 011H,',' ;; #
DB 012H,'.' ;; #
DB 01AH,'/' ;; #
DB 01BH,'=' ;; #
DB 028H,'-' ;; #
DB 02CH,';' ;; #
COM_NA_LO_K1_T1_END: ;;
;;
DW 0 ;; Size of xlat table - null table
;;
COM_NA_LO_K1_END: ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Non-Alpha Upper Case
;; KEYBOARD TYPES: G_KB+P12_KB+
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DW COM_NA_UP_K1_END-$ ;; length of state section
DB NON_ALPHA_UPPER ;; State ID
DW ANY_KB ;; Keyboard Type
DB -1,-1 ;; Buffer entry for error character
;;
DW COM_NA_UP_T1_K1_END-$ ;; Size of xlat table
DB STANDARD_TABLE ;; xlat options:
DB 9 ;; number of entries
DB 00CH,"{" ;; '
DB 00DH,'}' ;; #
DB 010H,'"' ;; #
DB 011H,'<' ;; #
DB 012H,'>' ;; #
DB 01AH,'?' ;; #
DB 01BH,'+' ;; #
DB 028H,'_' ;; #
DB 02CH,':' ;; #
COM_NA_UP_T1_K1_END: ;;
;;
DW 0 ;; Size of xlat table - null table
;;
COM_NA_UP_K1_END: ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: COMMON
;; STATE: Alpha Lower Case
;; KEYBOARD TYPES: All
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DW CPCOM_A_K1_LO_END-$ ;; length of state section
DB ALPHA_LOWER ;; State ID
DW ANY_KB ;; Keyboard Type
DB -1,-1 ;; Buffer entry for error character
;;
;;
DW CPCOM_A_LO_K1_T01_END-$ ;; Size of xlat table
DB STANDARD_TABLE ;; xlat options:
DB 26 ;; number of entries
DB 13H, 'p' ;; j
DB 14H, 'y' ;; l
DB 15H, 'f' ;; m
DB 16H, 'g' ;; f
DB 17H, 'c' ;; p
DB 18H, 'r' ;; p
DB 19H, 'l' ;; p
DB 1EH, 'a' ;; o
DB 1FH, 'o' ;; r
DB 20H, 'e' ;; s
DB 21H, 'u' ;; u
DB 22H, 'i' ;; y
DB 23H, 'd' ;; b
DB 24H, 'h' ;; b
DB 25H, 't' ;; b
DB 26H, 'n' ;; b
DB 27H, 's' ;; b
DB 2DH, 'q' ;; z
DB 2EH, 'j' ;; a
DB 2FH, 'k' ;; e
DB 30H, 'x' ;; h
DB 31H, 'b' ;; t
DB 32H, 'm' ;; d
DB 33H, 'w' ;; c
DB 34H, 'v' ;; k
DB 35H, 'z' ;; k
CPCOM_A_LO_K1_T01_END: ;;
;;
DW 0 ;; Size of xlat table - null table
;;
CPCOM_A_K1_LO_END: ;;
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: COMMON
;; STATE: Alpha Upper Case
;; KEYBOARD TYPES: All
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
DW CPCOM_A_K1_UP_END-$ ;; length of state section
DB ALPHA_UPPER ;; State ID
DW ANY_KB ;; Keyboard Type
DB -1,-1 ;; Buffer entry for error character
;;
DW CPCOM_A_UP_K1_T01_END-$ ;; Size of xlat table
DB STANDARD_TABLE ;; xlat options:
DB 26 ;; number of entries
DB 13H, 'P' ;; j
DB 14H, 'Y' ;; l
DB 15H, 'F' ;; m
DB 16H, 'G' ;; f
DB 17H, 'C' ;; p
DB 18H, 'R' ;; p
DB 19H, 'L' ;; p
DB 1EH, 'A' ;; o
DB 1FH, 'O' ;; r
DB 20H, 'E' ;; s
DB 21H, 'U' ;; u
DB 22H, 'I' ;; y
DB 23H, 'D' ;; b
DB 24H, 'H' ;; b
DB 25H, 'T' ;; b
DB 26H, 'N' ;; b
DB 27H, 'S' ;; b
DB 2DH, 'Q' ;; z
DB 2EH, 'J' ;; a
DB 2FH, 'K' ;; e
DB 30H, 'X' ;; h
DB 31H, 'B' ;; t
DB 32H, 'M' ;; d
DB 33H, 'W' ;; c
DB 34H, 'V' ;; k
DB 35H, 'Z' ;; k
CPCOM_A_UP_K1_T01_END: ;;
DW 0 ;; Size of xlat table - null table
;;
CPCOM_A_K1_UP_END: ;;
;;
DW 0 ;; LAST STATE
;;
COMMON_XLAT_END: ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CODE ENDS ;;
END ;;