ParallelGraphics Forums
General
You are here:
[Forums]
::
[General]
All forums
How to use forums
Favorites
Services
Registration
Registration
Forgot your password?
Help
Help
Support
Quick search
Subscribe to newsletters
email:
password:
General
[reply]
[back to forum]
[new message]
[all forums]
Subject:
Univeral Keyboard Sensor
Sender:
lobotomy@volgograd.ru
30.03.08 23:23
Hi!
I'm trying now to create the universal prototype for using as keyboard controller with both Cortona and Blaxxun/BS Contact without any special changes. It must automatically insert necessary node in dependency of Browser name. The method was quite obvious for me until I try to make dynamic routing of KbdSensor event using vrmlscript. But it works successful with Blaxxun. I hope somebody could help me find a solution.
#VRML V2.0 utf8
DEF NI NavigationInfo {headlight FALSE type "NONE"}
EXTERNPROTO DeviceSensor [
exposedField SFBool enabled
exposedField SFString device
exposedField SFString eventType
exposedField SFNode event
eventOut SFBool isActive
]["urn:inet:blaxxun.com:node:DeviceSensor","
http://www.blaxxun.com/vrml/protos/nodes.wrl#DeviceSensor","nodes.wrl#DeviceSensor"
]
DEF Clicker Script {
eventOut SFBool turnLeft
eventOut SFBool turnRight
eventOut SFBool moveUp
eventOut SFBool moveDown
eventOut SFBool zoomIn
eventOut SFBool zoomOut
# for Cortona:
eventIn SFInt32 c_keyDown
eventIn SFInt32 c_keyUp
# for Blaxxun:
eventIn SFNode b_event
url "javascript:
function c_keyDown(val) {process(val,true);}
function c_keyUp(val) {process(val,false);}
function b_event(e,t) {
if(e.type == 'keydown') process(e.keyCode,true);
else if(e.type == 'keyup') process(e.keyCode,false);
}
function process(key,mode) {
print('(test) key: '+key); // for test only
if(key==65574||key==1004||key==65623||key==87) moveUp = mode;
else if(key==65576||key==1005||key==65619||key==83) moveDown = mode;
else if(key==65573||key==1006||key==65601||key==65) turnLeft = mode;
else if(key==65575||key==1007||key==65604||key==68) turnRight = mode;
else if(key==65643||key==65723||key==107||key==187) zoomIn = mode;
else if(key==65745||key==65625||key==109||key==189) zoomOut = mode;
}
"
}
DEF Sensor Script {
field SFNode Clicker USE Clicker
field SFNode SensorNode NULL
# for test only
eventIn SFBool turnLeft
eventIn SFBool turnRight
eventIn SFBool moveUp
eventIn SFBool moveDown
eventIn SFBool zoomIn
eventIn SFBool zoomOut
# end of test
url "javascript:
// for test only
function turnLeft(val) {print('(test ok): left');}
function turnRight(val) {print('(test ok): right');}
function moveUp(val) {print('(test ok): up');}
function moveDown(val) {print('(test ok): down');}
function zoomIn(val) {print('(test ok): zoomIn');}
function zoomOut(val) {print('(test ok): zoomOut');}
// end of test
function initialize() {
var bsens = 'DeviceSensor {device \"STANDARD\" eventType \"keydown keyup character\"}';
var csens = 'KbdSensor {isActive TRUE}';
br=Browser.getName(); br=br.toLowerCase();
if(br.indexOf('blaxxun')>=0||br.indexOf('contact')>=0) {
SensorNode=Browser.createVrmlFromString(bsens)[0];
Browser.addRoute(SensorNode,'event',Clicker,'b_event');
}
else if(br.indexOf('cortona')>=0) {
SensorNode=Browser.createVrmlFromString('KbdSensor {isActive TRUE}')[0];
print('(existance test) KbdSensor.isActive: '+SensorNode.isActive); // for test only
Browser.addRoute(SensorNode,'keyDown',Clicker,'c_keyDown');
Browser.addRoute(SensorNode,'keyUp',Clicker,'c_keyUp');
}
}
"
}
# for test only
ROUTE Clicker.turnLeft TO Sensor.turnLeft
ROUTE Clicker.turnRight TO Sensor.turnRight
ROUTE Clicker.moveUp TO Sensor.moveUp
ROUTE Clicker.moveDown TO Sensor.moveDown
ROUTE Clicker.zoomIn TO Sensor.zoomIn
ROUTE Clicker.zoomOut TO Sensor.zoomOut
# end of test
[reply]
[back to forum]
[new message]
[all forums]
Univeral Keyboard Sensor
/
lobotomy@volgograd.ru
/ 30.03.08 23:23
Messages in thread:
1
[reply]
[back to forum]
[new message]
[all forums]
© 1998-2007
ParallelGraphics
. All rights reserved.
Terms of use
.