// hook function that handles keyboard events in non-movie mode Function ScrollTracesKeyboardHook(sh) STRUCT WMWinHookStruct &sh NVAR/SDFR=$thePackageFolder mm = moviemode SVAR/SDFR=$thePackageFolder cw = currWin DFREF cwDFR = $(thePackageFolder + ":" + cw) NVAR tn = cwDFR:tracenumber NVAR sp = cwDFR:speed NVAR kb = cwDFR:keyboard SVAR pn = cwDFR:panelname STRUCT WMSetVariableAction sva STRUCT WMCheckboxAction cba variable hr = 0 // global movie mode not handled if (mm) return hr endif // handle only k to reactivate keyboard input if (!kb) if (sh.keycode==107) kb = 1 Checkbox keyboard, win=$(cw + "#" + pn), value = 1 hr = 1 endif return hr endif // keyboard requests of an active graph or panel (non-movie mode) // GetWindow $sh.winName activeSW // print "check Keyboard Hook ", S_Value if (sh.eventCode == 11) //print sh.keycode switch(sh.keycode) case 31: // up key sp += -1 if (sp<1) sp = 1 endif hr = 1 break case 30: // down key sp += 1 if (sp>20) sp = 20 endif hr = 1 break case 29: // right key sva.eventCode=99 if (GetKeyState(0) & 4) tn = inf else tn += 1 endif GoToTraceNumber(sva) hr = 1 break case 28: // left key sva.eventCode=99 if (GetKeyState(0) & 4) tn = 0 else tn += -1 endif GoToTraceNumber(sva) hr = 1 break case 97: // a key cba.ctrlName = "scale_a" cba.eventCode = 99 SetScaleMode(cba) hr = 1 break case 99: // c key cba.ctrlName = "scale_c" cba.eventCode = 99 SetScaleMode(cba) hr = 1 break case 102: // f key cba.ctrlName = "scale_f" cba.eventCode = 99 SetScaleMode(cba) hr = 1 break case 104: // h key cba.ctrlName = "scale_h" cba.eventCode = 99 SetScaleMode(cba) hr = 1 break case 107: // k key kb = 0 Checkbox keyboard, win=$(cw + "#" + pn), value=0 hr = 1 break case 114: // r key cba.ctrlName = "scale_r" cba.eventCode = 99 SetScaleMode(cba) hr = 1 break case 111: // o key cba.ctrlName = "once" cba.eventCode = 99 SetLoopMode(cba) hr = 1 break case 108: // l key cba.ctrlName = "loop" cba.eventCode = 99 SetLoopMode(cba) hr = 1 break endswitch endif return hr end