Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
libvncserver
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
libvncserver
Commits
0afa1da8
Commit
0afa1da8
authored
Jul 10, 2006
by
runge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x11vnc: improve uinput heuristics so button clicks work on qt-embedded.
parent
07952847
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1536 additions
and
1299 deletions
+1536
-1299
README
x11vnc/README
+1418
-1257
help.c
x11vnc/help.c
+18
-16
remote.c
x11vnc/remote.c
+1
-1
sslcmds.c
x11vnc/sslcmds.c
+1
-1
sslhelper.c
x11vnc/sslhelper.c
+1
-1
uinput.c
x11vnc/uinput.c
+75
-3
unixpw.c
x11vnc/unixpw.c
+1
-1
x11vnc.1
x11vnc/x11vnc.1
+18
-16
x11vnc.c
x11vnc/x11vnc.c
+1
-1
x11vnc.h
x11vnc/x11vnc.h
+1
-1
x11vnc_defs.c
x11vnc/x11vnc_defs.c
+1
-1
No files found.
x11vnc/README
View file @
0afa1da8
This source diff could not be displayed because it is too large. You can
view the blob
instead.
x11vnc/help.c
View file @
0afa1da8
...
...
@@ -454,7 +454,7 @@ void print_help(int mode) {
" and last line be
\"
__BEGIN_VIEWONLY__
\"
to have 2
\n
"
" full-access passwords)
\n
"
"
\n
"
#ifndef REL8
1
#ifndef REL8
x
"-unixpw [list] Use Unix username and password authentication. x11vnc
\n
"
" uses the su(1) program to verify the user's password.
\n
"
" [list] is an optional comma separated list of allowed
\n
"
...
...
@@ -2562,7 +2562,7 @@ void print_help(int mode) {
" -rawfb cons3 (force /dev/tty3)
\n
"
" -rawfb consx (no keystrokes or mouse)
\n
"
" -rawfb console:/dev/nonstd
\n
"
" -rawfb cons -pipeinput UINPUT:accel=
1.5
\n
"
" -rawfb cons -pipeinput UINPUT:accel=
4.0
\n
"
"
\n
"
"-freqtab file For use with
\"
-rawfb video
\"
for TV tuner devices to
\n
"
" specify station frequencies. Instead of using the built
\n
"
...
...
@@ -2640,28 +2640,30 @@ void print_help(int mode) {
" A UINPUT option of the form: accel=f, or accel=fx+fy
\n
"
" sets the mouse motion
\"
acceleration
\"
. This is used
\n
"
" to correct raw mouse relative motion into how much the
\n
"
" application cursor moves (x11vnc has no control over
\n
"
"
how the application interprets the raw mouse motions).
\n
"
"
Typically the acceleration for an X display is 2 (see
\n
"
"
xset
\"
m
\"
option).
\"
f
\"
is a floating point number,
\n
"
"
e.g. 2.0. Use
\"
fx+fy
\"
if you need to supply different
\n
"
" corrections for x and y.
\n
"
" application cursor moves (x11vnc has no control over
,
\n
"
"
or knowledge of how the windowing application interprets
\n
"
"
the raw mouse motions). Typically the acceleration
\n
"
"
for an X display is 2 (see xset
\"
m
\"
option).
\"
f
\"
\n
"
"
is a floating point number, e.g. 3.0. Use
\"
fx+fy
\"
\n
"
"
if you need to supply different
corrections for x and y.
\n
"
"
\n
"
" Note: the default acceleration is 2.0 since it seems
\n
"
" both X and qt-embedded often use this value.
\n
"
" both X and qt-embedded often (but not always) use
\n
"
" this value.
\n
"
"
\n
"
" Even with a correct accel setting the mouse position
\n
"
" will get out of sync (probably due to a mouse
\n
"
"
\"
threshold
\"
setting where the acceleration doe not
\n
"
" apply, set xset(1)). The option reset=N sets the number
\n
"
" of ms (default 500) after which the cursor is attempted
\n
"
" to be reset (by forcing the mouse to (0, 0) via small
\n
"
" increments and then back out to (x, y) in 1 jump), This
\n
"
" correction seems to be needed but can cause jerkiness
\n
"
" or unexpected behavior. Use reset=0 to disable.
\n
"
" apply, set xset(1)). The option reset=N sets the
\n
"
" number of ms (default 500) after which the cursor is
\n
"
" attempted to be reset (by forcing the mouse to (0,
\n
"
" 0) via small increments and then back out to (x, y)
\n
"
" in 1 jump), This correction seems to be needed but can
\n
"
" cause jerkiness or unexpected behavior with menus, etc.
\n
"
" Use reset=0 to disable.
\n
"
"
\n
"
" Example:
\n
"
" -pipeinput UINPUT:accel=
1
.0 -cursor none
\n
"
" -pipeinput UINPUT:accel=
4
.0 -cursor none
\n
"
"
\n
"
"-gui [gui-opts] Start up a simple tcl/tk gui based on the the remote
\n
"
" control options -remote/-query described below.
\n
"
...
...
x11vnc/remote.c
View file @
0afa1da8
...
...
@@ -4005,7 +4005,7 @@ char *process_remote_cmd(char *cmd, int stringonly) {
snprintf
(
buf
,
bufn
,
"aro=%s:%d"
,
p
,
no_external_cmds
);
}
else
if
(
!
strcmp
(
p
,
"passwdfile"
))
{
snprintf
(
buf
,
bufn
,
"aro=%s:%s"
,
p
,
NONUL
(
passwdfile
));
#ifndef REL8
1
#ifndef REL8
x
}
else
if
(
!
strcmp
(
p
,
"unixpw"
))
{
snprintf
(
buf
,
bufn
,
"aro=%s:%d"
,
p
,
unixpw
);
}
else
if
(
!
strcmp
(
p
,
"unixpw_nis"
))
{
...
...
x11vnc/sslcmds.c
View file @
0afa1da8
...
...
@@ -15,7 +15,7 @@
#endif
#endif
#ifdef REL8
1
#ifdef REL8
x
#undef SSLCMDS
#endif
...
...
x11vnc/sslhelper.c
View file @
0afa1da8
...
...
@@ -20,7 +20,7 @@
#endif
#endif
#ifdef REL8
1
#ifdef REL8
x
#undef FORK_OK
#undef LIBVNCSERVER_HAVE_LIBSSL
#define LIBVNCSERVER_HAVE_LIBSSL 0
...
...
x11vnc/uinput.c
View file @
0afa1da8
...
...
@@ -32,6 +32,9 @@ void parse_uinput_str(char *str);
void
uinput_pointer_command
(
int
mask
,
int
x
,
int
y
,
rfbClientPtr
client
);
void
uinput_key_command
(
int
down
,
int
keysym
,
rfbClientPtr
client
);
static
void
init_key_tracker
(
void
);
static
int
mod_is_down
(
void
);
static
int
key_is_down
(
void
);
static
void
set_uinput_accel_xy
(
double
fx
,
double
fy
);
static
void
shutdown_uinput
(
void
);
static
void
ptr_move
(
int
dx
,
int
dy
);
...
...
@@ -94,6 +97,45 @@ int check_uinput(void) {
#endif
}
static
int
key_pressed
[
256
];
static
int
key_ismod
[
256
];
static
void
init_key_tracker
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
256
;
i
++
)
{
key_pressed
[
i
]
=
0
;
key_ismod
[
i
]
=
0
;
}
i
=
lookup_code
(
XK_Shift_L
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Shift_R
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Control_L
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Control_R
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Alt_L
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Alt_R
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Meta_L
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
i
=
lookup_code
(
XK_Meta_R
);
if
(
0
<=
i
&&
i
<
256
)
key_ismod
[
i
]
=
1
;
}
static
int
mod_is_down
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
256
;
i
++
)
{
if
(
key_pressed
[
i
]
&&
key_ismod
[
i
])
{
return
1
;
}
}
return
0
;
}
static
int
key_is_down
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
256
;
i
++
)
{
if
(
key_pressed
[
i
])
{
return
1
;
}
}
return
0
;
}
static
void
shutdown_uinput
(
void
)
{
#ifdef UINPUT_OK
ioctl
(
fd
,
UI_DEV_DESTROY
);
...
...
@@ -112,6 +154,8 @@ int initialize_uinput(void) {
close
(
fd
);
fd
=
-
1
;
}
init_key_tracker
();
if
(
uinput_dev
)
{
fd
=
open
(
uinput_dev
,
O_RDWR
);
...
...
@@ -176,6 +220,7 @@ static double resid_x = 0.0;
static
double
resid_y
=
0
.
0
;
static
double
zero_delay
=
0
.
5
;
static
double
last_button_click
=
0
.
0
;
static
void
set_uinput_accel_xy
(
double
fx
,
double
fy
)
{
fudge_x
=
1
.
0
/
fx
;
...
...
@@ -353,6 +398,8 @@ static void button_click(int down, int btn) {
ev
.
value
=
0
;
write
(
fd
,
&
ev
,
sizeof
(
ev
));
last_button_click
=
dnow
();
#endif
}
...
...
@@ -361,6 +408,8 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) {
static
int
last_x
=
-
1
,
last_y
=
-
1
,
last_mask
=
-
1
;
static
double
last_zero
=
0
.
0
;
allowed_input_t
input
;
int
do_reset
;
double
now
;
if
(
db
)
fprintf
(
stderr
,
"uinput_pointer_command: %d %d - %d
\n
"
,
x
,
y
,
mask
);
...
...
@@ -369,13 +418,31 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) {
}
get_allowed_input
(
client
,
&
input
);
if
(
!
bmask
&&
dnow
()
>=
last_zero
+
zero_delay
&&
input
.
motion
)
{
now
=
dnow
();
do_reset
=
1
;
if
(
mask
||
bmask
)
{
do_reset
=
0
;
/* do not do reset if moust button down */
}
else
if
(
!
input
.
motion
)
{
do_reset
=
0
;
}
else
if
(
now
<
last_zero
+
zero_delay
)
{
do_reset
=
0
;
}
if
(
do_reset
)
{
if
(
mod_is_down
())
{
do_reset
=
0
;
}
else
if
(
now
<
last_button_click
+
0
.
25
)
{
do_reset
=
0
;
}
}
if
(
do_reset
)
{
static
int
first
=
1
;
if
(
zero_delay
>
0
.
0
||
first
)
{
/* try to push it to 0,0 */
int
tx
=
fudge_x
*
last_x
;
int
ty
=
fudge_y
*
last_y
;
int
tx
=
fudge_x
*
last_x
+
40
;
int
ty
=
fudge_y
*
last_y
+
40
;
int
bigjump
=
1
;
if
(
bigjump
)
{
...
...
@@ -399,6 +466,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) {
/* now jump back out */
ptr_rel
(
x
,
y
);
if
(
0
)
usleep
(
10
*
1000
);
last_x
=
x
;
last_y
=
y
;
...
...
@@ -488,6 +556,10 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) {
ev
.
code
=
SYN_REPORT
;
ev
.
value
=
0
;
write
(
fd
,
&
ev
,
sizeof
(
ev
));
if
(
0
<=
scancode
<
256
)
{
key_pressed
[
scancode
]
=
down
?
1
:
0
;
}
#endif
}
...
...
x11vnc/unixpw.c
View file @
0afa1da8
...
...
@@ -51,7 +51,7 @@ extern char *crypt(const char*, const char *);
#define IS_BSD
#endif
#ifdef REL8
1
#ifdef REL8
x
#undef UNIXPW_SU
#undef UNIXPW_CRYPT
#endif
...
...
x11vnc/x11vnc.1
View file @
0afa1da8
...
...
@@ -2,7 +2,7 @@
.TH X11VNC "1" "July 2006" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.8.2, lastmod: 2006-07-0
8
version: 0.8.2, lastmod: 2006-07-0
9
.SH SYNOPSIS
.B x11vnc
[OPTION]...
...
...
@@ -3026,7 +3026,7 @@ Examples:
\fB-rawfb\fR cons3 (force /dev/tty3)
\fB-rawfb\fR consx (no keystrokes or mouse)
\fB-rawfb\fR console:/dev/nonstd
\fB-rawfb\fR cons \fB-pipeinput\fR UINPUT:accel=
1.5
\fB-rawfb\fR cons \fB-pipeinput\fR UINPUT:accel=
4.0
.PP
\fB-freqtab\fR \fIfile\fR
.IP
...
...
@@ -3108,30 +3108,32 @@ and motion but not button clicks.
A UINPUT option of the form: accel=f, or accel=fx+fy
sets the mouse motion "acceleration". This is used
to correct raw mouse relative motion into how much the
application cursor moves (x11vnc has no control over
how the application interprets the raw mouse motions).
Typically the acceleration for an X display is 2 (see
xset "m" option). "f" is a floating point number,
e.g. 2.0. Use "fx+fy" if you need to supply different
corrections for x and y.
application cursor moves (x11vnc has no control over
,
or knowledge of how the windowing application interprets
the raw mouse motions). Typically the acceleration
for an X display is 2 (see xset "m" option). "f"
is a floating point number, e.g. 3.0. Use "fx+fy"
if you need to supply different
corrections for x and y.
.IP
Note: the default acceleration is 2.0 since it seems
both X and qt-embedded often use this value.
both X and qt-embedded often (but not always) use
this value.
.IP
Even with a correct accel setting the mouse position
will get out of sync (probably due to a mouse
"threshold" setting where the acceleration doe not
apply, set
.IR xset (1)
). The option reset=N sets the number
of ms (default 500) after which the cursor is attempted
to be reset (by forcing the mouse to (0, 0) via small
increments and then back out to (x, y) in 1 jump), This
correction seems to be needed but can cause jerkiness
or unexpected behavior. Use reset=0 to disable.
). The option reset=N sets the
number of ms (default 500) after which the cursor is
attempted to be reset (by forcing the mouse to (0,
0) via small increments and then back out to (x, y)
in 1 jump), This correction seems to be needed but can
cause jerkiness or unexpected behavior with menus, etc.
Use reset=0 to disable.
.IP
Example:
\fB-pipeinput\fR UINPUT:accel=
1
.0 \fB-cursor\fR none
\fB-pipeinput\fR UINPUT:accel=
4
.0 \fB-cursor\fR none
.PP
\fB-gui\fR \fI[gui-opts]\fR
.IP
...
...
x11vnc/x11vnc.c
View file @
0afa1da8
...
...
@@ -1642,7 +1642,7 @@ int main(int argc, char* argv[]) {
CHECK_ARGC
passwdfile
=
strdup
(
argv
[
++
i
]);
got_passwdfile
=
1
;
#ifndef REL8
1
#ifndef REL8
x
}
else
if
(
strstr
(
arg
,
"-unixpw"
)
==
arg
)
{
unixpw
=
1
;
if
(
strstr
(
arg
,
"-unixpw_nis"
))
{
...
...
x11vnc/x11vnc.h
View file @
0afa1da8
...
...
@@ -118,7 +118,7 @@
#define PASSWD_UNLESS_NOPW 0
#endif
#define noREL8
1
#define noREL8
x
/*
* Beginning of support for small binary footprint build for embedded
...
...
x11vnc/x11vnc_defs.c
View file @
0afa1da8
...
...
@@ -15,7 +15,7 @@ int xtrap_base_event_type = 0;
int
xdamage_base_event_type
=
0
;
/* date +'lastmod: %Y-%m-%d' */
char
lastmod
[]
=
"0.8.2 lastmod: 2006-07-0
8
"
;
char
lastmod
[]
=
"0.8.2 lastmod: 2006-07-0
9
"
;
/* X display info */
...
...
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