]>
Commit | Line | Data |
---|---|---|
f8990704 | 1 | <!DOCTYPE html> |
a575a383 JM |
2 | <html> |
3 | <head><title>Input Test</title></head> | |
4 | <body> | |
5 | <br><br> | |
6 | ||
ad3f7624 JM |
7 | Canvas: |
8 | <span id="button-selection" style="display: none;"> | |
9 | <input id="button1" type="button" value="L"><input id="button2" type="button" value="M"><input id="button4" type="button" value="R"> | |
10 | </span> | |
11 | <br> | |
a575a383 JM |
12 | <canvas id="canvas" width="640" height="20" |
13 | style="border-style: dotted; border-width: 1px;"> | |
14 | Canvas not supported. | |
15 | </canvas> | |
16 | ||
17 | <br> | |
18 | Results:<br> | |
19 | <textarea id="messages" style="font-size: 9;" cols=80 rows=25></textarea> | |
20 | </body> | |
21 | ||
22 | <!-- | |
99feba6b | 23 | <script type='text/javascript' |
a575a383 JM |
24 | src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> |
25 | --> | |
ae510306 SR |
26 | <script src="../core/util.js"></script> |
27 | <script src="../app/webutil.js"></script> | |
28 | <script src="../core/base64.js"></script> | |
bd5340c7 SR |
29 | <script src="../core/input/keysym.js"></script> |
30 | <script src="../core/input/keysymdef.js"></script> | |
31 | <script src="../core/input/xtscancodes.js"></script> | |
32 | <script src="../core/input/util.js"></script> | |
33 | <script src="../core/input/devices.js"></script> | |
ae510306 | 34 | <script src="../core/display.js"></script> |
a575a383 | 35 | <script> |
ad3f7624 JM |
36 | var msg_cnt = 0, iterations, |
37 | width = 400, height = 200, | |
38 | canvas, keyboard, mouse; | |
a575a383 | 39 | |
c96f9003 JM |
40 | var newline = "\n"; |
41 | if (Util.Engine.trident) { | |
42 | var newline = "<br>\n"; | |
43 | } | |
44 | ||
a575a383 JM |
45 | function message(str) { |
46 | console.log(str); | |
72bdd06e | 47 | cell = document.getElementById('messages'); |
c96f9003 | 48 | cell.innerHTML += msg_cnt + ": " + str + newline; |
a575a383 | 49 | cell.scrollTop = cell.scrollHeight; |
c96f9003 | 50 | msg_cnt++; |
a575a383 JM |
51 | } |
52 | ||
61dd52c9 JM |
53 | function mouseButton(x, y, down, bmask) { |
54 | msg = 'mouse x,y: ' + x + ',' + y + ' down: ' + down; | |
55 | msg += ' bmask: ' + bmask; | |
a575a383 JM |
56 | message(msg); |
57 | } | |
58 | ||
61dd52c9 JM |
59 | function mouseMove(x, y) { |
60 | msg = 'mouse x,y: ' + x + ',' + y; | |
61 | //console.log(msg); | |
a575a383 JM |
62 | } |
63 | ||
9ceef041 | 64 | function rfbKeyPress(keysym, down) { |
c96f9003 | 65 | var d = down ? "down" : " up "; |
9ceef041 | 66 | var key = keysyms.lookup(keysym); |
67 | var msg = "RFB keypress " + d + " keysym: " + keysym; | |
68 | if (key && key.keyname) { | |
69 | msg += " key name: " + key.keyname; | |
70 | } | |
71 | message(msg); | |
72 | } | |
73 | function rawKey(e) { | |
74 | msg = "raw key event " + e.type + | |
c96f9003 JM |
75 | " (key: " + e.keyCode + ", char: " + e.charCode + |
76 | ", which: " + e.which +")"; | |
a575a383 JM |
77 | message(msg); |
78 | } | |
79 | ||
ad3f7624 JM |
80 | function selectButton(num) { |
81 | var b, blist = [1,2,4]; | |
82 | ||
83 | if (typeof num === 'undefined') { | |
84 | // Show the default | |
85 | num = mouse.get_touchButton(); | |
86 | } else if (num === mouse.get_touchButton()) { | |
87 | // Set all buttons off (no clicks) | |
88 | mouse.set_touchButton(0); | |
89 | num = 0; | |
90 | } else { | |
91 | // Turn on one button | |
92 | mouse.set_touchButton(num); | |
93 | } | |
94 | ||
95 | for (b = 0; b < blist.length; b++) { | |
96 | if (blist[b] === num) { | |
72bdd06e SR |
97 | document.getElementById('button' + blist[b]).style.backgroundColor = "black"; |
98 | document.getElementById('button' + blist[b]).style.color = "lightgray"; | |
ad3f7624 | 99 | } else { |
72bdd06e SR |
100 | document.getElementById('button' + blist[b]).style.backgroundColor = ""; |
101 | document.getElementById('button' + blist[b]).style.color = ""; | |
ad3f7624 JM |
102 | } |
103 | } | |
104 | } | |
105 | ||
a575a383 | 106 | window.onload = function() { |
72bdd06e | 107 | canvas = new Display({'target' : document.getElementById('canvas')}); |
d3796c14 | 108 | keyboard = new Keyboard({'target': document, |
9ceef041 | 109 | 'onKeyPress': rfbKeyPress}); |
b4ef49ea SR |
110 | document.addEventListener('keypress', rawKey); |
111 | document.addEventListener('keydown', rawKey); | |
112 | document.addEventListener('keyup', rawKey); | |
72bdd06e | 113 | mouse = new Mouse({'target': document.getElementById('canvas'), |
ad3f7624 JM |
114 | 'onMouseButton': mouseButton, |
115 | 'onMouseMove': mouseMove}); | |
116 | ||
8db09746 | 117 | canvas.resize(width, height, true); |
d3796c14 JM |
118 | keyboard.grab(); |
119 | mouse.grab(); | |
ad3f7624 JM |
120 | message("Display initialized"); |
121 | ||
bea2b3fd | 122 | if (Util.isTouchDevice) { |
ad3f7624 | 123 | message("Touch device detected"); |
72bdd06e SR |
124 | document.getElementById('button-selection').style.display = "inline"; |
125 | document.getElementById('button1').onclick = function(){ selectButton(1) }; | |
126 | document.getElementById('button2').onclick = function(){ selectButton(2) }; | |
127 | document.getElementById('button4').onclick = function(){ selectButton(4) }; | |
ad3f7624 JM |
128 | selectButton(); |
129 | } | |
130 | ||
a575a383 JM |
131 | } |
132 | </script> | |
133 | </html> |