Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
N
noVNC
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rasky
noVNC
Commits
d9cbdc7d
Commit
d9cbdc7d
authored
Apr 06, 2010
by
Joel Martin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create getKeysym to lookup keysym from keyCode.
- Most of the keyboard is now functional.
parent
71085485
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
105 additions
and
9 deletions
+105
-9
canvas.js
canvas.js
+91
-0
vnc.js
vnc.js
+14
-9
No files found.
canvas.js
View file @
d9cbdc7d
...
...
@@ -141,7 +141,98 @@ rfbImage: function(x, y, width, height, arr) {
}
Canvas
.
ctx
.
putImageData
(
img
,
x
,
y
);
},
/* Translate DOM key event to keysym value */
getKeysym
:
function
(
e
)
{
evt
=
e
.
event
||
window
.
event
;
var
keysym
;
//debug(dirObj(e, null, 1));
/* Remap modifier and special keys */
switch
(
evt
.
keyCode
)
{
case
8
:
keysym
=
0xFF08
;
break
;
// BACKSPACE
case
9
:
keysym
=
0xFF09
;
break
;
// TAB
case
13
:
keysym
=
0xFF0D
;
break
;
// ENTER
case
27
:
keysym
=
0xFF1B
;
break
;
// ESCAPE
case
45
:
keysym
=
0xFF63
;
break
;
// INSERT
case
46
:
keysym
=
0xFFFF
;
break
;
// DELETE
case
36
:
keysym
=
0xFF50
;
break
;
// HOME
case
35
:
keysym
=
0xFF57
;
break
;
// END
case
33
:
keysym
=
0xFF55
;
break
;
// PAGE_UP
case
34
:
keysym
=
0xFF56
;
break
;
// PAGE_DOWN
case
37
:
keysym
=
0xFF51
;
break
;
// LEFT
case
38
:
keysym
=
0xFF52
;
break
;
// UP
case
39
:
keysym
=
0xFF53
;
break
;
// RIGHT
case
40
:
keysym
=
0xFF54
;
break
;
// DOWN
case
112
:
keysym
=
0xFFBE
;
break
;
// F1
case
113
:
keysym
=
0xFFBF
;
break
;
// F2
case
114
:
keysym
=
0xFFC0
;
break
;
// F3
case
115
:
keysym
=
0xFFC1
;
break
;
// F4
case
116
:
keysym
=
0xFFC2
;
break
;
// F5
case
117
:
keysym
=
0xFFC3
;
break
;
// F6
case
118
:
keysym
=
0xFFC4
;
break
;
// F7
case
119
:
keysym
=
0xFFC5
;
break
;
// F8
case
120
:
keysym
=
0xFFC6
;
break
;
// F9
case
121
:
keysym
=
0xFFC7
;
break
;
// F10
case
122
:
keysym
=
0xFFC8
;
break
;
// F11
case
123
:
keysym
=
0xFFC9
;
break
;
// F12
case
16
:
keysym
=
0xFFE1
;
break
;
// SHIFT
case
17
:
keysym
=
0xFFE3
;
break
;
// CONTROL
case
18
:
keysym
=
0xFFE7
;
break
;
// ALT
default
:
keysym
=
evt
.
keyCode
;
break
;
}
/* Remap symbols */
switch
(
keysym
)
{
case
186
:
keysym
=
59
;
break
;
// ; (IE)
case
187
:
keysym
=
61
;
break
;
// = (IE)
case
188
:
keysym
=
44
;
break
;
// , (Mozilla, IE)
//case 109 : // - (Mozilla)
case
189
:
keysym
=
45
;
break
;
// - (IE)
case
190
:
keysym
=
46
;
break
;
// . (Mozilla, IE)
case
191
:
keysym
=
47
;
break
;
// / (Mozilla, IE)
case
192
:
keysym
=
96
;
break
;
// ` (Mozilla, IE)
case
219
:
keysym
=
91
;
break
;
// [ (Mozilla, IE)
case
220
:
keysym
=
92
;
break
;
// \ (Mozilla, IE)
case
221
:
keysym
=
93
;
break
;
// ] (Mozilla, IE)
case
222
:
keysym
=
39
;
break
;
// ' (Mozilla, IE)
}
/* Remap shifted and unshifted keys */
if
(
!!
evt
.
shiftKey
)
{
switch
(
keysym
)
{
case
48
:
keysym
=
41
;
break
;
// ) (shifted 0)
case
49
:
keysym
=
33
;
break
;
// ! (shifted 1)
case
50
:
keysym
=
64
;
break
;
// @ (shifted 2)
case
51
:
keysym
=
35
;
break
;
// # (shifted 3)
case
52
:
keysym
=
36
;
break
;
// $ (shifted 4)
case
53
:
keysym
=
37
;
break
;
// % (shifted 5)
case
54
:
keysym
=
94
;
break
;
// ^ (shifted 6)
case
55
:
keysym
=
38
;
break
;
// & (shifted 7)
case
56
:
keysym
=
42
;
break
;
// * (shifted 8)
case
57
:
keysym
=
40
;
break
;
// ( (shifted 9)
case
59
:
keysym
=
58
;
break
;
// : (shifted `)
case
61
:
keysym
=
43
;
break
;
// + (shifted ;)
case
44
:
keysym
=
60
;
break
;
// < (shifted ,)
case
45
:
keysym
=
95
;
break
;
// _ (shifted -)
case
46
:
keysym
=
62
;
break
;
// > (shifted .)
case
47
:
keysym
=
63
;
break
;
// ? (shifted /)
case
96
:
keysym
=
126
;
break
;
// ~ (shifted `)
case
91
:
keysym
=
123
;
break
;
// { (shifted [)
case
92
:
keysym
=
124
;
break
;
// | (shifted \)
case
93
:
keysym
=
125
;
break
;
// } (shifted ])
case
39
:
keysym
=
34
;
break
;
// " (shifted ')
}
}
else
if
((
keysym
>=
65
)
&&
(
keysym
<=
90
))
{
/* Remap unshifted A-Z */
keysym
+=
32
;
}
return
keysym
;
}
};
vnc.js
View file @
d9cbdc7d
...
...
@@ -57,6 +57,7 @@ Array.prototype.shiftBytes = function (len) {
return
this
.
splice
(
0
,
len
);
}
/*
* Server message handlers
*/
...
...
@@ -322,7 +323,7 @@ setEncodings: function () {
},
fbUpdateRequest
:
function
(
incremental
,
x
,
y
,
xw
,
yw
)
{
debug
(
">> fbUpdateRequest"
);
//
debug(">> fbUpdateRequest");
var
arr
=
[
3
];
// msg-type
arr
.
push8
(
incremental
);
arr
.
push16
(
x
);
...
...
@@ -330,18 +331,19 @@ fbUpdateRequest: function (incremental, x, y, xw, yw) {
arr
.
push16
(
xw
);
arr
.
push16
(
yw
);
RFB
.
send_array
(
arr
);
debug
(
"<< fbUpdateRequest"
);
//
debug("<< fbUpdateRequest");
},
keyEvent
:
function
(
key
,
code
,
down
)
{
debug
(
">> keyEvent
: "
+
key
+
"("
+
code
+
")
"
+
down
);
keyEvent
:
function
(
key
sym
,
down
)
{
debug
(
">> keyEvent
, keysym: "
+
keysym
+
", down:
"
+
down
);
var
arr
=
[
4
];
// msg-type
arr
.
push8
(
down
);
arr
.
push16
(
0
);
arr
.
push32
(
code
);
arr
.
push32
(
keysym
);
//debug("keyEvent array: " + arr);
RFB
.
send_array
(
arr
);
RFB
.
fbUpdateRequest
(
1
,
0
,
0
,
fb_width
,
fb_height
);
debug
(
"<< keyEvent"
);
//
debug("<< keyEvent");
},
pointerEvent
:
function
()
{
...
...
@@ -356,11 +358,12 @@ clientCutText: function () {
*/
send_string
:
function
(
str
)
{
//debug(">> send_string: " + str);
ws
.
send
(
Base64
.
encode
(
str
));
},
send_array
:
function
(
arr
)
{
debug
(
"encoded
array: "
+
Base64
.
encode_array
(
arr
));
//debug(">> send_
array: " + Base64.encode_array(arr));
ws
.
send
(
Base64
.
encode_array
(
arr
));
},
...
...
@@ -389,13 +392,15 @@ poller: function () {
},
keyDown
:
function
(
e
)
{
//debug(">> keyDown: " + e.key + "(" + e.code + ")");
e
.
stop
();
RFB
.
keyEvent
(
e
.
key
,
e
.
code
,
1
);
RFB
.
keyEvent
(
Canvas
.
getKeysym
(
e
)
,
1
);
},
keyUp
:
function
(
e
)
{
//debug(">> keyUp: " + e.key + "(" + e.code + ")");
e
.
stop
();
RFB
.
keyEvent
(
e
.
key
,
e
.
code
,
0
);
RFB
.
keyEvent
(
Canvas
.
getKeysym
(
e
)
,
0
);
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment