DIRECTORY DeviceTypes; Devices: CEDAR DEFINITIONS = BEGIN Device: TYPE = DeviceTypes.Device; DeviceClass: TYPE = DeviceTypes.DeviceClass; DeviceState: TYPE = DeviceTypes.DeviceState; QuaClass: PROC [ref: REF] RETURNS [class: DeviceClass]; NameOfClass: PROC [class: DeviceClass] RETURNS [name: ATOM]; ClassOfDevice: PROC [device: Device] RETURNS [class: DeviceClass]; RegisterClass: PROC [class: DeviceClass, name: ATOM]; ClassFromName: PROC [name: ATOM] RETURNS [class: DeviceClass ¬ NIL]; StateOfDevice: PROC [device: Device] RETURNS [DeviceState]; END.  Devices.mesa Copyright Σ 1991, 1992 by Xerox Corporation. All rights reserved. Bier, November 6, 1991 1:18 pm PST Contents: Routines on devices and device classes (e.g., keyboards, mice, pens, etc.). Narrows ref to DeviceClass. Clients can't do this themselves because DeviceTypes.DeviceClass is an Opaque type. Returns NIL if ref is the wrong type. For keyboards and mice, this returns the state with all keys up. For pointing devices, the device begins at position [0,0] in 2D, [0,0,0] in 3D, etc. ΚV–(cedarcode) style•NewlineDelimiter ™codešœ ™ Kšœ Οeœ6™BKšœ"™"KšœV™VK™—šΟk ˜ Kšœ ˜ —K˜KšΟnœžœž œž˜"K˜Kšœžœ˜"Kšœ žœ˜,Kšœ žœ˜,K˜šŸœžœžœžœ˜7Kšœ—™—K™—KšŸ œžœžœžœ˜