|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$XConsortium: focus_icon.c /main/7 1995/07/14 12:02:11 drk $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* file: focus_icon.c
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Attempts to warp pointer to move on the icons rapidly to check
|
|
Packit |
b099d7 |
* enter/leave compression by mwm.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <X11/Xlib.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define DEFAULT_VALUE 20
|
|
Packit |
b099d7 |
#define DEFAULT_STEP 95
|
|
Packit |
b099d7 |
#define DEF_MAX_MIN_XPOS 500
|
|
Packit |
b099d7 |
#define DEF_MAX_MAX_XPOS 800
|
|
Packit |
b099d7 |
#define DEF_NUM_TRIALS 10
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Display *display;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
main(argc, argv)
|
|
Packit |
b099d7 |
int argc;
|
|
Packit |
b099d7 |
char *argv[];
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Window root_win;
|
|
Packit |
b099d7 |
Window root, child;
|
|
Packit |
b099d7 |
int root_x, root_y, win_x, win_y;
|
|
Packit |
b099d7 |
unsigned int key_buttons;
|
|
Packit |
b099d7 |
XWindowAttributes win_attrs;
|
|
Packit |
b099d7 |
int root_width, root_height;
|
|
Packit |
b099d7 |
int y_decr, x_pos, x_step, min_x, y_pos, max_xpos;
|
|
Packit |
b099d7 |
int num_trials;
|
|
Packit |
b099d7 |
int count = 0;
|
|
Packit |
b099d7 |
char c;
|
|
Packit |
b099d7 |
int i, j;
|
|
Packit |
b099d7 |
char d_name[44];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
num_trials = DEF_NUM_TRIALS;
|
|
Packit |
b099d7 |
x_step = DEFAULT_STEP;
|
|
Packit |
b099d7 |
x_pos = y_decr = DEFAULT_VALUE;
|
|
Packit |
b099d7 |
max_xpos = DEF_MAX_MAX_XPOS;
|
|
Packit |
b099d7 |
strcpy(d_name,":0");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (argc > 1)
|
|
Packit |
b099d7 |
while (--argc > 0) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
argv++;
|
|
Packit |
b099d7 |
c = **argv;
|
|
Packit |
b099d7 |
if (c != '-')
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
c = *(*argv + 1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch(c) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case 'x':
|
|
Packit |
b099d7 |
x_pos = atoi(*++argv);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case 'y':
|
|
Packit |
b099d7 |
y_decr = atoi(*++argv);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case 'n':
|
|
Packit |
b099d7 |
num_trials = atoi(*++argv);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case 's':
|
|
Packit |
b099d7 |
x_step = atoi(*++argv);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case 'm':
|
|
Packit |
b099d7 |
max_xpos = atoi(*++argv);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case 'd':
|
|
Packit |
b099d7 |
strcpy(d_name,*++argv);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case 'h':
|
|
Packit |
b099d7 |
print_usage();
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
argc--;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (x_pos <= 0)
|
|
Packit |
b099d7 |
x_pos = DEFAULT_VALUE;
|
|
Packit |
b099d7 |
if (y_decr <= 0)
|
|
Packit |
b099d7 |
y_decr = DEFAULT_VALUE;
|
|
Packit |
b099d7 |
if (num_trials <= 0)
|
|
Packit |
b099d7 |
num_trials = DEF_NUM_TRIALS;
|
|
Packit |
b099d7 |
if (x_step <= 0)
|
|
Packit |
b099d7 |
x_step = DEFAULT_STEP;
|
|
Packit |
b099d7 |
if (max_xpos <= 0)
|
|
Packit |
b099d7 |
max_xpos = DEF_MAX_MIN_XPOS;
|
|
Packit |
b099d7 |
if (max_xpos > DEF_MAX_MAX_XPOS)
|
|
Packit |
b099d7 |
max_xpos = DEF_MAX_MAX_XPOS;
|
|
Packit |
b099d7 |
min_x = x_pos;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((display = XOpenDisplay(d_name)) == NULL) {
|
|
Packit |
b099d7 |
fprintf(stderr, "Can not open display\n");
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
root_win = RootWindow(display, DefaultScreen(display));
|
|
Packit |
b099d7 |
XGetWindowAttributes(display, root_win, &win_attrs);
|
|
Packit |
b099d7 |
root_width = win_attrs.width;
|
|
Packit |
b099d7 |
root_height = win_attrs.height;
|
|
Packit |
b099d7 |
y_pos = root_height - y_decr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef DEBUG
|
|
Packit |
b099d7 |
printf("root_width = %d root_height = %d\n", root_width, root_height);
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i = 0; i < num_trials; i++) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Move left to right first */
|
|
Packit |
b099d7 |
for (x_pos = min_x; x_pos <= max_xpos; x_pos += x_step) {
|
|
Packit |
b099d7 |
XWarpPointer(display, None, root_win, 0, 0, root_width,
|
|
Packit |
b099d7 |
root_height, x_pos, y_pos);
|
|
Packit |
b099d7 |
XFlush(display);
|
|
Packit |
b099d7 |
count++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* And then move right to left */
|
|
Packit |
b099d7 |
for (x_pos = max_xpos; x_pos >= min_x; x_pos -= x_step) {
|
|
Packit |
b099d7 |
XWarpPointer(display, None, root_win, 0, 0, root_width,
|
|
Packit |
b099d7 |
root_height, x_pos, y_pos);
|
|
Packit |
b099d7 |
XFlush(display);
|
|
Packit |
b099d7 |
count++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
#ifdef DEBUG
|
|
Packit |
b099d7 |
printf ("no. of warps = %d\n", count);
|
|
Packit |
b099d7 |
XQueryPointer(display, root_win, &root, &child, &root_x, &root_y,
|
|
Packit |
b099d7 |
&win_x, &win_y, &key_buttons);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
printf("root_x = %d root_y = %d win_x = %d win_y = %d key_buttons = %d\n",
|
|
Packit |
b099d7 |
root_x, root_y, win_x, win_y, key_buttons);
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
print_usage()
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
printf("Usage: focus [-x startx] [-y y_decr] [-n trials] [-m max_xpos] [-s x_step] [-d display] [-h]\n");
|
|
Packit |
b099d7 |
printf("where - \n");
|
|
Packit |
b099d7 |
printf("\tstartx - X position from where to start moving the cursor\n");
|
|
Packit |
b099d7 |
printf("\ty_decr - Y value to be subtracted from screen height to get y pos.\n");
|
|
Packit |
b099d7 |
printf("\ttrials - no. of roundtrips that the cursor will make\n");
|
|
Packit |
b099d7 |
printf("\tmax_xpos - Max. value of X cursor will move to in forward direction\n");
|
|
Packit |
b099d7 |
printf("\tx_step - steps in no. of pixels cursor willmove in X direction\n");
|
|
Packit |
b099d7 |
printf("\tdisplay - display name\n");
|
|
Packit |
b099d7 |
printf("\t\"-h\" - will print out this message\n");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|