! .+ ! ! .identifier : $Id: Saturn.ad,v 4.1.1.1 2002/11/11 16:13:56 cibrario Exp $ ! .context : SATURN, Saturn CPU / HP48 emulator ! .title : $RCSfile: Saturn.ad,v $ ! .kind : Application's resource file ! .author : Ivan Cibrario B. ! .site : CSTV-CNR ! .creation : 7-Sep-2000 ! .keywords : * ! .description : ! ! .notes : ! $Log: Saturn.ad,v $ ! Revision 4.1.1.1 2002/11/11 16:13:56 cibrario ! Small screen support; preliminary ! ! Revision 4.1 2000/12/11 09:54:19 cibrario ! Public release. ! ! Revision 3.17 2000/11/23 16:56:22 cibrario ! Implemented sutil library and assorted bug fixes: ! - Put leading colons back into translation table entries related to ! main keyboard keys; the match scope was too broad and sometimes ! prevented the use of main keyboard's numeric keys. ! ! Revision 3.16 2000/11/21 16:33:42 cibrario ! Ultrix/IRIX support: ! - Removed all leading colons from translation table entries, to ignore ! standard modifiers when matching KeySyms. ! ! Revision 3.15 2000/11/15 13:59:13 cibrario ! GUI enhancements and assorted bug fixes: ! - Added default resources for new GUI elements ! - Explicit setting of deleteResponse to XmDO_NOTHING for popup shells ! ! Revision 3.14 2000/11/13 10:26:02 cibrario ! Implemented fast load/save; improved keyboard interface emulation at ! high emulated CPU speed: ! ! - Added baseTranslations for fsb widget; needed because default ! Motif VirtualBindings are disabled. ! ! Revision 3.13 2000/11/09 13:21:56 cibrario ! Revised to add file selection box GUI element, CPU halt/run ! requests and emulator's extended functions: ! ! - Added File Selection Box resources ! ! Revision 3.8 2000/10/23 13:10:38 cibrario ! Bug fix: ! Adjusted size of LCD display widget (all faceplates) ! ! Revision 3.7 2000/10/19 14:30:08 cibrario ! Minor updates: ! - disabled traversal on the emulated keyboard area, set default keyboard ! focus policy to XmEXPLICIT. This forces the focus to be on the LCD ! display. ! - resource 'translations' is no longer set here, 'baseTranslations' is ! set instead, so the user can augment/override it. ! - Alt/Shift_L/Right Shift keyboard shortcuts are now enabled on all faces ! - removed spurious (and useless) translation involving the Tab key. ! ! Revision 3.4 2000/09/27 10:11:00 cibrario ! Implemented preliminary support of HP39/40 faceplate; added resources for ! the 'hp40' face. ! ! Revision 3.2 2000/09/22 13:23:30 cibrario ! Implemented preliminary support of HP49 hw architecture: ! - Added resources for the 'hp49' face ! ! Revision 2.8 2000/09/19 12:53:05 cibrario ! Widened the scope of the resource specifier for keyboard shortcuts, ! in order to enable them on the whole surface of the application's ! window. ! ! Revision 2.2 2000/09/11 14:00:26 cibrario ! - Added shortcut for KP_0 key ! - Set default keyboardFocusPolicy to XmPOINTE ! ! Revision 2.1 2000/09/08 15:33:26 cibrario ! *** empty log message *** ! ! .- ! Suppress all OSF/Motif virtualBindings; they interfer with some (much needed) ! keyboard translations used by this application, notably those involving ! cursor keys. *defaultVirtualBindings: ! The default keyboard focus policy is XmEXPLICIT, but ! the emulated keyboard cannot be traversed; this forces the focus to be ! on the LCD display. There, Motif grabs less tranlations than elsewhere. *keyboardFocusPolicy: XmEXPLICIT *kbd*traversalOn: false ! Error Dialog resources *error_popup*deleteResponse: XmDO_NOTHING *error*fontList: *helvetica-medium-r-*-*-8-*,*symbol-*-*-*-*-8-*=S *error*dialogTitle: Attention, please... *error*okLabelString: Continue ! Set a bold foreground for the main message window *msg*foreground: red *msg*cursorPositionVisible: False *msg*fontList: *helvetica-medium-r-*-*-8-*,*symbol-*-*-*-*-8-*=S ! Destroy application when 'Close' is selected from mwm menu. *deleteResponse: XmDESTROY ! Main window; enable automatic scrolling *main.scrollingPolicy: XmAUTOMATIC ! Declare attachments of keyboard XmForm components, for all faces *kbd.XmForm.topAttachment: XmATTACH_POSITION *kbd.XmForm.bottomAttachment: XmATTACH_POSITION *kbd.XmForm.leftAttachment: XmATTACH_POSITION *kbd.XmForm.rightAttachment: XmATTACH_POSITION ! File Selection Box resources *fsb_popup*deleteResponse: XmDO_NOTHING *fsb*fontList: *helvetica-medium-r-*-*-8-* *fsb*XmTextField.baseTranslations: #override \n\ BackSpace: delete-previous-character() \n\ Delete: delete-next-character() \n\ Left: backward-character() \n\ Right: forward-character() ! ----------------------------------------------------------------------------- ! The following settings act on the hp48 face only ! Background color *hp48*background: gray45 ! XmRowColumn container settings; vertical layout, packed *hp48.numColumns: 1 *hp48.orientation: XmVERTICAL *hp48.packing: XmPACK_TIGHT ! Keyboard layout *hp48.nKeys: 49 *hp48.kbd.fractionBase: 1440 *hp48.kbd*fontList: *helvetica-*-r-*-*-10-*,*symbol-*-*-*-*-10-*=S *hp48.kbd*btn.fontList: *helvetica-*-r-*-*-12-*,*symbol-*-*-*-*-12-*=S *hp48.kbd*ul.foreground: dark violet *hp48.kbd*ur.foreground: dark green *hp48.kbd*ll.foreground: gray90 *hp48.kbd*lr.foreground: gray90 *hp48.kbd*btn.foreground: wheat *hp48.kbd*btn.shadowThickness: 1 ! Lcd screen colors and layout *hp48.frame*background: #cadd5c *hp48.frame*foreground: black *hp48*lcd.childType: XmFRAME_TITLE_CHILD *hp48*lcd.childHorizontalAlignment: XmALIGNMENT_CENTER *hp48*lcd.childVerticalAlignment: XmALIGNMENT_WIDGET_BOTTOM *hp48*lcd.resizePolicy: XmRESIZE_NONE *hp48*lcd.width: 272 *hp48*lcd.height: 156 ! Suppress all lower-left keyboard labels; the hp48 does not use them *hp48.kbd*ll.labelString: ! Resources for all keyboard keys ! First row *hp48.kbd.0.topPosition: 0 *hp48.kbd.0.bottomPosition: 160 *hp48.kbd.0.leftPosition: 0 *hp48.kbd.0.rightPosition: 240 *hp48.kbd.0.btn.labelString: A *hp48.kbd.0.ul.labelString: \ *hp48.kbd.0.ur.labelString: \ *hp48.kbd.0.lr.labelString: A *hp48.kbd.1.topPosition: 0 *hp48.kbd.1.bottomPosition: 160 *hp48.kbd.1.leftPosition: 240 *hp48.kbd.1.rightPosition: 480 *hp48.kbd.1.btn.labelString: B *hp48.kbd.1.ul.labelString: \ *hp48.kbd.1.ur.labelString: \ *hp48.kbd.1.lr.labelString: B *hp48.kbd.2.topPosition: 0 *hp48.kbd.2.bottomPosition: 160 *hp48.kbd.2.leftPosition: 480 *hp48.kbd.2.rightPosition: 720 *hp48.kbd.2.btn.labelString: C *hp48.kbd.2.ul.labelString: \ *hp48.kbd.2.ur.labelString: \ *hp48.kbd.2.lr.labelString: C *hp48.kbd.3.topPosition: 0 *hp48.kbd.3.bottomPosition: 160 *hp48.kbd.3.leftPosition: 720 *hp48.kbd.3.rightPosition: 960 *hp48.kbd.3.btn.labelString: D *hp48.kbd.3.ul.labelString: \ *hp48.kbd.3.ur.labelString: \ *hp48.kbd.3.lr.labelString: D *hp48.kbd.4.topPosition: 0 *hp48.kbd.4.bottomPosition: 160 *hp48.kbd.4.leftPosition: 960 *hp48.kbd.4.rightPosition: 1200 *hp48.kbd.4.btn.labelString: E *hp48.kbd.4.ul.labelString: \ *hp48.kbd.4.ur.labelString: \ *hp48.kbd.4.lr.labelString: E *hp48.kbd.5.topPosition: 0 *hp48.kbd.5.bottomPosition: 160 *hp48.kbd.5.leftPosition: 1200 *hp48.kbd.5.rightPosition: 1440 *hp48.kbd.5.btn.labelString: F *hp48.kbd.5.ul.labelString: \ *hp48.kbd.5.ur.labelString: \ *hp48.kbd.5.lr.labelString: F ! Second row *hp48.kbd.6.topPosition: 160 *hp48.kbd.6.bottomPosition: 320 *hp48.kbd.6.leftPosition: 0 *hp48.kbd.6.rightPosition: 240 *hp48.kbd.6.btn.labelString: MTH *hp48.kbd.6.ul.labelString: RAD *hp48.kbd.6.ur.labelString: POLAR *hp48.kbd.6.lr.labelString: G *hp48.kbd.7.topPosition: 160 *hp48.kbd.7.bottomPosition: 320 *hp48.kbd.7.leftPosition: 240 *hp48.kbd.7.rightPosition: 480 *hp48.kbd.7.btn.labelString: PRG *hp48.kbd.7.ul.labelString: \ *hp48.kbd.7.ur.labelString: CHARS *hp48.kbd.7.lr.labelString: H *hp48.kbd.8.topPosition: 160 *hp48.kbd.8.bottomPosition: 320 *hp48.kbd.8.leftPosition: 480 *hp48.kbd.8.rightPosition: 720 *hp48.kbd.8.btn.labelString: CST *hp48.kbd.8.ul.labelString: \ *hp48.kbd.8.ur.labelString: MODES *hp48.kbd.8.lr.labelString: I *hp48.kbd.9.topPosition: 160 *hp48.kbd.9.bottomPosition: 320 *hp48.kbd.9.leftPosition: 720 *hp48.kbd.9.rightPosition: 960 *hp48.kbd.9.btn.labelString: VAR *hp48.kbd.9.ul.labelString: \ *hp48.kbd.9.ur.labelString: MEMORY *hp48.kbd.9.lr.labelString: J *hp48.kbd.10.topPosition: 160 *hp48.kbd.10.bottomPosition: 320 *hp48.kbd.10.leftPosition: 960 *hp48.kbd.10.rightPosition: 1200 *hp48.kbd.10.btn.compoundString: #S\255 *hp48.kbd.10.ul.labelString: \ *hp48.kbd.10.ur.labelString: STACK *hp48.kbd.10.lr.labelString: K *hp48.kbd.11.topPosition: 160 *hp48.kbd.11.bottomPosition: 320 *hp48.kbd.11.leftPosition: 1200 *hp48.kbd.11.rightPosition: 1440 *hp48.kbd.11.btn.labelString: NXT *hp48.kbd.11.ul.labelString: PREV *hp48.kbd.11.ur.labelString: MENU *hp48.kbd.11.lr.labelString: L ! Third row *hp48.kbd.12.topPosition: 320 *hp48.kbd.12.bottomPosition: 480 *hp48.kbd.12.leftPosition: 0 *hp48.kbd.12.rightPosition: 240 *hp48.kbd.12.btn.labelString: ' *hp48.kbd.12.ul.labelString: UP *hp48.kbd.12.ur.labelString: HOME *hp48.kbd.12.lr.labelString: M *hp48.kbd.13.topPosition: 320 *hp48.kbd.13.bottomPosition: 480 *hp48.kbd.13.leftPosition: 240 *hp48.kbd.13.rightPosition: 480 *hp48.kbd.13.btn.labelString: STO *hp48.kbd.13.ul.labelString: DEF *hp48.kbd.13.ur.labelString: RCL *hp48.kbd.13.lr.labelString: N *hp48.kbd.14.topPosition: 320 *hp48.kbd.14.bottomPosition: 480 *hp48.kbd.14.leftPosition: 480 *hp48.kbd.14.rightPosition: 720 *hp48.kbd.14.btn.labelString: EVAL *hp48.kbd.14.ul.compoundString: #S\256# NUM *hp48.kbd.14.ur.labelString: UNDO *hp48.kbd.14.lr.labelString: O *hp48.kbd.15.topPosition: 320 *hp48.kbd.15.bottomPosition: 480 *hp48.kbd.15.leftPosition: 720 *hp48.kbd.15.rightPosition: 960 *hp48.kbd.15.btn.compoundString: #S\254 *hp48.kbd.15.ul.labelString: PICTURE *hp48.kbd.15.ur.labelString: \ *hp48.kbd.15.lr.labelString: P *hp48.kbd.16.topPosition: 320 *hp48.kbd.16.bottomPosition: 480 *hp48.kbd.16.leftPosition: 960 *hp48.kbd.16.rightPosition: 1200 *hp48.kbd.16.btn.compoundString: #S\257 *hp48.kbd.16.ul.labelString: VIEW *hp48.kbd.16.ur.labelString: \ *hp48.kbd.16.lr.labelString: Q *hp48.kbd.17.topPosition: 320 *hp48.kbd.17.bottomPosition: 480 *hp48.kbd.17.leftPosition: 1200 *hp48.kbd.17.rightPosition: 1440 *hp48.kbd.17.btn.compoundString: #S\256 *hp48.kbd.17.ul.labelString: SWAP *hp48.kbd.17.ur.labelString: \ *hp48.kbd.17.lr.labelString: R ! Fourth row *hp48.kbd.18.topPosition: 480 *hp48.kbd.18.bottomPosition: 640 *hp48.kbd.18.leftPosition: 0 *hp48.kbd.18.rightPosition: 240 *hp48.kbd.18.btn.labelString: SIN *hp48.kbd.18.ul.labelString: ASIN *hp48.kbd.18.ur.compoundString: #S\266 *hp48.kbd.18.lr.labelString: S *hp48.kbd.19.topPosition: 480 *hp48.kbd.19.bottomPosition: 640 *hp48.kbd.19.leftPosition: 240 *hp48.kbd.19.rightPosition: 480 *hp48.kbd.19.btn.labelString: COS *hp48.kbd.19.ul.labelString: ACOS *hp48.kbd.19.ur.compoundString: #S\362 *hp48.kbd.19.lr.labelString: T *hp48.kbd.20.topPosition: 480 *hp48.kbd.20.bottomPosition: 640 *hp48.kbd.20.leftPosition: 480 *hp48.kbd.20.rightPosition: 720 *hp48.kbd.20.btn.labelString: TAN *hp48.kbd.20.ul.labelString: ATAN *hp48.kbd.20.ur.compoundString: #S\123 *hp48.kbd.20.lr.labelString: U *hp48.kbd.21.topPosition: 480 *hp48.kbd.21.bottomPosition: 640 *hp48.kbd.21.leftPosition: 720 *hp48.kbd.21.rightPosition: 960 *hp48.kbd.21.btn.compoundString: #S\326# x *hp48.kbd.21.ul.labelString: x^2 *hp48.kbd.21.ur.compoundString: # x#S\326# y *hp48.kbd.21.lr.labelString: V *hp48.kbd.22.topPosition: 480 *hp48.kbd.22.bottomPosition: 640 *hp48.kbd.22.leftPosition: 960 *hp48.kbd.22.rightPosition: 1200 *hp48.kbd.22.btn.labelString: y^x *hp48.kbd.22.ul.labelString: 10^x *hp48.kbd.22.ur.labelString: LOG *hp48.kbd.22.lr.labelString: W *hp48.kbd.23.topPosition: 480 *hp48.kbd.23.bottomPosition: 640 *hp48.kbd.23.leftPosition: 1200 *hp48.kbd.23.rightPosition: 1440 *hp48.kbd.23.btn.labelString: 1/x *hp48.kbd.23.ul.labelString: e^x *hp48.kbd.23.ur.labelString: LN *hp48.kbd.23.lr.labelString: X ! Fifth row *hp48.kbd.24.topPosition: 640 *hp48.kbd.24.bottomPosition: 800 *hp48.kbd.24.leftPosition: 0 *hp48.kbd.24.rightPosition: 480 *hp48.kbd.24.btn.labelString: ENTER *hp48.kbd.24.ul.labelString: EQUATION *hp48.kbd.24.ur.labelString: MATRIX *hp48.kbd.24.lr.labelString: \ *hp48.kbd.25.topPosition: 640 *hp48.kbd.25.bottomPosition: 800 *hp48.kbd.25.leftPosition: 480 *hp48.kbd.25.rightPosition: 720 *hp48.kbd.25.btn.labelString: +/- *hp48.kbd.25.ul.labelString: EDIT *hp48.kbd.25.ur.labelString: CMD *hp48.kbd.25.lr.labelString: Y *hp48.kbd.26.topPosition: 640 *hp48.kbd.26.bottomPosition: 800 *hp48.kbd.26.leftPosition: 720 *hp48.kbd.26.rightPosition: 960 *hp48.kbd.26.btn.labelString: EEX *hp48.kbd.26.ul.labelString: PURG *hp48.kbd.26.ur.labelString: ARG *hp48.kbd.26.lr.labelString: Z *hp48.kbd.27.topPosition: 640 *hp48.kbd.27.bottomPosition: 800 *hp48.kbd.27.leftPosition: 960 *hp48.kbd.27.rightPosition: 1200 *hp48.kbd.27.btn.labelString: DEL *hp48.kbd.27.ul.labelString: CLEAR *hp48.kbd.27.ur.labelString: \ *hp48.kbd.27.lr.labelString: \ *hp48.kbd.28.topPosition: 640 *hp48.kbd.28.bottomPosition: 800 *hp48.kbd.28.leftPosition: 1200 *hp48.kbd.28.rightPosition: 1440 *hp48.kbd.28.btn.compoundString: #S\334 *hp48.kbd.28.ul.labelString: DROP *hp48.kbd.28.ur.labelString: \ *hp48.kbd.28.lr.labelString: \ ! Sixth row *hp48.kbd.29.topPosition: 800 *hp48.kbd.29.bottomPosition: 960 *hp48.kbd.29.leftPosition: 0 *hp48.kbd.29.rightPosition: 240 *hp48.kbd.29.btn.compoundString: #Sa *hp48.kbd.29.ul.labelString: USER *hp48.kbd.29.ur.labelString: ENTRY *hp48.kbd.29.lr.labelString: \ *hp48.kbd.30*background: gray60 *hp48.kbd.30.topPosition: 800 *hp48.kbd.30.bottomPosition: 960 *hp48.kbd.30.leftPosition: 240 *hp48.kbd.30.rightPosition: 540 *hp48.kbd.30.btn.labelString: 7 *hp48.kbd.30.ul.labelString: \ *hp48.kbd.30.ur.labelString: SOLVE *hp48.kbd.30.lr.labelString: \ *hp48.kbd.31*background: gray60 *hp48.kbd.31.topPosition: 800 *hp48.kbd.31.bottomPosition: 960 *hp48.kbd.31.leftPosition: 540 *hp48.kbd.31.rightPosition: 840 *hp48.kbd.31.btn.labelString: 8 *hp48.kbd.31.ul.labelString: \ *hp48.kbd.31.ur.labelString: PLOT *hp48.kbd.31.lr.labelString: \ *hp48.kbd.32*background: gray60 *hp48.kbd.32.topPosition: 800 *hp48.kbd.32.bottomPosition: 960 *hp48.kbd.32.leftPosition: 840 *hp48.kbd.32.rightPosition: 1140 *hp48.kbd.32.btn.labelString: 9 *hp48.kbd.32.ul.labelString: \ *hp48.kbd.32.ur.labelString: SYMBOLIC *hp48.kbd.32.lr.labelString: \ *hp48.kbd.33.topPosition: 800 *hp48.kbd.33.bottomPosition: 960 *hp48.kbd.33.leftPosition: 1140 *hp48.kbd.33.rightPosition: 1440 *hp48.kbd.33.btn.labelString: / *hp48.kbd.33.ul.labelString: () *hp48.kbd.33.ur.labelString: # *hp48.kbd.33.lr.labelString: \ ! Seventh row *hp48.kbd.34.topPosition: 960 *hp48.kbd.34.bottomPosition: 1120 *hp48.kbd.34.leftPosition: 0 *hp48.kbd.34.rightPosition: 240 *hp48.kbd.34.btn.background: dark violet *hp48.kbd.34.btn.foreground: black *hp48.kbd.34.btn.compoundString: #S\334 *hp48.kbd.34.ul.labelString: \ *hp48.kbd.34.ur.labelString: \ *hp48.kbd.34.lr.labelString: \ *hp48.kbd.35*background: gray60 *hp48.kbd.35.topPosition: 960 *hp48.kbd.35.bottomPosition: 1120 *hp48.kbd.35.leftPosition: 240 *hp48.kbd.35.rightPosition: 540 *hp48.kbd.35.btn.labelString: 4 *hp48.kbd.35.ul.labelString: \ *hp48.kbd.35.ur.labelString: TIME *hp48.kbd.35.lr.labelString: \ *hp48.kbd.36*background: gray60 *hp48.kbd.36.topPosition: 960 *hp48.kbd.36.bottomPosition: 1120 *hp48.kbd.36.leftPosition: 540 *hp48.kbd.36.rightPosition: 840 *hp48.kbd.36.btn.labelString: 5 *hp48.kbd.36.ul.labelString: \ *hp48.kbd.36.ur.labelString: STAT *hp48.kbd.36.lr.labelString: \ *hp48.kbd.37*background: gray60 *hp48.kbd.37.topPosition: 960 *hp48.kbd.37.bottomPosition: 1120 *hp48.kbd.37.leftPosition: 840 *hp48.kbd.37.rightPosition: 1140 *hp48.kbd.37.btn.labelString: 6 *hp48.kbd.37.ul.labelString: \ *hp48.kbd.37.ur.labelString: UNITS *hp48.kbd.37.lr.labelString: \ *hp48.kbd.38.topPosition: 960 *hp48.kbd.38.bottomPosition: 1120 *hp48.kbd.38.leftPosition: 1140 *hp48.kbd.38.rightPosition: 1440 *hp48.kbd.38.btn.compoundString: #S\264 *hp48.kbd.38.ul.labelString: [] *hp48.kbd.38.ur.labelString: _ *hp48.kbd.38.lr.labelString: \ ! Eigth row *hp48.kbd.39.topPosition: 1120 *hp48.kbd.39.bottomPosition: 1280 *hp48.kbd.39.leftPosition: 0 *hp48.kbd.39.rightPosition: 240 *hp48.kbd.39.btn.background: dark green *hp48.kbd.39.btn.foreground: black *hp48.kbd.39.btn.compoundString: #S\336 *hp48.kbd.39.ul.labelString: \ *hp48.kbd.39.ur.labelString: \ *hp48.kbd.39.lr.labelString: \ *hp48.kbd.40*background: gray60 *hp48.kbd.40.topPosition: 1120 *hp48.kbd.40.bottomPosition: 1280 *hp48.kbd.40.leftPosition: 240 *hp48.kbd.40.rightPosition: 540 *hp48.kbd.40.btn.labelString: 1 *hp48.kbd.40.ul.labelString: \ *hp48.kbd.40.ur.labelString: I/O *hp48.kbd.40.lr.labelString: \ *hp48.kbd.41*background: gray60 *hp48.kbd.41.topPosition: 1120 *hp48.kbd.41.bottomPosition: 1280 *hp48.kbd.41.leftPosition: 540 *hp48.kbd.41.rightPosition: 840 *hp48.kbd.41.btn.labelString: 2 *hp48.kbd.41.ul.labelString: \ *hp48.kbd.41.ur.labelString: LIBRARY *hp48.kbd.41.lr.labelString: \ *hp48.kbd.42*background: gray60 *hp48.kbd.42.topPosition: 1120 *hp48.kbd.42.bottomPosition: 1280 *hp48.kbd.42.leftPosition: 840 *hp48.kbd.42.rightPosition: 1140 *hp48.kbd.42.btn.labelString: 3 *hp48.kbd.42.ul.labelString: \ *hp48.kbd.42.ur.labelString: EQ LIB *hp48.kbd.42.lr.labelString: \ *hp48.kbd.43.topPosition: 1120 *hp48.kbd.43.bottomPosition: 1280 *hp48.kbd.43.leftPosition: 1140 *hp48.kbd.43.rightPosition: 1440 *hp48.kbd.43.btn.labelString: - *hp48.kbd.43.ul.labelString: <<>> *hp48.kbd.43.ur.labelString: "" *hp48.kbd.43.lr.labelString: \ ! Ninth row *hp48.kbd.44.topPosition: 1280 *hp48.kbd.44.bottomPosition: 1440 *hp48.kbd.44.leftPosition: 0 *hp48.kbd.44.rightPosition: 240 *hp48.kbd.44.btn.labelString: ON *hp48.kbd.44.ul.labelString: CONT *hp48.kbd.44.ur.labelString: OFF *hp48.kbd.44.lr.labelString: CANCEL *hp48.kbd.45.topPosition: 1280 *hp48.kbd.45.bottomPosition: 1440 *hp48.kbd.45.leftPosition: 240 *hp48.kbd.45.rightPosition: 540 *hp48.kbd.45.btn.labelString: 0 *hp48.kbd.45.ul.labelString: = *hp48.kbd.45.ur.compoundString: #S\256 *hp48.kbd.45.lr.labelString: \ *hp48.kbd.46.topPosition: 1280 *hp48.kbd.46.bottomPosition: 1440 *hp48.kbd.46.leftPosition: 540 *hp48.kbd.46.rightPosition: 840 *hp48.kbd.46.btn.labelString: . *hp48.kbd.46.ul.labelString: , *hp48.kbd.46.ur.compoundString: #S\277 *hp48.kbd.46.lr.labelString: \ *hp48.kbd.47.topPosition: 1280 *hp48.kbd.47.bottomPosition: 1440 *hp48.kbd.47.leftPosition: 840 *hp48.kbd.47.rightPosition: 1140 *hp48.kbd.47.btn.labelString: SPC *hp48.kbd.47.ul.compoundString: #Sp *hp48.kbd.47.ur.compoundString: #S\320 *hp48.kbd.47.lr.labelString: \ *hp48.kbd.48.topPosition: 1280 *hp48.kbd.48.bottomPosition: 1440 *hp48.kbd.48.leftPosition: 1140 *hp48.kbd.48.rightPosition: 1440 *hp48.kbd.48.btn.labelString: + *hp48.kbd.48.ul.labelString: {} *hp48.kbd.48.ur.labelString: :: *hp48.kbd.48.lr.labelString: \ ! inOut codes for all keys *hp48.kbd.0.btn.inOut: 1/10 *hp48.kbd.1.btn.inOut: 8/10 *hp48.kbd.2.btn.inOut: 8/08 *hp48.kbd.3.btn.inOut: 8/04 *hp48.kbd.4.btn.inOut: 8/02 *hp48.kbd.5.btn.inOut: 8/01 *hp48.kbd.6.btn.inOut: 2/10 *hp48.kbd.7.btn.inOut: 7/10 *hp48.kbd.8.btn.inOut: 7/08 *hp48.kbd.9.btn.inOut: 7/04 *hp48.kbd.10.btn.inOut: 7/02 *hp48.kbd.11.btn.inOut: 7/01 *hp48.kbd.12.btn.inOut: 0/10 *hp48.kbd.13.btn.inOut: 6/10 *hp48.kbd.14.btn.inOut: 6/08 *hp48.kbd.15.btn.inOut: 6/04 *hp48.kbd.16.btn.inOut: 6/02 *hp48.kbd.17.btn.inOut: 6/01 *hp48.kbd.18.btn.inOut: 3/10 *hp48.kbd.19.btn.inOut: 5/10 *hp48.kbd.20.btn.inOut: 5/08 *hp48.kbd.21.btn.inOut: 5/04 *hp48.kbd.22.btn.inOut: 5/02 *hp48.kbd.23.btn.inOut: 5/01 *hp48.kbd.24.btn.inOut: 4/10 *hp48.kbd.25.btn.inOut: 4/08 *hp48.kbd.26.btn.inOut: 4/04 *hp48.kbd.27.btn.inOut: 4/02 *hp48.kbd.28.btn.inOut: 4/01 *hp48.kbd.29.btn.inOut: 3/20 *hp48.kbd.30.btn.inOut: 3/08 *hp48.kbd.31.btn.inOut: 3/04 *hp48.kbd.32.btn.inOut: 3/02 *hp48.kbd.33.btn.inOut: 3/01 *hp48.kbd.34.btn.inOut: 2/20 *hp48.kbd.35.btn.inOut: 2/08 *hp48.kbd.36.btn.inOut: 2/04 *hp48.kbd.37.btn.inOut: 2/02 *hp48.kbd.38.btn.inOut: 2/01 *hp48.kbd.39.btn.inOut: 1/20 *hp48.kbd.40.btn.inOut: 1/08 *hp48.kbd.41.btn.inOut: 1/04 *hp48.kbd.42.btn.inOut: 1/02 *hp48.kbd.43.btn.inOut: 1/01 *hp48.kbd.44.btn.inOut: * *hp48.kbd.45.btn.inOut: 0/08 *hp48.kbd.46.btn.inOut: 0/04 *hp48.kbd.47.btn.inOut: 0/02 *hp48.kbd.48.btn.inOut: 0/01 ! Shortcut keyboard translations associated with the lcd display widget. ! They must be listed in more-to-less-specific order; so, for example, ! translations involving BackSpace should *before* those involving Delete *hp48*baseTranslations: #override \n\ :apostrophe: kbdKeyPress(0/10) \n\ :apostrophe: kbdKeyRelease(0/10) \n\ :BackSpace: kbdKeyPress(4/01) \n\ :BackSpace: kbdKeyRelease(4/01) \n\ :Delete: kbdKeyPress(4/02) \n\ :Delete: kbdKeyRelease(4/02) \n\ :slash: kbdKeyPress(3/01) \n\ :slash: kbdKeyRelease(3/01) \n\ :asterisk: kbdKeyPress(2/01) \n\ :asterisk: kbdKeyRelease(2/01) \n\ :minus: kbdKeyPress(1/01) \n\ :minus: kbdKeyRelease(1/01) \n\ :period: kbdKeyPress(0/04) \n\ :period: kbdKeyRelease(0/04) \n\ :plus: kbdKeyPress(0/01) \n\ :plus: kbdKeyRelease(0/01) \n\ F1: kbdKeyPress(1/10) \n\ F1: kbdKeyRelease(1/10) \n\ F2: kbdKeyPress(8/10) \n\ F2: kbdKeyRelease(8/10) \n\ F3: kbdKeyPress(8/08) \n\ F3: kbdKeyRelease(8/08) \n\ F4: kbdKeyPress(8/04) \n\ F4: kbdKeyRelease(8/04) \n\ F5: kbdKeyPress(8/02) \n\ F5: kbdKeyRelease(8/02) \n\ F6: kbdKeyPress(8/01) \n\ F6: kbdKeyRelease(8/01) \n\ A: kbdKeyPress(1/10) \n\ A: kbdKeyRelease(1/10) \n\ B: kbdKeyPress(8/10) \n\ B: kbdKeyRelease(8/10) \n\ C: kbdKeyPress(8/08) \n\ C: kbdKeyRelease(8/08) \n\ D: kbdKeyPress(8/04) \n\ D: kbdKeyRelease(8/04) \n\ E: kbdKeyPress(8/02) \n\ E: kbdKeyRelease(8/02) \n\ F: kbdKeyPress(8/01) \n\ F: kbdKeyRelease(8/01) \n\ G: kbdKeyPress(2/10) \n\ G: kbdKeyRelease(2/10) \n\ H: kbdKeyPress(7/10) \n\ H: kbdKeyRelease(7/10) \n\ I: kbdKeyPress(7/08) \n\ I: kbdKeyRelease(7/08) \n\ J: kbdKeyPress(7/04) \n\ J: kbdKeyRelease(7/04) \n\ K: kbdKeyPress(7/02) \n\ Up: kbdKeyPress(7/02) \n\ K: kbdKeyRelease(7/02) \n\ Up: kbdKeyRelease(7/02) \n\ L: kbdKeyPress(7/01) \n\ L: kbdKeyRelease(7/01) \n\ M: kbdKeyPress(0/10) \n\ M: kbdKeyRelease(0/10) \n\ N: kbdKeyPress(6/10) \n\ N: kbdKeyRelease(6/10) \n\ O: kbdKeyPress(6/08) \n\ O: kbdKeyRelease(6/08) \n\ P: kbdKeyPress(6/04) \n\ Left: kbdKeyPress(6/04) \n\ P: kbdKeyRelease(6/04) \n\ Left: kbdKeyRelease(6/04) \n\ Q: kbdKeyPress(6/02) \n\ Down: kbdKeyPress(6/02) \n\ Q: kbdKeyRelease(6/02) \n\ Down: kbdKeyRelease(6/02) \n\ R: kbdKeyPress(6/01) \n\ Right: kbdKeyPress(6/01) \n\ R: kbdKeyRelease(6/01) \n\ Right: kbdKeyRelease(6/01) \n\ S: kbdKeyPress(3/10) \n\ S: kbdKeyRelease(3/10) \n\ T: kbdKeyPress(5/10) \n\ T: kbdKeyRelease(5/10) \n\ U: kbdKeyPress(5/08) \n\ U: kbdKeyRelease(5/08) \n\ V: kbdKeyPress(5/04) \n\ V: kbdKeyRelease(5/04) \n\ W: kbdKeyPress(5/02) \n\ W: kbdKeyRelease(5/02) \n\ X: kbdKeyPress(5/01) \n\ X: kbdKeyRelease(5/01) \n\ Return: kbdKeyPress(4/10) \n\ Return: kbdKeyRelease(4/10) \n\ KP_Enter: kbdKeyPress(4/10) \n\ KP_Enter: kbdKeyRelease(4/10) \n\ Y: kbdKeyPress(4/08) \n\ Y: kbdKeyRelease(4/08) \n\ Z: kbdKeyPress(4/04) \n\ Z: kbdKeyRelease(4/04) \n\ F10: kbdKeyPress(3/20) \n\ F10: kbdKeyRelease(3/20) \n\ 7: kbdKeyPress(3/08) \n\ 7: kbdKeyRelease(3/08) \n\ KP_7: kbdKeyPress(3/08) \n\ KP_7: kbdKeyRelease(3/08) \n\ 8: kbdKeyPress(3/04) \n\ 8: kbdKeyRelease(3/04) \n\ KP_8: kbdKeyPress(3/04) \n\ KP_8: kbdKeyRelease(3/04) \n\ 9: kbdKeyPress(3/02) \n\ 9: kbdKeyRelease(3/02) \n\ KP_9: kbdKeyPress(3/02) \n\ KP_9: kbdKeyRelease(3/02) \n\ F11: kbdKeyPress(2/20) \n\ F11: kbdKeyRelease(2/20) \n\ 4: kbdKeyPress(2/08) \n\ 4: kbdKeyRelease(2/08) \n\ KP_4: kbdKeyPress(2/08) \n\ KP_4: kbdKeyRelease(2/08) \n\ 5: kbdKeyPress(2/04) \n\ 5: kbdKeyRelease(2/04) \n\ KP_5: kbdKeyPress(2/04) \n\ KP_5: kbdKeyRelease(2/04) \n\ 6: kbdKeyPress(2/02) \n\ 6: kbdKeyRelease(2/02) \n\ KP_6: kbdKeyPress(2/02) \n\ KP_6: kbdKeyRelease(2/02) \n\ F12: kbdKeyPress(1/20) \n\ F12: kbdKeyRelease(1/20) \n\ 1: kbdKeyPress(1/08) \n\ 1: kbdKeyRelease(1/08) \n\ KP_1: kbdKeyPress(1/08) \n\ KP_1: kbdKeyRelease(1/08) \n\ 2: kbdKeyPress(1/04) \n\ 2: kbdKeyRelease(1/04) \n\ KP_2: kbdKeyPress(1/04) \n\ KP_2: kbdKeyRelease(1/04) \n\ 3: kbdKeyPress(1/02) \n\ 3: kbdKeyRelease(1/02) \n\ KP_3: kbdKeyPress(1/02) \n\ KP_3: kbdKeyRelease(1/02) \n\ Escape: kbdKeyPress(*) \n\ Escape: kbdKeyRelease(*) \n\ 0: kbdKeyPress(0/08) \n\ 0: kbdKeyRelease(0/08) \n\ KP_0: kbdKeyPress(0/08) \n\ KP_0: kbdKeyRelease(0/08) \n\ space: kbdKeyPress(0/02) \n\ space: kbdKeyRelease(0/02) \n\ KP_Add: kbdKeyPress(0/01) \n\ KP_Add: kbdKeyRelease(0/01) \n\ KP_Subtract: kbdKeyPress(1/01) \n\ KP_Subtract: kbdKeyRelease(1/01) \n\ KP_Multiply: kbdKeyPress(2/01) \n\ KP_Multiply: kbdKeyRelease(2/01) \n\ KP_Divide: kbdKeyPress(3/01) \n\ KP_Divide: kbdKeyRelease(3/01) \n\ KP_Decimal: kbdKeyPress(0/04) \n\ KP_Decimal: kbdKeyRelease(0/04) \n\ Alt_L: kbdKeyPress(3/20) \n\ Alt_L: kbdKeyRelease(3/20) \n\ Alt_R: kbdKeyPress(3/20) \n\ Alt_R: kbdKeyRelease(3/20) \n\ Shift_L: kbdKeyPress(2/20) \n\ Shift_L: kbdKeyRelease(2/20) \n\ Shift_R: kbdKeyPress(1/20) \n\ Shift_R: kbdKeyRelease(1/20) ! ----------------------------------------------------------------------------- ! The following settings act on the hp49 face only ! 4.1.1.1: ... and are an experiment for very small displays *hp49*fillOnSelect: true *hp49*highlightThickness: 0 *hp49*shadowThickness: 0 *hp49*marginWidth: 0 *hp49.kbd*ul.marginWidth: 1 *hp49.kbd*lr.marginWidth: 1 *hp49.kbd*XmForm.marginWidth: 1 *hp49*marginHeight: 0 *hp49*XmToggleButton.marginHeight: -2 *hp49*XmLabel.marginHeight: -1 *hp49*msg.marginHeight: 0 ! Background color *hp49*background: light sky blue ! XmRowColumn container settings; vertical layout, packed *hp49.numColumns: 1 *hp49.orientation: XmVERTICAL *hp49.packing: XmPACK_TIGHT ! Keyboard layout *hp49.nKeys: 51 *hp49.kbd.fractionBase: 1124 *hp49.kbd*fontList: *helvetica-medium-r-*-*-8-*,*symbol-*-*-*-*-8-*=S *hp49.kbd*btn.fontList: *helvetica-medium-r-*-*-8-*,*symbol-*-*-*-*-8-*=S *hp49.kbd*ul.foreground: midnight blue *hp49.kbd*ur.foreground: red *hp49.kbd*lr.foreground: sea green *hp49.kbd*btn.background: gray45 *hp49.kbd*btn.foreground: gray90 *hp49.kbd*btn.shadowThickness: 0 ! Lcd screen colors and layout *hp49.frame*background: gray20 *hp49.frame.lcd.background: gray80 *hp49*lcd.foreground: black *hp49*lcd.childType: XmFRAME_TITLE_CHILD *hp49*lcd.childHorizontalAlignment: XmALIGNMENT_CENTER *hp49*lcd.childVerticalAlignment: XmALIGNMENT_WIDGET_BOTTOM *hp49*lcd.resizePolicy: XmRESIZE_NONE *hp49*lcd.width: 133 *hp49*lcd.height: 80 ! Suppress all lower-left keyboard labels; the hp49 does not use them *hp49.kbd*ll.labelString: ! Resources for all keyboard keys ! First row *hp49.kbd.0.topPosition: 0 *hp49.kbd.0.bottomPosition: 130 *hp49.kbd.0.leftPosition: 0 *hp49.kbd.0.rightPosition: 186 *hp49.kbd.0.btn.background: gray30 *hp49.kbd.0.btn.labelString: F1 *hp49.kbd.0.ul.labelString: Y= *hp49.kbd.0.ur.labelString: \ *hp49.kbd.0.lr.labelString: A *hp49.kbd.1.topPosition: 0 *hp49.kbd.1.bottomPosition: 130 *hp49.kbd.1.leftPosition: 186 *hp49.kbd.1.rightPosition: 372 *hp49.kbd.1.btn.background: gray30 *hp49.kbd.1.btn.labelString: F2 *hp49.kbd.1.ul.labelString: WIN *hp49.kbd.1.ur.labelString: \ *hp49.kbd.1.lr.labelString: B *hp49.kbd.2.topPosition: 0 *hp49.kbd.2.bottomPosition: 130 *hp49.kbd.2.leftPosition: 372 *hp49.kbd.2.rightPosition: 558 *hp49.kbd.2.btn.background: gray30 *hp49.kbd.2.btn.labelString: F3 *hp49.kbd.2.ul.labelString: GRAPH *hp49.kbd.2.ur.labelString: \ *hp49.kbd.2.lr.labelString: C *hp49.kbd.3.topPosition: 0 *hp49.kbd.3.bottomPosition: 130 *hp49.kbd.3.leftPosition: 558 *hp49.kbd.3.rightPosition: 744 *hp49.kbd.3.btn.background: gray30 *hp49.kbd.3.btn.labelString: F4 *hp49.kbd.3.ul.labelString: 2D/3D *hp49.kbd.3.ur.labelString: \ *hp49.kbd.3.lr.labelString: D *hp49.kbd.4.topPosition: 0 *hp49.kbd.4.bottomPosition: 130 *hp49.kbd.4.leftPosition: 744 *hp49.kbd.4.rightPosition: 930 *hp49.kbd.4.btn.background: gray30 *hp49.kbd.4.btn.labelString: F5 *hp49.kbd.4.ul.labelString: TBLSET *hp49.kbd.4.ur.labelString: \ *hp49.kbd.4.lr.labelString: E *hp49.kbd.5.topPosition: 0 *hp49.kbd.5.bottomPosition: 130 *hp49.kbd.5.leftPosition: 930 *hp49.kbd.5.rightPosition: 1116 *hp49.kbd.5.btn.background: gray30 *hp49.kbd.5.btn.labelString: F6 *hp49.kbd.5.ul.labelString: TABLE *hp49.kbd.5.ur.labelString: \ *hp49.kbd.5.lr.labelString: F ! Second row/third row *hp49.kbd.6.topPosition: 130 *hp49.kbd.6.bottomPosition: 260 *hp49.kbd.6.leftPosition: 0 *hp49.kbd.6.rightPosition: 223 *hp49.kbd.6.btn.labelString: APPS *hp49.kbd.6.ul.labelString: FLS *hp49.kbd.6.ur.labelString: BEG *hp49.kbd.6.lr.labelString: G *hp49.kbd.7.topPosition: 130 *hp49.kbd.7.bottomPosition: 260 *hp49.kbd.7.leftPosition: 223 *hp49.kbd.7.rightPosition: 446 *hp49.kbd.7.btn.labelString: MODE *hp49.kbd.7.ul.labelString: CST *hp49.kbd.7.ur.labelString: END *hp49.kbd.7.lr.labelString: H *hp49.kbd.8.topPosition: 130 *hp49.kbd.8.bottomPosition: 260 *hp49.kbd.8.leftPosition: 446 *hp49.kbd.8.rightPosition: 669 *hp49.kbd.8.btn.labelString: TOOL *hp49.kbd.8.ul.labelString: i *hp49.kbd.8.ur.labelString: | *hp49.kbd.8.lr.labelString: I *hp49.kbd.9.topPosition: 260 *hp49.kbd.9.bottomPosition: 390 *hp49.kbd.9.leftPosition: 0 *hp49.kbd.9.rightPosition: 223 *hp49.kbd.9.btn.labelString: VAR *hp49.kbd.9.ul.labelString: UP *hp49.kbd.9.ur.labelString: CPY *hp49.kbd.9.lr.labelString: J *hp49.kbd.10.topPosition: 260 *hp49.kbd.10.bottomPosition: 390 *hp49.kbd.10.leftPosition: 223 *hp49.kbd.10.rightPosition: 446 *hp49.kbd.10.btn.compoundString: STO#S\336 *hp49.kbd.10.ul.labelString: RCL *hp49.kbd.10.ur.labelString: CUT *hp49.kbd.10.lr.labelString: K *hp49.kbd.11.topPosition: 260 *hp49.kbd.11.bottomPosition: 390 *hp49.kbd.11.leftPosition: 446 *hp49.kbd.11.rightPosition: 669 *hp49.kbd.11.btn.labelString: NXT *hp49.kbd.11.ul.labelString: PRV *hp49.kbd.11.ur.labelString: PST *hp49.kbd.11.lr.labelString: L ! Cursor keys *hp49.kbd.12.topPosition: 130 *hp49.kbd.12.bottomPosition: 217 *hp49.kbd.12.leftPosition: 780 *hp49.kbd.12.rightPosition: 1003 *hp49.kbd.12.btn.compoundString: #S\255 *hp49.kbd.12.ul.labelString: *hp49.kbd.12.ur.labelString: *hp49.kbd.12.lr.labelString: *hp49*kbd.12*marginHeight: 0 *hp49.kbd.13.topPosition: 217 *hp49.kbd.13.bottomPosition: 303 *hp49.kbd.13.leftPosition: 669 *hp49.kbd.13.rightPosition: 892 *hp49.kbd.13.btn.compoundString: #S\254 *hp49.kbd.13.ul.labelString: *hp49.kbd.13.ur.labelString: *hp49.kbd.13.lr.labelString: *hp49*kbd.13*marginHeight: 0 *hp49.kbd.14.topPosition: 217 *hp49.kbd.14.bottomPosition: 303 *hp49.kbd.14.leftPosition: 892 *hp49.kbd.14.rightPosition: 1115 *hp49.kbd.14.btn.compoundString: #S\256 *hp49.kbd.14.ul.labelString: *hp49.kbd.14.ur.labelString: *hp49.kbd.14.lr.labelString: *hp49*kbd.14*marginHeight: 0 *hp49.kbd.15.topPosition: 303 *hp49.kbd.15.bottomPosition: 390 *hp49.kbd.15.leftPosition: 780 *hp49.kbd.15.rightPosition: 1003 *hp49.kbd.15.btn.compoundString: #S\257 *hp49.kbd.15.ul.labelString: *hp49.kbd.15.ur.labelString: *hp49.kbd.15.lr.labelString: *hp49*kbd.15*marginHeight: 0 ! Fourth row *hp49.kbd.16.topPosition: 390 *hp49.kbd.16.bottomPosition: 520 *hp49.kbd.16.leftPosition: 0 *hp49.kbd.16.rightPosition: 223 *hp49.kbd.16.btn.labelString: HIST *hp49.kbd.16.ul.labelString: CMD *hp49.kbd.16.ur.labelString: UND *hp49.kbd.16.lr.labelString: M *hp49.kbd.17.topPosition: 390 *hp49.kbd.17.bottomPosition: 520 *hp49.kbd.17.leftPosition: 223 *hp49.kbd.17.rightPosition: 446 *hp49.kbd.17.btn.labelString: CAT *hp49.kbd.17.ul.labelString: PRG *hp49.kbd.17.ur.labelString: CHR *hp49.kbd.17.lr.labelString: N *hp49.kbd.18.topPosition: 390 *hp49.kbd.18.bottomPosition: 520 *hp49.kbd.18.leftPosition: 446 *hp49.kbd.18.rightPosition: 669 *hp49.kbd.18.btn.labelString: EQW *hp49.kbd.18.ul.labelString: MTW *hp49.kbd.18.ur.labelString: ' *hp49.kbd.18.lr.labelString: O *hp49.kbd.19.topPosition: 390 *hp49.kbd.19.bottomPosition: 520 *hp49.kbd.19.leftPosition: 669 *hp49.kbd.19.rightPosition: 892 *hp49.kbd.19.btn.labelString: SYMB *hp49.kbd.19.ul.labelString: MTH *hp49.kbd.19.ur.labelString: EVL *hp49.kbd.19.lr.labelString: P *hp49.kbd.20.topPosition: 390 *hp49.kbd.20.bottomPosition: 520 *hp49.kbd.20.leftPosition: 892 *hp49.kbd.20.rightPosition: 1115 *hp49.kbd.20.btn.compoundString: #S\334 *hp49.kbd.20.ul.labelString: DEL *hp49.kbd.20.ur.labelString: CLR *hp49.kbd.20.lr.labelString: \ ! Fifth row *hp49.kbd.21.topPosition: 520 *hp49.kbd.21.bottomPosition: 650 *hp49.kbd.21.leftPosition: 0 *hp49.kbd.21.rightPosition: 223 *hp49.kbd.21.btn.labelString: Y^X *hp49.kbd.21.ul.labelString: e^x *hp49.kbd.21.ur.labelString: LN *hp49.kbd.21.lr.labelString: Q *hp49.kbd.22.topPosition: 520 *hp49.kbd.22.bottomPosition: 650 *hp49.kbd.22.leftPosition: 223 *hp49.kbd.22.rightPosition: 446 *hp49.kbd.22.btn.compoundString: #S\326# X *hp49.kbd.22.ul.labelString: x^2 *hp49.kbd.22.ur.compoundString: x#S\326# y *hp49.kbd.22.lr.labelString: R *hp49.kbd.23.topPosition: 520 *hp49.kbd.23.bottomPosition: 650 *hp49.kbd.23.leftPosition: 446 *hp49.kbd.23.rightPosition: 669 *hp49.kbd.23.btn.labelString: SIN *hp49.kbd.23.ul.labelString: ASN *hp49.kbd.23.ur.compoundString: #SS *hp49.kbd.23.lr.labelString: S *hp49.kbd.24.topPosition: 520 *hp49.kbd.24.bottomPosition: 650 *hp49.kbd.24.leftPosition: 669 *hp49.kbd.24.rightPosition: 892 *hp49.kbd.24.btn.labelString: COS *hp49.kbd.24.ul.labelString: ACS *hp49.kbd.24.ur.compoundString: #S\266 *hp49.kbd.24.lr.labelString: T *hp49.kbd.25.topPosition: 520 *hp49.kbd.25.bottomPosition: 650 *hp49.kbd.25.leftPosition: 892 *hp49.kbd.25.rightPosition: 1115 *hp49.kbd.25.btn.labelString: TAN *hp49.kbd.25.ul.labelString: ATN *hp49.kbd.25.ur.compoundString: #S\362 *hp49.kbd.25.lr.labelString: U ! Sixth row *hp49.kbd.26.topPosition: 650 *hp49.kbd.26.bottomPosition: 780 *hp49.kbd.26.leftPosition: 0 *hp49.kbd.26.rightPosition: 223 *hp49.kbd.26.btn.labelString: EEX *hp49.kbd.26.ul.labelString: 10^x *hp49.kbd.26.ur.labelString: LOG *hp49.kbd.26.lr.labelString: V *hp49.kbd.27.topPosition: 650 *hp49.kbd.27.bottomPosition: 780 *hp49.kbd.27.leftPosition: 223 *hp49.kbd.27.rightPosition: 446 *hp49.kbd.27.btn.labelString: +/- *hp49.kbd.27.ul.compoundString: #S\271 *hp49.kbd.27.ur.compoundString: #S= *hp49.kbd.27.lr.labelString: W *hp49.kbd.28.topPosition: 650 *hp49.kbd.28.bottomPosition: 780 *hp49.kbd.28.leftPosition: 446 *hp49.kbd.28.rightPosition: 669 *hp49.kbd.28.btn.labelString: X *hp49.kbd.28.ul.compoundString: #S\243 *hp49.kbd.28.ur.compoundString: #S< *hp49.kbd.28.lr.labelString: X *hp49.kbd.29.topPosition: 650 *hp49.kbd.29.bottomPosition: 780 *hp49.kbd.29.leftPosition: 669 *hp49.kbd.29.rightPosition: 892 *hp49.kbd.29.btn.labelString: 1/X *hp49.kbd.29.ul.compoundString: #S\263 *hp49.kbd.29.ur.compoundString: #S> *hp49.kbd.29.lr.labelString: Y *hp49.kbd.30.topPosition: 650 *hp49.kbd.30.bottomPosition: 780 *hp49.kbd.30.leftPosition: 892 *hp49.kbd.30.rightPosition: 1115 *hp49.kbd.30.btn.background: gray30 *hp49.kbd.30.btn.compoundString: #S\270 *hp49.kbd.30.ul.labelString: ABS *hp49.kbd.30.ur.compoundString: ARG *hp49.kbd.30.lr.labelString: Z ! Seventh row *hp49.kbd.31.topPosition: 780 *hp49.kbd.31.bottomPosition: 866 *hp49.kbd.31.leftPosition: 0 *hp49.kbd.31.rightPosition: 223 *hp49.kbd.31.btn.background: sea green *hp49.kbd.31.btn.labelString: ALPHA *hp49.kbd.31.ul.labelString: USR *hp49.kbd.31.ur.labelString: ENT *hp49.kbd.31.lr.labelString: *hp49.kbd.32.topPosition: 780 *hp49.kbd.32.bottomPosition: 866 *hp49.kbd.32.leftPosition: 223 *hp49.kbd.32.rightPosition: 446 *hp49.kbd.32.btn.background: gray20 *hp49.kbd.32.btn.labelString: 7 *hp49.kbd.32.ul.labelString: S.S *hp49.kbd.32.ur.labelString: N.S *hp49.kbd.32.lr.labelString: *hp49.kbd.33.topPosition: 780 *hp49.kbd.33.bottomPosition: 866 *hp49.kbd.33.leftPosition: 446 *hp49.kbd.33.rightPosition: 669 *hp49.kbd.33.btn.background: gray20 *hp49.kbd.33.btn.labelString: 8 *hp49.kbd.33.ul.labelString: E&L *hp49.kbd.33.ur.labelString: TRG *hp49.kbd.33.lr.labelString: *hp49.kbd.34.topPosition: 780 *hp49.kbd.34.bottomPosition: 866 *hp49.kbd.34.leftPosition: 669 *hp49.kbd.34.rightPosition: 892 *hp49.kbd.34.btn.background: gray20 *hp49.kbd.34.btn.labelString: 9 *hp49.kbd.34.ul.labelString: FIN *hp49.kbd.34.ur.labelString: TIM *hp49.kbd.34.lr.labelString: *hp49.kbd.35.topPosition: 780 *hp49.kbd.35.bottomPosition: 866 *hp49.kbd.35.leftPosition: 892 *hp49.kbd.35.rightPosition: 1115 *hp49.kbd.35.btn.background: gray30 *hp49.kbd.35.btn.compoundString: #S\264 *hp49.kbd.35.ul.labelString: [] *hp49.kbd.35.ur.labelString: "" *hp49.kbd.35.lr.labelString: ! Eigth row *hp49.kbd.36.topPosition: 866 *hp49.kbd.36.bottomPosition: 952 *hp49.kbd.36.leftPosition: 0 *hp49.kbd.36.rightPosition: 223 *hp49.kbd.36.btn.background: midnight blue *hp49.kbd.36.btn.foreground: gray90 *hp49.kbd.36.btn.compoundString: #S\334 *hp49.kbd.36.ul.labelString: \ *hp49.kbd.36.ur.labelString: \ *hp49.kbd.36.lr.labelString: *hp49.kbd.37.topPosition: 866 *hp49.kbd.37.bottomPosition: 952 *hp49.kbd.37.leftPosition: 223 *hp49.kbd.37.rightPosition: 446 *hp49.kbd.37.btn.background: gray20 *hp49.kbd.37.btn.labelString: 4 *hp49.kbd.37.ul.labelString: CAL *hp49.kbd.37.ur.labelString: ALG *hp49.kbd.37.lr.labelString: *hp49.kbd.38.topPosition: 866 *hp49.kbd.38.bottomPosition: 952 *hp49.kbd.38.leftPosition: 446 *hp49.kbd.38.rightPosition: 669 *hp49.kbd.38.btn.background: gray20 *hp49.kbd.38.btn.labelString: 5 *hp49.kbd.38.ul.labelString: MAT *hp49.kbd.38.ur.labelString: ST *hp49.kbd.38.lr.labelString: *hp49.kbd.39.topPosition: 866 *hp49.kbd.39.bottomPosition: 952 *hp49.kbd.39.leftPosition: 669 *hp49.kbd.39.rightPosition: 892 *hp49.kbd.39.btn.background: gray20 *hp49.kbd.39.btn.labelString: 6 *hp49.kbd.39.ul.labelString: CVT *hp49.kbd.39.ur.labelString: UNT *hp49.kbd.39.lr.labelString: *hp49.kbd.40.topPosition: 866 *hp49.kbd.40.bottomPosition: 952 *hp49.kbd.40.leftPosition: 892 *hp49.kbd.40.rightPosition: 1115 *hp49.kbd.40.btn.background: gray30 *hp49.kbd.40.btn.labelString: - *hp49.kbd.40.ul.labelString: () *hp49.kbd.40.ur.labelString: _ *hp49.kbd.40.lr.labelString: ! Ninth row *hp49.kbd.41.topPosition: 952 *hp49.kbd.41.bottomPosition: 1038 *hp49.kbd.41.leftPosition: 0 *hp49.kbd.41.rightPosition: 223 *hp49.kbd.41.btn.background: red *hp49.kbd.41.btn.foreground: gray90 *hp49.kbd.41.btn.compoundString: #S\336 *hp49.kbd.41.ul.labelString: \ *hp49.kbd.41.ur.labelString: \ *hp49.kbd.41.lr.labelString: *hp49.kbd.42.topPosition: 952 *hp49.kbd.42.bottomPosition: 1038 *hp49.kbd.42.leftPosition: 223 *hp49.kbd.42.rightPosition: 446 *hp49.kbd.42.btn.background: gray20 *hp49.kbd.42.btn.labelString: 1 *hp49.kbd.42.ul.labelString: ART *hp49.kbd.42.ur.labelString: CPX *hp49.kbd.42.lr.labelString: *hp49.kbd.43.topPosition: 952 *hp49.kbd.43.bottomPosition: 1038 *hp49.kbd.43.leftPosition: 446 *hp49.kbd.43.rightPosition: 669 *hp49.kbd.43.btn.background: gray20 *hp49.kbd.43.btn.labelString: 2 *hp49.kbd.43.ul.labelString: DEF *hp49.kbd.43.ur.labelString: LIB *hp49.kbd.43.lr.labelString: *hp49.kbd.44.topPosition: 952 *hp49.kbd.44.bottomPosition: 1038 *hp49.kbd.44.leftPosition: 669 *hp49.kbd.44.rightPosition: 892 *hp49.kbd.44.btn.background: gray20 *hp49.kbd.44.btn.labelString: 3 *hp49.kbd.44.ul.labelString: # *hp49.kbd.44.ur.labelString: BASE *hp49.kbd.44.lr.labelString: *hp49.kbd.45.topPosition: 952 *hp49.kbd.45.bottomPosition: 1038 *hp49.kbd.45.leftPosition: 892 *hp49.kbd.45.rightPosition: 1115 *hp49.kbd.45.btn.background: gray30 *hp49.kbd.45.btn.labelString: + *hp49.kbd.45.ul.labelString: {} *hp49.kbd.45.ur.labelString: <<>> *hp49.kbd.45.lr.labelString: ! Tenth row *hp49.kbd.46.topPosition: 1038 *hp49.kbd.46.bottomPosition: 1124 *hp49.kbd.46.leftPosition: 0 *hp49.kbd.46.rightPosition: 223 *hp49.kbd.46.btn.labelString: ON *hp49.kbd.46.ul.labelString: CONT *hp49.kbd.46.ur.labelString: OFF *hp49.kbd.46.lr.labelString: *hp49.kbd.47.topPosition: 1038 *hp49.kbd.47.bottomPosition: 1124 *hp49.kbd.47.leftPosition: 223 *hp49.kbd.47.rightPosition: 446 *hp49.kbd.47.btn.background: gray20 *hp49.kbd.47.btn.labelString: 0 *hp49.kbd.47.ul.compoundString: #S\245 *hp49.kbd.47.ur.compoundString: #S\256 *hp49.kbd.47.lr.labelString: *hp49.kbd.48.topPosition: 1038 *hp49.kbd.48.bottomPosition: 1124 *hp49.kbd.48.leftPosition: 446 *hp49.kbd.48.rightPosition: 669 *hp49.kbd.48.btn.background: gray20 *hp49.kbd.48.btn.labelString: . *hp49.kbd.48.ul.labelString: :: *hp49.kbd.48.ur.compoundString: #S\277 *hp49.kbd.48.lr.labelString: *hp49.kbd.49.topPosition: 1038 *hp49.kbd.49.bottomPosition: 1124 *hp49.kbd.49.leftPosition: 669 *hp49.kbd.49.rightPosition: 892 *hp49.kbd.49.btn.background: gray20 *hp49.kbd.49.btn.labelString: SPC *hp49.kbd.49.ul.compoundString: #Sp *hp49.kbd.49.ur.labelString: , *hp49.kbd.49.lr.labelString: *hp49.kbd.50.topPosition: 1038 *hp49.kbd.50.bottomPosition: 1124 *hp49.kbd.50.leftPosition: 892 *hp49.kbd.50.rightPosition: 1115 *hp49.kbd.50.btn.background: gray30 *hp49.kbd.50.btn.labelString: ENTER *hp49.kbd.50.ul.labelString: ANS *hp49.kbd.50.ur.compoundString: #S\256# N *hp49.kbd.50.lr.labelString: ! inOut codes for all keys *hp49.kbd.0.btn.inOut: 5/01 *hp49.kbd.1.btn.inOut: 5/02 *hp49.kbd.2.btn.inOut: 5/04 *hp49.kbd.3.btn.inOut: 5/08 *hp49.kbd.4.btn.inOut: 5/10 *hp49.kbd.5.btn.inOut: 5/20 *hp49.kbd.6.btn.inOut: 5/80 *hp49.kbd.7.btn.inOut: 4/80 *hp49.kbd.8.btn.inOut: 3/80 *hp49.kbd.9.btn.inOut: 2/80 *hp49.kbd.10.btn.inOut: 1/80 *hp49.kbd.11.btn.inOut: 0/80 *hp49.kbd.12.btn.inOut: 6/08 *hp49.kbd.13.btn.inOut: 6/04 *hp49.kbd.14.btn.inOut: 6/01 *hp49.kbd.15.btn.inOut: 6/02 *hp49.kbd.16.btn.inOut: 4/40 *hp49.kbd.17.btn.inOut: 3/40 *hp49.kbd.18.btn.inOut: 2/40 *hp49.kbd.19.btn.inOut: 1/40 *hp49.kbd.20.btn.inOut: 0/40 *hp49.kbd.21.btn.inOut: 4/20 *hp49.kbd.22.btn.inOut: 3/20 *hp49.kbd.23.btn.inOut: 2/20 *hp49.kbd.24.btn.inOut: 1/20 *hp49.kbd.25.btn.inOut: 0/20 *hp49.kbd.26.btn.inOut: 4/10 *hp49.kbd.27.btn.inOut: 3/10 *hp49.kbd.28.btn.inOut: 2/10 *hp49.kbd.29.btn.inOut: 1/10 *hp49.kbd.30.btn.inOut: 0/10 *hp49.kbd.31.btn.inOut: 7/08 *hp49.kbd.32.btn.inOut: 3/08 *hp49.kbd.33.btn.inOut: 2/08 *hp49.kbd.34.btn.inOut: 1/08 *hp49.kbd.35.btn.inOut: 0/08 *hp49.kbd.36.btn.inOut: 7/04 *hp49.kbd.37.btn.inOut: 3/04 *hp49.kbd.38.btn.inOut: 2/04 *hp49.kbd.39.btn.inOut: 1/04 *hp49.kbd.40.btn.inOut: 0/04 *hp49.kbd.41.btn.inOut: 7/02 *hp49.kbd.42.btn.inOut: 3/02 *hp49.kbd.43.btn.inOut: 2/02 *hp49.kbd.44.btn.inOut: 1/02 *hp49.kbd.45.btn.inOut: 0/02 *hp49.kbd.46.btn.inOut: * *hp49.kbd.47.btn.inOut: 3/01 *hp49.kbd.48.btn.inOut: 2/01 *hp49.kbd.49.btn.inOut: 1/01 *hp49.kbd.50.btn.inOut: 0/01 ! Shortcut keyboard translations associated with the lcd display widget. ! They must be listed in more-to-less-specific order; so, for example, ! translations involving BackSpace should *before* those involving Delete *hp49*baseTranslations: #override \n\ F1: kbdKeyPress(5/01) \n\ F1: kbdKeyRelease(5/01) \n\ F2: kbdKeyPress(5/02) \n\ F2: kbdKeyRelease(5/02) \n\ F3: kbdKeyPress(5/04) \n\ F3: kbdKeyRelease(5/04) \n\ F4: kbdKeyPress(5/08) \n\ F4: kbdKeyRelease(5/08) \n\ F5: kbdKeyPress(5/10) \n\ F5: kbdKeyRelease(5/10) \n\ F6: kbdKeyPress(5/20) \n\ F6: kbdKeyRelease(5/20) \n\ A: kbdKeyPress(5/01) \n\ A: kbdKeyRelease(5/01) \n\ B: kbdKeyPress(5/02) \n\ B: kbdKeyRelease(5/02) \n\ C: kbdKeyPress(5/04) \n\ C: kbdKeyRelease(5/04) \n\ D: kbdKeyPress(5/08) \n\ D: kbdKeyRelease(5/08) \n\ E: kbdKeyPress(5/10) \n\ E: kbdKeyRelease(5/10) \n\ F: kbdKeyPress(5/20) \n\ F: kbdKeyRelease(5/20) \n\ G: kbdKeyPress(5/80) \n\ G: kbdKeyRelease(5/80) \n\ H: kbdKeyPress(4/80) \n\ H: kbdKeyRelease(4/80) \n\ I: kbdKeyPress(3/80) \n\ I: kbdKeyRelease(3/80) \n\ J: kbdKeyPress(2/80) \n\ J: kbdKeyRelease(2/80) \n\ K: kbdKeyPress(1/80) \n\ K: kbdKeyRelease(1/80) \n\ L: kbdKeyPress(0/80) \n\ L: kbdKeyRelease(0/80) \n\ Up: kbdKeyPress(6/08) \n\ Up: kbdKeyRelease(6/08) \n\ Left: kbdKeyPress(6/04) \n\ Left: kbdKeyRelease(6/04) \n\ Right: kbdKeyPress(6/01) \n\ Right: kbdKeyRelease(6/01) \n\ Down: kbdKeyPress(6/02) \n\ Down: kbdKeyRelease(6/02) \n\ M: kbdKeyPress(4/40) \n\ M: kbdKeyRelease(4/40) \n\ N: kbdKeyPress(3/40) \n\ N: kbdKeyRelease(3/40) \n\ O: kbdKeyPress(2/40) \n\ O: kbdKeyRelease(2/40) \n\ P: kbdKeyPress(1/40) \n\ P: kbdKeyRelease(1/40) \n\ BackSpace: kbdKeyPress(0/40) \n\ BackSpace: kbdKeyRelease(0/40) \n\ Q: kbdKeyPress(4/20) \n\ Q: kbdKeyRelease(4/20) \n\ R: kbdKeyPress(3/20) \n\ R: kbdKeyRelease(3/20) \n\ S: kbdKeyPress(2/20) \n\ S: kbdKeyRelease(2/20) \n\ T: kbdKeyPress(1/20) \n\ T: kbdKeyRelease(1/20) \n\ U: kbdKeyPress(0/20) \n\ U: kbdKeyRelease(0/20) \n\ V: kbdKeyPress(4/10) \n\ V: kbdKeyRelease(4/10) \n\ W: kbdKeyPress(3/10) \n\ W: kbdKeyRelease(3/10) \n\ X: kbdKeyPress(2/10) \n\ X: kbdKeyRelease(2/10) \n\ Y: kbdKeyPress(1/10) \n\ Y: kbdKeyRelease(1/10) \n\ Z: kbdKeyPress(0/10) \n\ Z: kbdKeyRelease(0/10) \n\ :slash: kbdKeyPress(0/10) \n\ :slash: kbdKeyRelease(0/10) \n\ KP_Divide: kbdKeyPress(0/10) \n\ KP_Divide: kbdKeyRelease(0/10) \n\ F10: kbdKeyPress(7/08) \n\ F10: kbdKeyRelease(7/08) \n\ 7: kbdKeyPress(3/08) \n\ 7: kbdKeyRelease(3/08) \n\ KP_7: kbdKeyPress(3/08) \n\ KP_7: kbdKeyRelease(3/08) \n\ 8: kbdKeyPress(2/08) \n\ 8: kbdKeyRelease(2/08) \n\ KP_8: kbdKeyPress(2/08) \n\ KP_8: kbdKeyRelease(2/08) \n\ 9: kbdKeyPress(1/08) \n\ 9: kbdKeyRelease(1/08) \n\ KP_9: kbdKeyPress(1/08) \n\ KP_9: kbdKeyRelease(1/08) \n\ :asterisk: kbdKeyPress(0/08) \n\ :asterisk: kbdKeyRelease(0/08) \n\ KP_Multiply: kbdKeyPress(0/08) \n\ KP_Multiply: kbdKeyRelease(0/08) \n\ F11: kbdKeyPress(7/04) \n\ F11: kbdKeyRelease(7/04) \n\ 4: kbdKeyPress(3/04) \n\ 4: kbdKeyRelease(3/04) \n\ KP_4: kbdKeyPress(3/04) \n\ KP_4: kbdKeyRelease(3/04) \n\ 5: kbdKeyPress(2/04) \n\ 5: kbdKeyRelease(2/04) \n\ KP_5: kbdKeyPress(2/04) \n\ KP_5: kbdKeyRelease(2/04) \n\ 6: kbdKeyPress(1/04) \n\ 6: kbdKeyRelease(1/04) \n\ KP_6: kbdKeyPress(1/04) \n\ KP_6: kbdKeyRelease(1/04) \n\ :minus: kbdKeyPress(0/04) \n\ :minus: kbdKeyRelease(0/04) \n\ KP_Subtract: kbdKeyPress(0/04) \n\ KP_Subtract: kbdKeyRelease(0/04) \n\ F12: kbdKeyPress(7/02) \n\ F12: kbdKeyRelease(7/02) \n\ 1: kbdKeyPress(3/02) \n\ 1: kbdKeyRelease(3/02) \n\ KP_1: kbdKeyPress(3/02) \n\ KP_1: kbdKeyRelease(3/02) \n\ 2: kbdKeyPress(2/02) \n\ 2: kbdKeyRelease(2/02) \n\ KP_2: kbdKeyPress(2/02) \n\ KP_2: kbdKeyRelease(2/02) \n\ 3: kbdKeyPress(1/02) \n\ 3: kbdKeyRelease(1/02) \n\ KP_3: kbdKeyPress(1/02) \n\ KP_3: kbdKeyRelease(1/02) \n\ :plus: kbdKeyPress(0/02) \n\ :plus: kbdKeyRelease(0/02) \n\ KP_Add: kbdKeyPress(0/02) \n\ KP_Add: kbdKeyRelease(0/02) \n\ Escape: kbdKeyPress(*) \n\ Escape: kbdKeyRelease(*) \n\ 0: kbdKeyPress(3/01) \n\ 0: kbdKeyRelease(3/01) \n\ KP_0: kbdKeyPress(3/01) \n\ KP_0: kbdKeyRelease(3/01) \n\ :period: kbdKeyPress(2/01) \n\ :period: kbdKeyRelease(2/01) \n\ KP_Decimal: kbdKeyPress(2/01) \n\ KP_Decimal: kbdKeyRelease(2/01) \n\ space: kbdKeyPress(1/01) \n\ space: kbdKeyRelease(1/01) \n\ Return: kbdKeyPress(0/01) \n\ Return: kbdKeyRelease(0/01) \n\ KP_Enter: kbdKeyPress(0/01) \n\ KP_Enter: kbdKeyRelease(0/01) \n\ Alt_L: kbdKeyPress(7/08) \n\ Alt_L: kbdKeyRelease(7/08) \n\ Alt_R: kbdKeyPress(7/08) \n\ Alt_R: kbdKeyRelease(7/08) \n\ Shift_L: kbdKeyPress(7/04) \n\ Shift_L: kbdKeyRelease(7/04) \n\ Shift_R: kbdKeyPress(7/02) \n\ Shift_R: kbdKeyRelease(7/02) ! ----------------------------------------------------------------------------- ! The following settings act on the hp40 face only ! Background color *hp40*background: midnight blue ! XmRowColumn container settings; vertical layout, packed *hp40.numColumns: 1 *hp40.orientation: XmVERTICAL *hp40.packing: XmPACK_TIGHT ! Keyboard layout *hp40.nKeys: 51 *hp40.kbd.fractionBase: 1440 *hp40.kbd*fontList: *helvetica-*-r-*-*-12-*,*symbol-*-*-*-*-12-*=S *hp40.kbd*btn.fontList: *helvetica-*-r-*-*-14-*,*symbol-*-*-*-*-14-*=S *hp40.kbd*ul.foreground: light sky blue *hp40.kbd*ur.foreground: red *hp40.kbd*lr.foreground: orange *hp40.kbd*btn.background: gray20 *hp40.kbd*btn.foreground: gray90 *hp40.kbd*btn.shadowThickness: 1 ! Lcd screen colors and layout *hp40.frame*background: gray20 *hp40.frame.lcd.background: gray80 *hp40*lcd.foreground: black *hp40*lcd.childType: XmFRAME_TITLE_CHILD *hp40*lcd.childHorizontalAlignment: XmALIGNMENT_CENTER *hp40*lcd.childVerticalAlignment: XmALIGNMENT_WIDGET_BOTTOM *hp40*lcd.resizePolicy: XmRESIZE_NONE *hp40*lcd.width: 272 *hp40*lcd.height: 156 ! Suppress all lower-left and upper-right keyboard labels; ! the hp40 does not use them *hp40.kbd*ur.labelString: *hp40.kbd*ll.labelString: ! Resources for all keyboard keys ! First row *hp40.kbd.0.topPosition: 0 *hp40.kbd.0.bottomPosition: 130 *hp40.kbd.0.leftPosition: 0 *hp40.kbd.0.rightPosition: 240 *hp40.kbd.0.btn.background: gray75 *hp40.kbd.0.btn.labelString: \ *hp40.kbd.0.ul.labelString: \ *hp40.kbd.0.lr.labelString: \ *hp40.kbd.1.topPosition: 0 *hp40.kbd.1.bottomPosition: 130 *hp40.kbd.1.leftPosition: 240 *hp40.kbd.1.rightPosition: 480 *hp40.kbd.1.btn.background: gray75 *hp40.kbd.1.btn.labelString: \ *hp40.kbd.1.ul.labelString: \ *hp40.kbd.1.lr.labelString: \ *hp40.kbd.2.topPosition: 0 *hp40.kbd.2.bottomPosition: 130 *hp40.kbd.2.leftPosition: 480 *hp40.kbd.2.rightPosition: 720 *hp40.kbd.2.btn.background: gray75 *hp40.kbd.2.btn.labelString: \ *hp40.kbd.2.ul.labelString: \ *hp40.kbd.2.lr.labelString: \ *hp40.kbd.3.topPosition: 0 *hp40.kbd.3.bottomPosition: 130 *hp40.kbd.3.leftPosition: 720 *hp40.kbd.3.rightPosition: 960 *hp40.kbd.3.btn.background: gray75 *hp40.kbd.3.btn.labelString: \ *hp40.kbd.3.ul.labelString: \ *hp40.kbd.3.lr.labelString: \ *hp40.kbd.4.topPosition: 0 *hp40.kbd.4.bottomPosition: 130 *hp40.kbd.4.leftPosition: 960 *hp40.kbd.4.rightPosition: 1200 *hp40.kbd.4.btn.background: gray75 *hp40.kbd.4.btn.labelString: \ *hp40.kbd.4.ul.labelString: \ *hp40.kbd.4.lr.labelString: \ *hp40.kbd.5.topPosition: 0 *hp40.kbd.5.bottomPosition: 130 *hp40.kbd.5.leftPosition: 1200 *hp40.kbd.5.rightPosition: 1440 *hp40.kbd.5.btn.background: gray75 *hp40.kbd.5.btn.labelString: \ *hp40.kbd.5.ul.labelString: \ *hp40.kbd.5.lr.labelString: \ ! Second row/third row *hp40.kbd.6.topPosition: 200 *hp40.kbd.6.bottomPosition: 330 *hp40.kbd.6.leftPosition: 0 *hp40.kbd.6.rightPosition: 288 *hp40.kbd.6.btn.background: gray75 *hp40.kbd.6.btn.labelString: SYMB *hp40.kbd.6.ul.labelString: \ *hp40.kbd.6.lr.labelString: \ *hp40.kbd.7.topPosition: 200 *hp40.kbd.7.bottomPosition: 330 *hp40.kbd.7.leftPosition: 288 *hp40.kbd.7.rightPosition: 576 *hp40.kbd.7.btn.background: gray75 *hp40.kbd.7.btn.labelString: PLOT *hp40.kbd.7.ul.labelString: \ *hp40.kbd.7.lr.labelString: \ *hp40.kbd.8.topPosition: 200 *hp40.kbd.8.bottomPosition: 330 *hp40.kbd.8.leftPosition: 576 *hp40.kbd.8.rightPosition: 864 *hp40.kbd.8.btn.background: gray75 *hp40.kbd.8.btn.labelString: NUM *hp40.kbd.8.ul.labelString: \ *hp40.kbd.8.lr.labelString: \ *hp40.kbd.9.topPosition: 330 *hp40.kbd.9.bottomPosition: 460 *hp40.kbd.9.leftPosition: 0 *hp40.kbd.9.rightPosition: 288 *hp40.kbd.9.btn.background: gray75 *hp40.kbd.9.btn.labelString: HOME *hp40.kbd.9.ul.labelString: MODES *hp40.kbd.9.lr.labelString: \ *hp40.kbd.10.topPosition: 330 *hp40.kbd.10.bottomPosition: 460 *hp40.kbd.10.leftPosition: 288 *hp40.kbd.10.rightPosition: 576 *hp40.kbd.10.btn.background: gray75 *hp40.kbd.10.btn.labelString: APLET *hp40.kbd.10.ul.labelString: NOTE *hp40.kbd.10.lr.labelString: \ *hp40.kbd.11.topPosition: 330 *hp40.kbd.11.bottomPosition: 460 *hp40.kbd.11.leftPosition: 576 *hp40.kbd.11.rightPosition: 864 *hp40.kbd.11.btn.background: gray75 *hp40.kbd.11.btn.labelString: VIEWS *hp40.kbd.11.ul.labelString: SKETCH *hp40.kbd.11.lr.labelString: \ ! Cursor keys *hp40.kbd.12.topPosition: 130 *hp40.kbd.12.bottomPosition: 260 *hp40.kbd.12.leftPosition: 1008 *hp40.kbd.12.rightPosition: 1296 *hp40.kbd.12.btn.foreground: light sky blue *hp40.kbd.12.btn.compoundString: #S\255 *hp40.kbd.12.ul.labelString: \ *hp40.kbd.12.lr.labelString: \ *hp40.kbd.13.topPosition: 260 *hp40.kbd.13.bottomPosition: 390 *hp40.kbd.13.leftPosition: 864 *hp40.kbd.13.rightPosition: 1152 *hp40.kbd.13.btn.foreground: light sky blue *hp40.kbd.13.btn.compoundString: #S\254 *hp40.kbd.13.ul.labelString: \ *hp40.kbd.13.lr.labelString: \ *hp40.kbd.14.topPosition: 260 *hp40.kbd.14.bottomPosition: 390 *hp40.kbd.14.leftPosition: 1152 *hp40.kbd.14.rightPosition: 1440 *hp40.kbd.14.btn.foreground: light sky blue *hp40.kbd.14.btn.compoundString: #S\256 *hp40.kbd.14.ul.labelString: \ *hp40.kbd.14.lr.labelString: \ *hp40.kbd.15.topPosition: 390 *hp40.kbd.15.bottomPosition: 520 *hp40.kbd.15.leftPosition: 1008 *hp40.kbd.15.rightPosition: 1296 *hp40.kbd.15.btn.foreground: light sky blue *hp40.kbd.15.btn.compoundString: #S\257 *hp40.kbd.15.ul.labelString: \ *hp40.kbd.15.lr.labelString: \ ! Fourth row *hp40.kbd.16.topPosition: 520 *hp40.kbd.16.bottomPosition: 650 *hp40.kbd.16.leftPosition: 0 *hp40.kbd.16.rightPosition: 288 *hp40.kbd.16.btn.background: gray50 *hp40.kbd.16.btn.labelString: VARS *hp40.kbd.16.ul.labelString: CHARS *hp40.kbd.16.lr.labelString: A *hp40.kbd.17.topPosition: 520 *hp40.kbd.17.bottomPosition: 650 *hp40.kbd.17.leftPosition: 288 *hp40.kbd.17.rightPosition: 576 *hp40.kbd.17.btn.background: gray50 *hp40.kbd.17.btn.labelString: MATH *hp40.kbd.17.ul.labelString: CMDS *hp40.kbd.17.lr.labelString: B *hp40.kbd.18.topPosition: 520 *hp40.kbd.18.bottomPosition: 650 *hp40.kbd.18.leftPosition: 576 *hp40.kbd.18.rightPosition: 864 *hp40.kbd.18.btn.background: gray50 *hp40.kbd.18.btn.labelString: d/dx *hp40.kbd.18.ul.compoundString: #S\362 *hp40.kbd.18.lr.labelString: C *hp40.kbd.19.topPosition: 520 *hp40.kbd.19.bottomPosition: 650 *hp40.kbd.19.leftPosition: 864 *hp40.kbd.19.rightPosition: 1152 *hp40.kbd.19.btn.background: gray50 *hp40.kbd.19.btn.compoundString: X,T,#S\161 *hp40.kbd.19.ul.labelString: EEX *hp40.kbd.19.lr.labelString: D *hp40.kbd.20.topPosition: 520 *hp40.kbd.20.bottomPosition: 650 *hp40.kbd.20.leftPosition: 1152 *hp40.kbd.20.rightPosition: 1440 *hp40.kbd.20.btn.background: gray50 *hp40.kbd.20.btn.labelString: DEL *hp40.kbd.20.ul.labelString: CLEAR *hp40.kbd.20.lr.labelString: \ ! Fifth row *hp40.kbd.21.topPosition: 650 *hp40.kbd.21.bottomPosition: 780 *hp40.kbd.21.leftPosition: 0 *hp40.kbd.21.rightPosition: 288 *hp40.kbd.21.btn.background: gray50 *hp40.kbd.21.btn.labelString: SIN *hp40.kbd.21.ul.labelString: ASIN *hp40.kbd.21.lr.labelString: E *hp40.kbd.22.topPosition: 650 *hp40.kbd.22.bottomPosition: 780 *hp40.kbd.22.leftPosition: 288 *hp40.kbd.22.rightPosition: 576 *hp40.kbd.22.btn.background: gray50 *hp40.kbd.22.btn.labelString: COS *hp40.kbd.22.ul.labelString: ACOS *hp40.kbd.22.lr.labelString: F *hp40.kbd.23.topPosition: 650 *hp40.kbd.23.bottomPosition: 780 *hp40.kbd.23.leftPosition: 576 *hp40.kbd.23.rightPosition: 864 *hp40.kbd.23.btn.background: gray50 *hp40.kbd.23.btn.labelString: TAN *hp40.kbd.23.ul.labelString: ATAN *hp40.kbd.23.lr.labelString: G *hp40.kbd.24.topPosition: 650 *hp40.kbd.24.bottomPosition: 780 *hp40.kbd.24.leftPosition: 864 *hp40.kbd.24.rightPosition: 1152 *hp40.kbd.24.btn.background: gray50 *hp40.kbd.24.btn.labelString: ln *hp40.kbd.24.ul.labelString: e^x *hp40.kbd.24.lr.labelString: H *hp40.kbd.25.topPosition: 650 *hp40.kbd.25.bottomPosition: 780 *hp40.kbd.25.leftPosition: 1152 *hp40.kbd.25.rightPosition: 1440 *hp40.kbd.25.btn.background: gray50 *hp40.kbd.25.btn.labelString: log *hp40.kbd.25.ul.labelString: 10^x *hp40.kbd.25.lr.labelString: I ! Sixth row *hp40.kbd.26.topPosition: 780 *hp40.kbd.26.bottomPosition: 910 *hp40.kbd.26.leftPosition: 0 *hp40.kbd.26.rightPosition: 288 *hp40.kbd.26.btn.background: gray50 *hp40.kbd.26.btn.labelString: X^2 *hp40.kbd.26.ul.compoundString: #S\326 *hp40.kbd.26.lr.labelString: J *hp40.kbd.27.topPosition: 780 *hp40.kbd.27.bottomPosition: 910 *hp40.kbd.27.leftPosition: 288 *hp40.kbd.27.rightPosition: 576 *hp40.kbd.27.btn.background: gray50 *hp40.kbd.27.btn.labelString: X^Y *hp40.kbd.27.ul.compoundString: n#S\326 *hp40.kbd.27.lr.labelString: K *hp40.kbd.28.topPosition: 780 *hp40.kbd.28.bottomPosition: 910 *hp40.kbd.28.leftPosition: 576 *hp40.kbd.28.rightPosition: 864 *hp40.kbd.28.btn.background: gray50 *hp40.kbd.28.btn.labelString: ( *hp40.kbd.28.ul.compoundString: ABS *hp40.kbd.28.lr.labelString: L *hp40.kbd.29.topPosition: 780 *hp40.kbd.29.bottomPosition: 910 *hp40.kbd.29.leftPosition: 864 *hp40.kbd.29.rightPosition: 1152 *hp40.kbd.29.btn.background: gray50 *hp40.kbd.29.btn.labelString: ) *hp40.kbd.29.ul.compoundString: ARG *hp40.kbd.29.lr.labelString: M *hp40.kbd.30.topPosition: 780 *hp40.kbd.30.bottomPosition: 910 *hp40.kbd.30.leftPosition: 1152 *hp40.kbd.30.rightPosition: 1440 *hp40.kbd.30.btn.foreground: orange *hp40.kbd.30.btn.compoundString: #S\270 *hp40.kbd.30.ul.labelString: X^-1 *hp40.kbd.30.lr.labelString: N ! Seventh row *hp40.kbd.31.topPosition: 910 *hp40.kbd.31.bottomPosition: 1040 *hp40.kbd.31.leftPosition: 0 *hp40.kbd.31.rightPosition: 288 *hp40.kbd.31.btn.background: gray50 *hp40.kbd.31.btn.labelString: , *hp40.kbd.31.ul.labelString: MEMORY *hp40.kbd.31.lr.labelString: O *hp40.kbd.32.topPosition: 910 *hp40.kbd.32.bottomPosition: 1040 *hp40.kbd.32.leftPosition: 288 *hp40.kbd.32.rightPosition: 576 *hp40.kbd.32.btn.foreground: orange *hp40.kbd.32.btn.labelString: 7 *hp40.kbd.32.ul.labelString: LIST *hp40.kbd.32.lr.labelString: P *hp40.kbd.33.topPosition: 910 *hp40.kbd.33.bottomPosition: 1040 *hp40.kbd.33.leftPosition: 576 *hp40.kbd.33.rightPosition: 864 *hp40.kbd.33.btn.foreground: orange *hp40.kbd.33.btn.labelString: 8 *hp40.kbd.33.ul.labelString: { *hp40.kbd.33.lr.labelString: Q *hp40.kbd.34.topPosition: 910 *hp40.kbd.34.bottomPosition: 1040 *hp40.kbd.34.leftPosition: 864 *hp40.kbd.34.rightPosition: 1152 *hp40.kbd.34.btn.foreground: orange *hp40.kbd.34.btn.labelString: 9 *hp40.kbd.34.ul.labelString: } *hp40.kbd.34.lr.labelString: R *hp40.kbd.35.topPosition: 910 *hp40.kbd.35.bottomPosition: 1040 *hp40.kbd.35.leftPosition: 1152 *hp40.kbd.35.rightPosition: 1440 *hp40.kbd.35.btn.foreground: orange *hp40.kbd.35.btn.compoundString: #S\264 *hp40.kbd.35.ul.labelString: ! *hp40.kbd.35.lr.labelString: S ! Eigth row *hp40.kbd.36.topPosition: 1040 *hp40.kbd.36.bottomPosition: 1170 *hp40.kbd.36.leftPosition: 0 *hp40.kbd.36.rightPosition: 288 *hp40.kbd.36.btn.background: gray50 *hp40.kbd.36.btn.foreground: orange *hp40.kbd.36.btn.labelString: ALPHA *hp40.kbd.36.ul.labelString: alpha *hp40.kbd.36.lr.labelString: \ *hp40.kbd.37.topPosition: 1040 *hp40.kbd.37.bottomPosition: 1170 *hp40.kbd.37.leftPosition: 288 *hp40.kbd.37.rightPosition: 576 *hp40.kbd.37.btn.foreground: orange *hp40.kbd.37.btn.labelString: 4 *hp40.kbd.37.ul.labelString: MATRIX *hp40.kbd.37.lr.labelString: T *hp40.kbd.38.topPosition: 1040 *hp40.kbd.38.bottomPosition: 1170 *hp40.kbd.38.leftPosition: 576 *hp40.kbd.38.rightPosition: 864 *hp40.kbd.38.btn.foreground: orange *hp40.kbd.38.btn.labelString: 5 *hp40.kbd.38.ul.labelString: [ *hp40.kbd.38.lr.labelString: U *hp40.kbd.39.topPosition: 1040 *hp40.kbd.39.bottomPosition: 1170 *hp40.kbd.39.leftPosition: 864 *hp40.kbd.39.rightPosition: 1152 *hp40.kbd.39.btn.foreground: orange *hp40.kbd.39.btn.labelString: 6 *hp40.kbd.39.ul.labelString: ] *hp40.kbd.39.lr.labelString: V *hp40.kbd.40.topPosition: 1040 *hp40.kbd.40.bottomPosition: 1170 *hp40.kbd.40.leftPosition: 1152 *hp40.kbd.40.rightPosition: 1440 *hp40.kbd.40.btn.foreground: orange *hp40.kbd.40.btn.labelString: - *hp40.kbd.40.ul.compoundString: #S\320 *hp40.kbd.40.lr.labelString: W ! Ninth row *hp40.kbd.41.topPosition: 1170 *hp40.kbd.41.bottomPosition: 1300 *hp40.kbd.41.leftPosition: 0 *hp40.kbd.41.rightPosition: 288 *hp40.kbd.41.btn.background: gray50 *hp40.kbd.41.btn.foreground: light sky blue *hp40.kbd.41.btn.labelString: SHIFT *hp40.kbd.41.ul.labelString: \ *hp40.kbd.41.lr.labelString: \ *hp40.kbd.42.topPosition: 1170 *hp40.kbd.42.bottomPosition: 1300 *hp40.kbd.42.leftPosition: 288 *hp40.kbd.42.rightPosition: 576 *hp40.kbd.42.btn.foreground: orange *hp40.kbd.42.btn.labelString: 1 *hp40.kbd.42.ul.labelString: PROGRM *hp40.kbd.42.lr.labelString: X *hp40.kbd.43.topPosition: 1170 *hp40.kbd.43.bottomPosition: 1300 *hp40.kbd.43.leftPosition: 576 *hp40.kbd.43.rightPosition: 864 *hp40.kbd.43.btn.foreground: orange *hp40.kbd.43.btn.labelString: 2 *hp40.kbd.43.ul.labelString: SYNTAX *hp40.kbd.43.lr.labelString: Y *hp40.kbd.44.topPosition: 1170 *hp40.kbd.44.bottomPosition: 1300 *hp40.kbd.44.leftPosition: 864 *hp40.kbd.44.rightPosition: 1152 *hp40.kbd.44.btn.foreground: orange *hp40.kbd.44.btn.labelString: 3 *hp40.kbd.44.ul.compoundString: #Sp *hp40.kbd.44.lr.labelString: Z *hp40.kbd.45.topPosition: 1170 *hp40.kbd.45.bottomPosition: 1300 *hp40.kbd.45.leftPosition: 1152 *hp40.kbd.45.rightPosition: 1440 *hp40.kbd.45.btn.foreground: orange *hp40.kbd.45.btn.labelString: + *hp40.kbd.45.ul.compoundString: #SS *hp40.kbd.45.lr.labelString: SPACE ! Tenth row *hp40.kbd.46.topPosition: 1300 *hp40.kbd.46.bottomPosition: 1430 *hp40.kbd.46.leftPosition: 0 *hp40.kbd.46.rightPosition: 288 *hp40.kbd.46.btn.background: gray75 *hp40.kbd.46.btn.labelString: ON *hp40.kbd.46.ul.labelString: OFF *hp40.kbd.46.lr.foreground: gray75 *hp40.kbd.46.lr.labelString: CANCEL *hp40.kbd.47.topPosition: 1300 *hp40.kbd.47.bottomPosition: 1430 *hp40.kbd.47.leftPosition: 288 *hp40.kbd.47.rightPosition: 576 *hp40.kbd.47.btn.foreground: orange *hp40.kbd.47.btn.labelString: 0 *hp40.kbd.47.ul.labelString: NOTEPAD *hp40.kbd.47.lr.labelString: \ *hp40.kbd.47.lr.compoundString: #S\161 *hp40.kbd.48.topPosition: 1300 *hp40.kbd.48.bottomPosition: 1430 *hp40.kbd.48.leftPosition: 576 *hp40.kbd.48.rightPosition: 864 *hp40.kbd.48.btn.foreground: orange *hp40.kbd.48.btn.labelString: . *hp40.kbd.48.ul.labelString: = *hp40.kbd.48.lr.labelString: : *hp40.kbd.49.topPosition: 1300 *hp40.kbd.49.bottomPosition: 1430 *hp40.kbd.49.leftPosition: 864 *hp40.kbd.49.rightPosition: 1152 *hp40.kbd.49.btn.foreground: orange *hp40.kbd.49.btn.labelString: (-) *hp40.kbd.49.ul.labelString: AND *hp40.kbd.49.lr.labelString: ; *hp40.kbd.50.topPosition: 1300 *hp40.kbd.50.bottomPosition: 1430 *hp40.kbd.50.leftPosition: 1152 *hp40.kbd.50.rightPosition: 1440 *hp40.kbd.50.btn.foreground: orange *hp40.kbd.50.btn.labelString: ENTER *hp40.kbd.50.ul.labelString: ANS *hp40.kbd.50.lr.labelString: \ ! inOut codes for all keys *hp40.kbd.0.btn.inOut: 5/01 *hp40.kbd.1.btn.inOut: 5/02 *hp40.kbd.2.btn.inOut: 5/04 *hp40.kbd.3.btn.inOut: 5/08 *hp40.kbd.4.btn.inOut: 5/10 *hp40.kbd.5.btn.inOut: 5/20 *hp40.kbd.6.btn.inOut: 5/80 *hp40.kbd.7.btn.inOut: 4/80 *hp40.kbd.8.btn.inOut: 3/80 *hp40.kbd.9.btn.inOut: 2/80 *hp40.kbd.10.btn.inOut: 1/80 *hp40.kbd.11.btn.inOut: 0/80 *hp40.kbd.12.btn.inOut: 6/08 *hp40.kbd.13.btn.inOut: 6/04 *hp40.kbd.14.btn.inOut: 6/01 *hp40.kbd.15.btn.inOut: 6/02 *hp40.kbd.16.btn.inOut: 4/40 *hp40.kbd.17.btn.inOut: 3/40 *hp40.kbd.18.btn.inOut: 2/40 *hp40.kbd.19.btn.inOut: 1/40 *hp40.kbd.20.btn.inOut: 0/40 *hp40.kbd.21.btn.inOut: 4/20 *hp40.kbd.22.btn.inOut: 3/20 *hp40.kbd.23.btn.inOut: 2/20 *hp40.kbd.24.btn.inOut: 1/20 *hp40.kbd.25.btn.inOut: 0/20 *hp40.kbd.26.btn.inOut: 4/10 *hp40.kbd.27.btn.inOut: 3/10 *hp40.kbd.28.btn.inOut: 2/10 *hp40.kbd.29.btn.inOut: 1/10 *hp40.kbd.30.btn.inOut: 0/10 *hp40.kbd.31.btn.inOut: 7/08 *hp40.kbd.32.btn.inOut: 3/08 *hp40.kbd.33.btn.inOut: 2/08 *hp40.kbd.34.btn.inOut: 1/08 *hp40.kbd.35.btn.inOut: 0/08 *hp40.kbd.36.btn.inOut: 7/04 *hp40.kbd.37.btn.inOut: 3/04 *hp40.kbd.38.btn.inOut: 2/04 *hp40.kbd.39.btn.inOut: 1/04 *hp40.kbd.40.btn.inOut: 0/04 *hp40.kbd.41.btn.inOut: 7/02 *hp40.kbd.42.btn.inOut: 3/02 *hp40.kbd.43.btn.inOut: 2/02 *hp40.kbd.44.btn.inOut: 1/02 *hp40.kbd.45.btn.inOut: 0/02 *hp40.kbd.46.btn.inOut: * *hp40.kbd.47.btn.inOut: 3/01 *hp40.kbd.48.btn.inOut: 2/01 *hp40.kbd.49.btn.inOut: 1/01 *hp40.kbd.50.btn.inOut: 0/01 ! Shortcut keyboard translations associated with the lcd display widget. ! They must be listed in more-to-less-specific order; so, for example, ! translations involving BackSpace should *before* those involving Delete *hp40*baseTranslations: #override \n\ F1: kbdKeyPress(5/01) \n\ F1: kbdKeyRelease(5/01) \n\ F2: kbdKeyPress(5/02) \n\ F2: kbdKeyRelease(5/02) \n\ F3: kbdKeyPress(5/04) \n\ F3: kbdKeyRelease(5/04) \n\ F4: kbdKeyPress(5/08) \n\ F4: kbdKeyRelease(5/08) \n\ F5: kbdKeyPress(5/10) \n\ F5: kbdKeyRelease(5/10) \n\ F6: kbdKeyPress(5/20) \n\ F6: kbdKeyRelease(5/20) \n\ Home: kbdKeyPress(2/80) \n\ Home: kbdKeyRelease(2/80) \n\ Up: kbdKeyPress(6/08) \n\ Up: kbdKeyRelease(6/08) \n\ Left: kbdKeyPress(6/04) \n\ Left: kbdKeyRelease(6/04) \n\ Right: kbdKeyPress(6/01) \n\ Right: kbdKeyRelease(6/01) \n\ Down: kbdKeyPress(6/02) \n\ Down: kbdKeyRelease(6/02) \n\ A: kbdKeyPress(4/40) \n\ A: kbdKeyRelease(4/40) \n\ B: kbdKeyPress(3/40) \n\ B: kbdKeyRelease(3/40) \n\ C: kbdKeyPress(2/40) \n\ C: kbdKeyRelease(2/40) \n\ D: kbdKeyPress(1/40) \n\ D: kbdKeyRelease(1/40) \n\ BackSpace: kbdKeyPress(0/40) \n\ BackSpace: kbdKeyRelease(0/40) \n\ E: kbdKeyPress(4/20) \n\ E: kbdKeyRelease(4/20) \n\ F: kbdKeyPress(3/20) \n\ F: kbdKeyRelease(3/20) \n\ G: kbdKeyPress(2/20) \n\ G: kbdKeyRelease(2/20) \n\ H: kbdKeyPress(1/20) \n\ H: kbdKeyRelease(1/20) \n\ I: kbdKeyPress(0/20) \n\ I: kbdKeyRelease(0/20) \n\ J: kbdKeyPress(4/10) \n\ J: kbdKeyRelease(4/10) \n\ K: kbdKeyPress(3/10) \n\ K: kbdKeyRelease(3/10) \n\ L: kbdKeyPress(2/10) \n\ L: kbdKeyRelease(2/10) \n\ M: kbdKeyPress(1/10) \n\ M: kbdKeyRelease(1/10) \n\ M: kbdKeyPress(0/10) \n\ M: kbdKeyRelease(0/10) \n\ :slash: kbdKeyPress(0/10) \n\ :slash: kbdKeyRelease(0/10) \n\ KP_Divide: kbdKeyPress(0/10) \n\ KP_Divide: kbdKeyRelease(0/10) \n\ N: kbdKeyPress(0/10) \n\ N: kbdKeyRelease(0/10) \n\ comma: kbdKeyPress(7/08) \n\ comma: kbdKeyRelease(7/08) \n\ O: kbdKeyPress(7/08) \n\ O: kbdKeyRelease(7/08) \n\ 7: kbdKeyPress(3/08) \n\ 7: kbdKeyRelease(3/08) \n\ KP_7: kbdKeyPress(3/08) \n\ KP_7: kbdKeyRelease(3/08) \n\ P: kbdKeyPress(3/08) \n\ P: kbdKeyRelease(3/08) \n\ 8: kbdKeyPress(2/08) \n\ 8: kbdKeyRelease(2/08) \n\ KP_8: kbdKeyPress(2/08) \n\ KP_8: kbdKeyRelease(2/08) \n\ Q: kbdKeyPress(2/08) \n\ Q: kbdKeyRelease(2/08) \n\ 9: kbdKeyPress(1/08) \n\ 9: kbdKeyRelease(1/08) \n\ KP_9: kbdKeyPress(1/08) \n\ KP_9: kbdKeyRelease(1/08) \n\ R: kbdKeyPress(1/08) \n\ R: kbdKeyRelease(1/08) \n\ :asterisk: kbdKeyPress(0/08) \n\ :asterisk: kbdKeyRelease(0/08) \n\ KP_Multiply: kbdKeyPress(0/08) \n\ KP_Multiply: kbdKeyRelease(0/08) \n\ S: kbdKeyPress(0/08) \n\ S: kbdKeyRelease(0/08) \n\ Alt_L: kbdKeyPress(7/04) \n\ Alt_L: kbdKeyRelease(7/04) \n\ Alt_R: kbdKeyPress(7/04) \n\ Alt_R: kbdKeyRelease(7/04) \n\ 4: kbdKeyPress(3/04) \n\ 4: kbdKeyRelease(3/04) \n\ KP_4: kbdKeyPress(3/04) \n\ KP_4: kbdKeyRelease(3/04) \n\ T: kbdKeyPress(3/04) \n\ T: kbdKeyRelease(3/04) \n\ 5: kbdKeyPress(2/04) \n\ 5: kbdKeyRelease(2/04) \n\ KP_5: kbdKeyPress(2/04) \n\ KP_5: kbdKeyRelease(2/04) \n\ U: kbdKeyRelease(2/04) \n\ U: kbdKeyPress(2/04) \n\ 6: kbdKeyPress(1/04) \n\ 6: kbdKeyRelease(1/04) \n\ KP_6: kbdKeyPress(1/04) \n\ KP_6: kbdKeyRelease(1/04) \n\ V: kbdKeyPress(1/04) \n\ V: kbdKeyRelease(1/04) \n\ :minus: kbdKeyPress(0/04) \n\ :minus: kbdKeyRelease(0/04) \n\ KP_Subtract: kbdKeyPress(0/04) \n\ KP_Subtract: kbdKeyRelease(0/04) \n\ W: kbdKeyPress(0/04) \n\ W: kbdKeyRelease(0/04) \n\ Shift_L: kbdKeyPress(7/02) \n\ Shift_L: kbdKeyRelease(7/02) \n\ Shift_R: kbdKeyPress(7/02) \n\ Shift_R: kbdKeyRelease(7/02) \n\ 1: kbdKeyPress(3/02) \n\ 1: kbdKeyRelease(3/02) \n\ KP_1: kbdKeyPress(3/02) \n\ KP_1: kbdKeyRelease(3/02) \n\ X: kbdKeyPress(3/02) \n\ X: kbdKeyRelease(3/02) \n\ 2: kbdKeyPress(2/02) \n\ 2: kbdKeyRelease(2/02) \n\ KP_2: kbdKeyPress(2/02) \n\ KP_2: kbdKeyRelease(2/02) \n\ Y: kbdKeyPress(2/02) \n\ Y: kbdKeyRelease(2/02) \n\ 3: kbdKeyPress(1/02) \n\ 3: kbdKeyRelease(1/02) \n\ KP_3: kbdKeyPress(1/02) \n\ KP_3: kbdKeyRelease(1/02) \n\ Z: kbdKeyPress(1/02) \n\ Z: kbdKeyRelease(1/02) \n\ :plus: kbdKeyPress(0/02) \n\ :plus: kbdKeyRelease(0/02) \n\ KP_Add: kbdKeyPress(0/02) \n\ KP_Add: kbdKeyRelease(0/02) \n\ space: kbdKeyPress(0/02) \n\ space: kbdKeyRelease(0/02) \n\ Escape: kbdKeyPress(*) \n\ Escape: kbdKeyRelease(*) \n\ 0: kbdKeyPress(3/01) \n\ 0: kbdKeyRelease(3/01) \n\ KP_0: kbdKeyPress(3/01) \n\ KP_0: kbdKeyRelease(3/01) \n\ :period: kbdKeyPress(2/01) \n\ :period: kbdKeyRelease(2/01) \n\ KP_Decimal: kbdKeyPress(2/01) \n\ KP_Decimal: kbdKeyRelease(2/01) \n\ :semicolon: kbdKeyPress(1/01) \n\ :semicolon: kbdKeyRelease(1/01) \n\ Return: kbdKeyPress(0/01) \n\ Return: kbdKeyRelease(0/01) \n\ Tab: kbdKeyPress(0/01) \n\ Tab: kbdKeyRelease(0/01) \n\ KP_Enter: kbdKeyPress(0/01) \n\ KP_Enter: kbdKeyRelease(0/01)