-- File: KeyDefs.Mesa Modified by: Sandman, March 21, 1978 3:42 PM -- Copyright Xerox Corporation 1979, 1980 KeyDefs: DEFINITIONS = BEGIN updown: TYPE = {down, up}; KeyArray: TYPE = ARRAY [0..5) OF WORD; KeyBits: TYPE = MACHINE DEPENDENT RECORD [ blank: [0..377B], Keyset1, Keyset2, Keyset3, Keyset4, Keyset5: updown, Red, Blue, Yellow: updown, Five, Four, Six, E, Seven, D, U, V, Zero, K, Dash, P, Slash, BackSlash, LF, BS: updown, Three, Two, W, Q, S, A, Nine, I, X, O, L, Comma, Quote, RightBracket, Spare2, Spare1: updown, One, ESC, TAB, F, Ctrl, C, J, B, Z, LeftShift, Period, SemiColon, Return, Arrow, DEL, FL3: updown, R, T, G, Y, H, Eight, N, M, Lock, Space, LeftBracket, Equal, RightShift, Spare3, FL4, FR5: updown]; Keys: POINTER TO KeyBits = LOOPHOLE[177033B]; MouseButton: TYPE = { RedYellowBlue, RedBlue, RedYellow, Red, BlueYellow, Blue, Yellow, None}; MouseBits: TYPE = MACHINE DEPENDENT RECORD [ blank: [0..377B], -- Diablo, Versatec, etc. keyset: [0..37B], -- 0 => down, i.e. normal state is 37B buttons: MouseButton]; -- 0=> down, normal is 7B = MouseButton[None] Mouse: POINTER TO MouseBits = LOOPHOLE[Keys]; KeyName: TYPE = { x0, x1, x2, x3, x4, x5, x6, x7, Keyset1, Keyset2, Keyset3, Keyset4, Keyset5, Red, Blue, Yellow, Five, Four, Six, E, Seven, D, U, V, Zero, K, Dash, P, Slash, BackSlash, LF, BS, Three, Two, W, Q, S, A, Nine, I, X, O, L, Comma, Quote, RightBracket, Spare2, Spare1, One, ESC, TAB, F, Ctrl, C, J, B, Z, LeftShift, Period, SemiColon, Return, Arrow, DEL, FL3, R, T, G, Y, H, Eight, N, M, Lock, Space, LeftBracket, Equal, RightShift, Spare3, FL4, FR5}; -- Alto II names for some keys can be different FL1: KeyName = DEL; FL2: KeyName = LF; BW: KeyName = Spare1; FR1: KeyName = Spare3; FR2: KeyName = BackSlash; FR3: KeyName = Arrow; FR4: KeyName = Spare2; KeyItem: TYPE = RECORD [ Letter: BOOLEAN, ShiftCode: [0..177B], NormalCode: [0..377B]]; ChangeKey: PROCEDURE [key: KeyName, action: KeyItem] RETURNS [oldAction: KeyItem]; Keyboard: PROGRAM; KeyStreams: PROGRAM; END.