DEF FOCUSHANDLER Script { eventIn SFNode requestFocus field SFNode currentFocus NULL field SFNode inputHandler USE INPUTHANDLER field SFInt32 oldMask 0 url "vrmlscript: function initialize() { // tell what events oldMask = Browser.eventMask; Browser.eventMask = 1<<5; // KeyDown Only... // add event observer Browser.addRoute(Browser,'event_changed',inputHandler,'onEvent'); } function shutdown() { requestFocus(null,0); // remove event observer Browser.eventMask = oldMask; Browser.deleteRoute(Browser,'event_changed',inputHandler,'onEvent'); } function requestFocus(value,time) { if(currentFocus != null) { // Browser.print('Removing keyboard focus from thing...'); Browser.deleteRoute(inputHandler,'charCode', currentFocus,'characterInput'); currentFocus.setTransparency = 0.8; } currentFocus = null; if(value != null) { // Browser.print('Adding keyboard focus for thing...'); currentFocus = value; Browser.addRoute(inputHandler,'charCode', currentFocus,'characterInput'); currentFocus.setTransparency = 0; } } " } ##