summaryrefslogtreecommitdiffstats
path: root/x11vnc/misc/uinput.pl
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/misc/uinput.pl')
-rwxr-xr-xx11vnc/misc/uinput.pl946
1 files changed, 0 insertions, 946 deletions
diff --git a/x11vnc/misc/uinput.pl b/x11vnc/misc/uinput.pl
deleted file mode 100755
index 9620140..0000000
--- a/x11vnc/misc/uinput.pl
+++ /dev/null
@@ -1,946 +0,0 @@
-#!/usr/bin/perl
-
-# This is a test injection script for Linux uinput.
-# It can be handy working out / troubleshooting Linux uinput injection on a new device.
-
-#
-# Copyright (c) 2010 by Karl J. Runge <runge@karlrunge.com>
-#
-# uinput.pl is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at
-# your option) any later version.
-#
-# uinput.pl is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with uinput.pl; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
-# or see <http://www.gnu.org/licenses/>.
-#
-
-set_constants();
-
-# options for what injection to handle:
-$rel = 1;
-$abs = 1;
-$touch = 1;
-$allkeys = 1;
-
-# these can be set via env:
-
-$WIDTH = $ENV{WIDTH};
-$WIDTH = 480 unless $WIDTH;
-$HEIGHT = $ENV{HEIGHT};
-$HEIGHT = 640 unless $HEIGHT;
-$DEV = $ENV{DEV};
-$DEV = "/dev/input/uinput" unless $DEV;
-
-# this fills in name and input type part of uinput_user_dev struct:
-
-$udev = "uinput.pl";
-$n = 80 - length($udev);
-$udev .= "\0" x $n;
-
-$udev .= "\0" x 2; # bus
-$udev .= "\0" x 2; # vendor
-$udev .= "\0" x 2; # product
-$udev .= "\0" x 2; # version
-
-$udev .= "\0" x 4; # ff_effects_max
-
-# this fills in the abs arrays:
-#
-foreach $type (qw(absmax absmin absfuzz absflat)) {
- $n = $ABS_MAX + 1;
- for ($j = 0; $j < $n; $j++) {
- if ($abs && $type eq 'absmax' && $j == $ABS_X) {
- $udev .= pack("i", $WIDTH-1);
- } elsif ($abs && $type eq 'absmax' && $j == $ABS_Y) {
- $udev .= pack("i", $HEIGHT-1);
- } else {
- $udev .= "\0" x 4;
- }
- }
-}
-
-print "udev: ", length($udev) . " '$udev'\n";
-
-$modes = $O_RDWR;
-$modes = $O_WRONLY | $O_NDELAY;
-printf("open modes: 0x%x\n", $modes);
-
-sysopen(FD, $DEV, $modes) || die "$DEV: $!";
-
-if ($rel) {
- io_ctl($UI_SET_EVBIT, $EV_REL);
- io_ctl($UI_SET_RELBIT, $REL_X);
- io_ctl($UI_SET_RELBIT, $REL_Y);
-}
-
-io_ctl($UI_SET_EVBIT, $EV_KEY);
-
-io_ctl($UI_SET_EVBIT, $EV_SYN);
-
-for ($i=0; $i < 256; $i++) {
- last unless $allkeys;
- io_ctl($UI_SET_KEYBIT, $i);
-}
-
-io_ctl($UI_SET_KEYBIT, $BTN_MOUSE);
-io_ctl($UI_SET_KEYBIT, $BTN_LEFT);
-io_ctl($UI_SET_KEYBIT, $BTN_MIDDLE);
-io_ctl($UI_SET_KEYBIT, $BTN_RIGHT);
-io_ctl($UI_SET_KEYBIT, $BTN_FORWARD);
-io_ctl($UI_SET_KEYBIT, $BTN_BACK);
-
-if ($abs) {
- io_ctl($UI_SET_KEYBIT, $BTN_TOUCH) if $touch;
- io_ctl($UI_SET_EVBIT, $EV_ABS);
- io_ctl($UI_SET_ABSBIT, $ABS_X);
- io_ctl($UI_SET_ABSBIT, $ABS_Y);
-}
-
-$ret = syswrite(FD, $udev, length($udev));
-print "syswrite: $ret\n";
-
-io_ctl($UI_DEV_CREATE);
-fsleep(0.25);
-
-# this should show our new virtual device:
-#
-system("cat /proc/bus/input/devices 1>&2");
-print STDERR "\n";
-
-#################################################
-# put in your various test injection events here:
-
-#do_key($KEY_A, 1, 0.1);
-#do_key($KEY_A, 0, 0.1);
-
-#do_key($KEY_POWER, 1, 0.1);
-#do_key($KEY_POWER, 0, 0.1);
-
-do_abs(118, 452, 0, 0.1);
-
-do_abs(110, 572, 1, 0.1);
-
-do_btn($BTN_TOUCH, 1, 0.1);
-do_btn($BTN_TOUCH, 0, 0.1);
-
-do_btn($BTN_MOUSE, 1, 0.1);
-do_btn($BTN_MOUSE, 0, 0.1);
-#################################################
-
-fsleep(0.25);
-io_ctl($UI_DEV_DESTROY);
-
-close(FD);
-
-exit(0);
-
-sub io_ctl {
- my ($cmd, $val) = @_;
- if (defined $val) {
- my $ret = syscall($linux_ioctl_syscall, fileno(FD), $cmd, $val);
- my $err = $!; $err = '' if $ret == 0;
- print STDERR "io_ctl(FD, $cmd, $val) = $ret $err\n";
- } else {
- my $ret = syscall($linux_ioctl_syscall, fileno(FD), $cmd);
- my $err = $!; $err = '' if $ret == 0;
- print STDERR "io_ctl(FD, $cmd) = $ret $err\n";
- }
-}
-
-sub do_syn {
- my $ev = gtod();
- $ev .= pack("S", $EV_SYN);
- $ev .= pack("S", $SYN_REPORT);
- $ev .= pack("i", 0);
- print STDERR "do_syn EV_SYN\n";
- my $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_syn: $!\n";
- }
-}
-
-sub do_key {
- my ($key, $down, $sleep) = @_;
- my $ev = gtod();
- $ev .= pack("S", $EV_KEY);
- $ev .= pack("S", $key);
- $ev .= pack("i", $down);
- print STDERR "do_key $key $down\n";
- my $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_key: $!\n";
- }
- do_syn();
- fsleep($sleep);
- print STDERR "\n";
-}
-
-sub do_btn {
- my ($button, $down, $sleep) = @_;
- my $ev = gtod();
- $ev .= pack("S", $EV_KEY);
- $ev .= pack("S", $button);
- $ev .= pack("i", $down);
- print STDERR "do_btn $button $down\n";
- my $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_btn: $!\n";
- }
- do_syn();
- fsleep($sleep);
- print STDERR "\n";
-}
-
-sub do_abs {
- my ($x, $y, $p, $sleep) = @_;
- my $ev = gtod();
- $ev .= pack("S", $EV_ABS);
- $ev .= pack("S", $ABS_Y);
- $ev .= pack("i", $y);
- print STDERR "do_abs y=$y\n";
- my $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_abs: $!\n";
- }
- $ev = gtod();
- $ev .= pack("S", $EV_ABS);
- $ev .= pack("S", $ABS_X);
- $ev .= pack("i", $x);
- print STDERR "do_abs x=$x\n";
- $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_abs: $!\n";
- }
- $ev = gtod();
- $ev .= pack("S", $EV_ABS);
- $ev .= pack("S", $ABS_PRESSURE);
- $ev .= pack("i", $p);
- print STDERR "do_abs p=$p\n";
- $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_abs: $!\n";
- }
- do_syn();
- fsleep($sleep);
- print STDERR "\n";
-}
-
-sub do_rel {
- my ($dx, $dy, $sleep) = @_;
- my $ev = gtod();
- $ev .= pack("S", $EV_REL);
- $ev .= pack("S", $REL_Y);
- $ev .= pack("i", $dy);
- print STDERR "do_rel dy=$dy\n";
- my $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_rel: $!\n";
- }
- $ev = gtod();
- $ev .= pack("S", $EV_REL);
- $ev .= pack("S", $REL_X);
- $ev .= pack("i", $dx);
- print STDERR "do_rel dx=$dx\n";
- $ret = syswrite(FD, $ev, length($ev));
- if (!defined $ret) {
- print STDERR "do_rel: $!\n";
- }
- do_syn();
- fsleep($sleep);
- print STDERR "\n";
-}
-
-sub gtod {
- $tv = ("\0" x 4) x 2; # assumes long is 4 bytes. FIXME: use pack.
- $tz = ("\0" x 4) x 2;
- syscall($linux_gettimeofday_syscall, $tv, $tz);
- return $tv;
-}
-
-sub fsleep {
- my ($time) = @_;
- select(undef, undef, undef, $time) if $time;
-}
-
-sub set_constants {
-
-# from /usr/include/linux/uinput.h /usr/include/linux/input.h and x11vnc.
-
-# #define ABS_MAX 0x3f = 63
-#
-# #define UINPUT_MAX_NAME_SIZE 80
-#
-# struct input_id {
-# __u16 bustype;
-# __u16 vendor;
-# __u16 product;
-# __u16 version;
-# };
-#
-# struct uinput_user_dev {
-# char name[UINPUT_MAX_NAME_SIZE];
-# struct input_id id;
-# int ff_effects_max;
-# int absmax[ABS_MAX + 1];
-# int absmin[ABS_MAX + 1];
-# int absfuzz[ABS_MAX + 1];
-# int absflat[ABS_MAX + 1];
-# };
-# #endif /* __UINPUT_H_ */
-
-$EV_SYN = 0x00;
-$EV_KEY = 0x01;
-$EV_REL = 0x02;
-$EV_ABS = 0x03;
-$EV_MSC = 0x04;
-$EV_SW = 0x05;
-$EV_LED = 0x11;
-$EV_SND = 0x12;
-$EV_REP = 0x14;
-$EV_FF = 0x15;
-$EV_PWR = 0x16;
-$EV_FF_STATUS = 0x17;
-$EV_MAX = 0x1f;
-
-$ID_BUS = 0;
-$ID_VENDOR = 1;
-$ID_PRODUCT = 2;
-$ID_VERSION = 3;
-
-$BUS_PCI = 0x01;
-$BUS_ISAPNP = 0x02;
-$BUS_USB = 0x03;
-$BUS_HIL = 0x04;
-$BUS_BLUETOOTH = 0x05;
-$BUS_VIRTUAL = 0x06;
-
-$BUS_ISA = 0x10;
-$BUS_I8042 = 0x11;
-$BUS_XTKBD = 0x12;
-$BUS_RS232 = 0x13;
-$BUS_GAMEPORT = 0x14;
-$BUS_PARPORT = 0x15;
-$BUS_AMIGA = 0x16;
-$BUS_ADB = 0x17;
-$BUS_I2C = 0x18;
-$BUS_HOST = 0x19;
-$BUS_GSC = 0x1A;
-$BUS_ATARI = 0x1B;
-
-$REL_X = 0x00;
-$REL_Y = 0x01;
-$REL_Z = 0x02;
-$REL_RX = 0x03;
-$REL_RY = 0x04;
-$REL_RZ = 0x05;
-$REL_HWHEEL = 0x06;
-$REL_DIAL = 0x07;
-$REL_WHEEL = 0x08;
-$REL_MISC = 0x09;
-
-$ABS_X = 0x00;
-$ABS_Y = 0x01;
-$ABS_Z = 0x02;
-$ABS_RX = 0x03;
-$ABS_RY = 0x04;
-$ABS_RZ = 0x05;
-$ABS_THROTTLE = 0x06;
-$ABS_RUDDER = 0x07;
-$ABS_WHEEL = 0x08;
-$ABS_GAS = 0x09;
-$ABS_BRAKE = 0x0a;
-$ABS_HAT0X = 0x10;
-$ABS_HAT0Y = 0x11;
-$ABS_HAT1X = 0x12;
-$ABS_HAT1Y = 0x13;
-$ABS_HAT2X = 0x14;
-$ABS_HAT2Y = 0x15;
-$ABS_HAT3X = 0x16;
-$ABS_HAT3Y = 0x17;
-$ABS_PRESSURE = 0x18;
-$ABS_DISTANCE = 0x19;
-$ABS_TILT_X = 0x1a;
-$ABS_TILT_Y = 0x1b;
-$ABS_TOOL_WIDTH = 0x1c;
-$ABS_VOLUME = 0x20;
-$ABS_MISC = 0x28;
-$ABS_MT_TOUCH_MAJOR = 0x30;
-$ABS_MT_TOUCH_MINOR = 0x31;
-$ABS_MT_WIDTH_MAJOR = 0x32;
-$ABS_MT_WIDTH_MINOR = 0x33;
-$ABS_MT_ORIENTATION = 0x34;
-$ABS_MT_POSITION_X = 0x35;
-$ABS_MT_POSITION_Y = 0x36;
-$ABS_MT_TOOL_TYPE = 0x37;
-$ABS_MT_BLOB_ID = 0x38;
-$ABS_MT_TRACKING_ID = 0x39;
-#$ABS_MAX = 0x3f;
-
-
-$BTN_MISC = 0x100;
-$BTN_0 = 0x100;
-$BTN_1 = 0x101;
-$BTN_2 = 0x102;
-$BTN_3 = 0x103;
-$BTN_4 = 0x104;
-$BTN_5 = 0x105;
-$BTN_6 = 0x106;
-$BTN_7 = 0x107;
-$BTN_8 = 0x108;
-$BTN_9 = 0x109;
-
-$BTN_MOUSE = 0x110;
-$BTN_LEFT = 0x110;
-$BTN_RIGHT = 0x111;
-$BTN_MIDDLE = 0x112;
-$BTN_SIDE = 0x113;
-$BTN_EXTRA = 0x114;
-$BTN_FORWARD = 0x115;
-$BTN_BACK = 0x116;
-$BTN_TASK = 0x117;
-
-$BTN_JOYSTICK = 0x120;
-$BTN_TRIGGER = 0x120;
-$BTN_THUMB = 0x121;
-$BTN_THUMB2 = 0x122;
-$BTN_TOP = 0x123;
-$BTN_TOP2 = 0x124;
-$BTN_PINKIE = 0x125;
-$BTN_BASE = 0x126;
-$BTN_BASE2 = 0x127;
-$BTN_BASE3 = 0x128;
-$BTN_BASE4 = 0x129;
-$BTN_BASE5 = 0x12a;
-$BTN_BASE6 = 0x12b;
-$BTN_DEAD = 0x12f;
-
-$BTN_GAMEPAD = 0x130;
-$BTN_A = 0x130;
-$BTN_B = 0x131;
-$BTN_C = 0x132;
-$BTN_X = 0x133;
-$BTN_Y = 0x134;
-$BTN_Z = 0x135;
-$BTN_TL = 0x136;
-$BTN_TR = 0x137;
-$BTN_TL2 = 0x138;
-$BTN_TR2 = 0x139;
-$BTN_SELECT = 0x13a;
-$BTN_START = 0x13b;
-$BTN_MODE = 0x13c;
-$BTN_THUMBL = 0x13d;
-$BTN_THUMBR = 0x13e;
-
-$BTN_DIGI = 0x140;
-$BTN_TOOL_PEN = 0x140;
-$BTN_TOOL_RUBBER = 0x141;
-$BTN_TOOL_BRUSH = 0x142;
-$BTN_TOOL_PENCIL = 0x143;
-$BTN_TOOL_AIRBRUSH = 0x144;
-$BTN_TOOL_FINGER = 0x145;
-$BTN_TOOL_MOUSE = 0x146;
-$BTN_TOOL_LENS = 0x147;
-$BTN_TOUCH = 0x14a;
-$BTN_STYLUS = 0x14b;
-$BTN_STYLUS2 = 0x14c;
-$BTN_TOOL_DOUBLETAP = 0x14d;
-$BTN_TOOL_TRIPLETAP = 0x14e;
-
-$BTN_WHEEL = 0x150;
-$BTN_GEAR_DOWN = 0x150;
-$BTN_GEAR_UP = 0x151;
-
-$SYN_REPORT = 0;
-$SYN_CONFIG = 1;
-$SYN_MT_REPORT = 2;
-
-$KEY_RESERVED = 0;
-$KEY_ESC = 1;
-$KEY_1 = 2;
-$KEY_2 = 3;
-$KEY_3 = 4;
-$KEY_4 = 5;
-$KEY_5 = 6;
-$KEY_6 = 7;
-$KEY_7 = 8;
-$KEY_8 = 9;
-$KEY_9 = 10;
-$KEY_0 = 11;
-$KEY_MINUS = 12;
-$KEY_EQUAL = 13;
-$KEY_BACKSPACE = 14;
-$KEY_TAB = 15;
-$KEY_Q = 16;
-$KEY_W = 17;
-$KEY_E = 18;
-$KEY_R = 19;
-$KEY_T = 20;
-$KEY_Y = 21;
-$KEY_U = 22;
-$KEY_I = 23;
-$KEY_O = 24;
-$KEY_P = 25;
-$KEY_LEFTBRACE = 26;
-$KEY_RIGHTBRACE = 27;
-$KEY_ENTER = 28;
-$KEY_LEFTCTRL = 29;
-$KEY_A = 30;
-$KEY_S = 31;
-$KEY_D = 32;
-$KEY_F = 33;
-$KEY_G = 34;
-$KEY_H = 35;
-$KEY_J = 36;
-$KEY_K = 37;
-$KEY_L = 38;
-$KEY_SEMICOLON = 39;
-$KEY_APOSTROPHE = 40;
-$KEY_GRAVE = 41;
-$KEY_LEFTSHIFT = 42;
-$KEY_BACKSLASH = 43;
-$KEY_Z = 44;
-$KEY_X = 45;
-$KEY_C = 46;
-$KEY_V = 47;
-$KEY_B = 48;
-$KEY_N = 49;
-$KEY_M = 50;
-$KEY_COMMA = 51;
-$KEY_DOT = 52;
-$KEY_SLASH = 53;
-$KEY_RIGHTSHIFT = 54;
-$KEY_KPASTERISK = 55;
-$KEY_LEFTALT = 56;
-$KEY_SPACE = 57;
-$KEY_CAPSLOCK = 58;
-$KEY_F1 = 59;
-$KEY_F2 = 60;
-$KEY_F3 = 61;
-$KEY_F4 = 62;
-$KEY_F5 = 63;
-$KEY_F6 = 64;
-$KEY_F7 = 65;
-$KEY_F8 = 66;
-$KEY_F9 = 67;
-$KEY_F10 = 68;
-$KEY_NUMLOCK = 69;
-$KEY_SCROLLLOCK = 70;
-$KEY_KP7 = 71;
-$KEY_KP8 = 72;
-$KEY_KP9 = 73;
-$KEY_KPMINUS = 74;
-$KEY_KP4 = 75;
-$KEY_KP5 = 76;
-$KEY_KP6 = 77;
-$KEY_KPPLUS = 78;
-$KEY_KP1 = 79;
-$KEY_KP2 = 80;
-$KEY_KP3 = 81;
-$KEY_KP0 = 82;
-$KEY_KPDOT = 83;
-$KEY_103RD = 84;
-$KEY_F13 = 85;
-$KEY_102ND = 86;
-$KEY_F11 = 87;
-$KEY_F12 = 88;
-$KEY_F14 = 89;
-$KEY_F15 = 90;
-$KEY_F16 = 91;
-$KEY_F17 = 92;
-$KEY_F18 = 93;
-$KEY_F19 = 94;
-$KEY_F20 = 95;
-$KEY_KPENTER = 96;
-$KEY_RIGHTCTRL = 97;
-$KEY_KPSLASH = 98;
-$KEY_SYSRQ = 99;
-$KEY_RIGHTALT = 100;
-$KEY_LINEFEED = 101;
-$KEY_HOME = 102;
-$KEY_UP = 103;
-$KEY_PAGEUP = 104;
-$KEY_LEFT = 105;
-$KEY_RIGHT = 106;
-$KEY_END = 107;
-$KEY_DOWN = 108;
-$KEY_PAGEDOWN = 109;
-$KEY_INSERT = 110;
-$KEY_DELETE = 111;
-$KEY_MACRO = 112;
-$KEY_MUTE = 113;
-$KEY_VOLUMEDOWN = 114;
-$KEY_VOLUMEUP = 115;
-$KEY_POWER = 116;
-$KEY_KPEQUAL = 117;
-$KEY_KPPLUSMINUS = 118;
-$KEY_PAUSE = 119;
-$KEY_F21 = 120;
-$KEY_F22 = 121;
-$KEY_F23 = 122;
-$KEY_F24 = 123;
-$KEY_KPCOMMA = 124;
-$KEY_LEFTMETA = 125;
-$KEY_RIGHTMETA = 126;
-$KEY_COMPOSE = 127;
-$KEY_STOP = 128;
-$KEY_AGAIN = 129;
-$KEY_PROPS = 130;
-$KEY_UNDO = 131;
-$KEY_FRONT = 132;
-$KEY_COPY = 133;
-$KEY_OPEN = 134;
-$KEY_PASTE = 135;
-$KEY_FIND = 136;
-$KEY_CUT = 137;
-$KEY_HELP = 138;
-$KEY_MENU = 139;
-$KEY_CALC = 140;
-$KEY_SETUP = 141;
-$KEY_SLEEP = 142;
-$KEY_WAKEUP = 143;
-$KEY_FILE = 144;
-$KEY_SENDFILE = 145;
-$KEY_DELETEFILE = 146;
-$KEY_XFER = 147;
-$KEY_PROG1 = 148;
-$KEY_PROG2 = 149;
-$KEY_WWW = 150;
-$KEY_MSDOS = 151;
-$KEY_COFFEE = 152;
-$KEY_DIRECTION = 153;
-$KEY_CYCLEWINDOWS = 154;
-$KEY_MAIL = 155;
-$KEY_BOOKMARKS = 156;
-$KEY_COMPUTER = 157;
-$KEY_BACK = 158;
-$KEY_FORWARD = 159;
-$KEY_CLOSECD = 160;
-$KEY_EJECTCD = 161;
-$KEY_EJECTCLOSECD = 162;
-$KEY_NEXTSONG = 163;
-$KEY_PLAYPAUSE = 164;
-$KEY_PREVIOUSSONG = 165;
-$KEY_STOPCD = 166;
-$KEY_RECORD = 167;
-$KEY_REWIND = 168;
-$KEY_PHONE = 169;
-$KEY_ISO = 170;
-$KEY_CONFIG = 171;
-$KEY_HOMEPAGE = 172;
-$KEY_REFRESH = 173;
-$KEY_EXIT = 174;
-$KEY_MOVE = 175;
-$KEY_EDIT = 176;
-$KEY_SCROLLUP = 177;
-$KEY_SCROLLDOWN = 178;
-$KEY_KPLEFTPAREN = 179;
-$KEY_KPRIGHTPAREN = 180;
-$KEY_INTL1 = 181;
-$KEY_INTL2 = 182;
-$KEY_INTL3 = 183;
-$KEY_INTL4 = 184;
-$KEY_INTL5 = 185;
-$KEY_INTL6 = 186;
-$KEY_INTL7 = 187;
-$KEY_INTL8 = 188;
-$KEY_INTL9 = 189;
-$KEY_LANG1 = 190;
-$KEY_LANG2 = 191;
-$KEY_LANG3 = 192;
-$KEY_LANG4 = 193;
-$KEY_LANG5 = 194;
-$KEY_LANG6 = 195;
-$KEY_LANG7 = 196;
-$KEY_LANG8 = 197;
-$KEY_LANG9 = 198;
-$KEY_PLAYCD = 200;
-$KEY_PAUSECD = 201;
-$KEY_PROG3 = 202;
-$KEY_PROG4 = 203;
-$KEY_SUSPEND = 205;
-$KEY_CLOSE = 206;
-$KEY_PLAY = 207;
-$KEY_FASTFORWARD = 208;
-$KEY_BASSBOOST = 209;
-$KEY_PRINT = 210;
-$KEY_HP = 211;
-$KEY_CAMERA = 212;
-$KEY_SOUND = 213;
-$KEY_QUESTION = 214;
-$KEY_EMAIL = 215;
-$KEY_CHAT = 216;
-$KEY_SEARCH = 217;
-$KEY_CONNECT = 218;
-$KEY_FINANCE = 219;
-$KEY_SPORT = 220;
-$KEY_SHOP = 221;
-$KEY_ALTERASE = 222;
-$KEY_CANCEL = 223;
-$KEY_BRIGHTNESSDOWN = 224;
-$KEY_BRIGHTNESSUP = 225;
-$KEY_MEDIA = 226;
-$KEY_UNKNOWN = 240;
-$KEY_OK = 0x160;
-$KEY_SELECT = 0x161;
-$KEY_GOTO = 0x162;
-$KEY_CLEAR = 0x163;
-$KEY_POWER2 = 0x164;
-$KEY_OPTION = 0x165;
-$KEY_INFO = 0x166;
-$KEY_TIME = 0x167;
-$KEY_VENDOR = 0x168;
-$KEY_ARCHIVE = 0x169;
-$KEY_PROGRAM = 0x16a;
-$KEY_CHANNEL = 0x16b;
-$KEY_FAVORITES = 0x16c;
-$KEY_EPG = 0x16d;
-$KEY_PVR = 0x16e;
-$KEY_MHP = 0x16f;
-$KEY_LANGUAGE = 0x170;
-$KEY_TITLE = 0x171;
-$KEY_SUBTITLE = 0x172;
-$KEY_ANGLE = 0x173;
-$KEY_ZOOM = 0x174;
-$KEY_MODE = 0x175;
-$KEY_KEYBOARD = 0x176;
-$KEY_SCREEN = 0x177;
-$KEY_PC = 0x178;
-$KEY_TV = 0x179;
-$KEY_TV2 = 0x17a;
-$KEY_VCR = 0x17b;
-$KEY_VCR2 = 0x17c;
-$KEY_SAT = 0x17d;
-$KEY_SAT2 = 0x17e;
-$KEY_CD = 0x17f;
-$KEY_TAPE = 0x180;
-$KEY_RADIO = 0x181;
-$KEY_TUNER = 0x182;
-$KEY_PLAYER = 0x183;
-$KEY_TEXT = 0x184;
-$KEY_DVD = 0x185;
-$KEY_AUX = 0x186;
-$KEY_MP3 = 0x187;
-$KEY_AUDIO = 0x188;
-$KEY_VIDEO = 0x189;
-$KEY_DIRECTORY = 0x18a;
-$KEY_LIST = 0x18b;
-$KEY_MEMO = 0x18c;
-$KEY_CALENDAR = 0x18d;
-$KEY_RED = 0x18e;
-$KEY_GREEN = 0x18f;
-$KEY_YELLOW = 0x190;
-$KEY_BLUE = 0x191;
-$KEY_CHANNELUP = 0x192;
-$KEY_CHANNELDOWN = 0x193;
-$KEY_FIRST = 0x194;
-$KEY_LAST = 0x195;
-$KEY_AB = 0x196;
-$KEY_NEXT = 0x197;
-$KEY_RESTART = 0x198;
-$KEY_SLOW = 0x199;
-$KEY_SHUFFLE = 0x19a;
-$KEY_BREAK = 0x19b;
-$KEY_PREVIOUS = 0x19c;
-$KEY_DIGITS = 0x19d;
-$KEY_TEEN = 0x19e;
-$KEY_TWEN = 0x19f;
-$KEY_DEL_EOL = 0x1c0;
-$KEY_DEL_EOS = 0x1c1;
-$KEY_INS_LINE = 0x1c2;
-$KEY_DEL_LINE = 0x1c3;
-$KEY_MAX = 0x1ff;
-
-
- $key_lookup{XK_Escape} = $KEY_ESC;
- $key_lookup{XK_1} = $KEY_1;
- $key_lookup{XK_2} = $KEY_2;
- $key_lookup{XK_3} = $KEY_3;
- $key_lookup{XK_4} = $KEY_4;
- $key_lookup{XK_5} = $KEY_5;
- $key_lookup{XK_6} = $KEY_6;
- $key_lookup{XK_7} = $KEY_7;
- $key_lookup{XK_8} = $KEY_8;
- $key_lookup{XK_9} = $KEY_9;
- $key_lookup{XK_0} = $KEY_0;
- $key_lookup{XK_exclam} = $KEY_1;
- $key_lookup{XK_at} = $KEY_2;
- $key_lookup{XK_numbersign} = $KEY_3;
- $key_lookup{XK_dollar} = $KEY_4;
- $key_lookup{XK_percent} = $KEY_5;
- $key_lookup{XK_asciicircum} = $KEY_6;
- $key_lookup{XK_ampersand} = $KEY_7;
- $key_lookup{XK_asterisk} = $KEY_8;
- $key_lookup{XK_parenleft} = $KEY_9;
- $key_lookup{XK_parenright} = $KEY_0;
- $key_lookup{XK_minus} = $KEY_MINUS;
- $key_lookup{XK_underscore} = $KEY_MINUS;
- $key_lookup{XK_equal} = $KEY_EQUAL;
- $key_lookup{XK_plus} = $KEY_EQUAL;
- $key_lookup{XK_BackSpace} = $KEY_BACKSPACE;
- $key_lookup{XK_Tab} = $KEY_TAB;
- $key_lookup{XK_q} = $KEY_Q;
- $key_lookup{XK_Q} = $KEY_Q;
- $key_lookup{XK_w} = $KEY_W;
- $key_lookup{XK_W} = $KEY_W;
- $key_lookup{XK_e} = $KEY_E;
- $key_lookup{XK_E} = $KEY_E;
- $key_lookup{XK_r} = $KEY_R;
- $key_lookup{XK_R} = $KEY_R;
- $key_lookup{XK_t} = $KEY_T;
- $key_lookup{XK_T} = $KEY_T;
- $key_lookup{XK_y} = $KEY_Y;
- $key_lookup{XK_Y} = $KEY_Y;
- $key_lookup{XK_u} = $KEY_U;
- $key_lookup{XK_U} = $KEY_U;
- $key_lookup{XK_i} = $KEY_I;
- $key_lookup{XK_I} = $KEY_I;
- $key_lookup{XK_o} = $KEY_O;
- $key_lookup{XK_O} = $KEY_O;
- $key_lookup{XK_p} = $KEY_P;
- $key_lookup{XK_P} = $KEY_P;
- $key_lookup{XK_braceleft} = $KEY_LEFTBRACE;
- $key_lookup{XK_braceright} = $KEY_RIGHTBRACE;
- $key_lookup{XK_bracketleft} = $KEY_LEFTBRACE;
- $key_lookup{XK_bracketright} = $KEY_RIGHTBRACE;
- $key_lookup{XK_Return} = $KEY_ENTER;
- $key_lookup{XK_Control_L} = $KEY_LEFTCTRL;
- $key_lookup{XK_a} = $KEY_A;
- $key_lookup{XK_A} = $KEY_A;
- $key_lookup{XK_s} = $KEY_S;
- $key_lookup{XK_S} = $KEY_S;
- $key_lookup{XK_d} = $KEY_D;
- $key_lookup{XK_D} = $KEY_D;
- $key_lookup{XK_f} = $KEY_F;
- $key_lookup{XK_F} = $KEY_F;
- $key_lookup{XK_g} = $KEY_G;
- $key_lookup{XK_G} = $KEY_G;
- $key_lookup{XK_h} = $KEY_H;
- $key_lookup{XK_H} = $KEY_H;
- $key_lookup{XK_j} = $KEY_J;
- $key_lookup{XK_J} = $KEY_J;
- $key_lookup{XK_k} = $KEY_K;
- $key_lookup{XK_K} = $KEY_K;
- $key_lookup{XK_l} = $KEY_L;
- $key_lookup{XK_L} = $KEY_L;
- $key_lookup{XK_semicolon} = $KEY_SEMICOLON;
- $key_lookup{XK_colon} = $KEY_SEMICOLON;
- $key_lookup{XK_apostrophe} = $KEY_APOSTROPHE;
- $key_lookup{XK_quotedbl} = $KEY_APOSTROPHE;
- $key_lookup{XK_grave} = $KEY_GRAVE;
- $key_lookup{XK_asciitilde} = $KEY_GRAVE;
- $key_lookup{XK_Shift_L} = $KEY_LEFTSHIFT;
- $key_lookup{XK_backslash} = $KEY_BACKSLASH;
- $key_lookup{XK_bar} = $KEY_BACKSLASH;
- $key_lookup{XK_z} = $KEY_Z;
- $key_lookup{XK_Z} = $KEY_Z;
- $key_lookup{XK_x} = $KEY_X;
- $key_lookup{XK_X} = $KEY_X;
- $key_lookup{XK_c} = $KEY_C;
- $key_lookup{XK_C} = $KEY_C;
- $key_lookup{XK_v} = $KEY_V;
- $key_lookup{XK_V} = $KEY_V;
- $key_lookup{XK_b} = $KEY_B;
- $key_lookup{XK_B} = $KEY_B;
- $key_lookup{XK_n} = $KEY_N;
- $key_lookup{XK_N} = $KEY_N;
- $key_lookup{XK_m} = $KEY_M;
- $key_lookup{XK_M} = $KEY_M;
- $key_lookup{XK_comma} = $KEY_COMMA;
- $key_lookup{XK_less} = $KEY_COMMA;
- $key_lookup{XK_period} = $KEY_DOT;
- $key_lookup{XK_greater} = $KEY_DOT;
- $key_lookup{XK_slash} = $KEY_SLASH;
- $key_lookup{XK_question} = $KEY_SLASH;
- $key_lookup{XK_Shift_R} = $KEY_RIGHTSHIFT;
- $key_lookup{XK_KP_Multiply} = $KEY_KPASTERISK;
- $key_lookup{XK_Alt_L} = $KEY_LEFTALT;
- $key_lookup{XK_space} = $KEY_SPACE;
- $key_lookup{XK_Caps_Lock} = $KEY_CAPSLOCK;
- $key_lookup{XK_F1} = $KEY_F1;
- $key_lookup{XK_F2} = $KEY_F2;
- $key_lookup{XK_F3} = $KEY_F3;
- $key_lookup{XK_F4} = $KEY_F4;
- $key_lookup{XK_F5} = $KEY_F5;
- $key_lookup{XK_F6} = $KEY_F6;
- $key_lookup{XK_F7} = $KEY_F7;
- $key_lookup{XK_F8} = $KEY_F8;
- $key_lookup{XK_F9} = $KEY_F9;
- $key_lookup{XK_F10} = $KEY_F10;
- $key_lookup{XK_Num_Lock} = $KEY_NUMLOCK;
- $key_lookup{XK_Scroll_Lock} = $KEY_SCROLLLOCK;
- $key_lookup{XK_KP_7} = $KEY_KP7;
- $key_lookup{XK_KP_8} = $KEY_KP8;
- $key_lookup{XK_KP_9} = $KEY_KP9;
- $key_lookup{XK_KP_Subtract} = $KEY_KPMINUS;
- $key_lookup{XK_KP_4} = $KEY_KP4;
- $key_lookup{XK_KP_5} = $KEY_KP5;
- $key_lookup{XK_KP_6} = $KEY_KP6;
- $key_lookup{XK_KP_Add} = $KEY_KPPLUS;
- $key_lookup{XK_KP_1} = $KEY_KP1;
- $key_lookup{XK_KP_2} = $KEY_KP2;
- $key_lookup{XK_KP_3} = $KEY_KP3;
- $key_lookup{XK_KP_0} = $KEY_KP0;
- $key_lookup{XK_KP_Decimal} = $KEY_KPDOT;
- $key_lookup{XK_F13} = $KEY_F13;
- $key_lookup{XK_F11} = $KEY_F11;
- $key_lookup{XK_F12} = $KEY_F12;
- $key_lookup{XK_F14} = $KEY_F14;
- $key_lookup{XK_F15} = $KEY_F15;
- $key_lookup{XK_F16} = $KEY_F16;
- $key_lookup{XK_F17} = $KEY_F17;
- $key_lookup{XK_F18} = $KEY_F18;
- $key_lookup{XK_F19} = $KEY_F19;
- $key_lookup{XK_F20} = $KEY_F20;
- $key_lookup{XK_KP_Enter} = $KEY_KPENTER;
- $key_lookup{XK_Control_R} = $KEY_RIGHTCTRL;
- $key_lookup{XK_KP_Divide} = $KEY_KPSLASH;
- $key_lookup{XK_Sys_Req} = $KEY_SYSRQ;
- $key_lookup{XK_Alt_R} = $KEY_RIGHTALT;
- $key_lookup{XK_Linefeed} = $KEY_LINEFEED;
- $key_lookup{XK_Home} = $KEY_HOME;
- $key_lookup{XK_Up} = $KEY_UP;
- $key_lookup{XK_Page_Up} = $KEY_PAGEUP;
- $key_lookup{XK_Left} = $KEY_LEFT;
- $key_lookup{XK_Right} = $KEY_RIGHT;
- $key_lookup{XK_End} = $KEY_END;
- $key_lookup{XK_Down} = $KEY_DOWN;
- $key_lookup{XK_Page_Down} = $KEY_PAGEDOWN;
- $key_lookup{XK_Insert} = $KEY_INSERT;
- $key_lookup{XK_Delete} = $KEY_DELETE;
- $key_lookup{XK_KP_Equal} = $KEY_KPEQUAL;
- $key_lookup{XK_Pause} = $KEY_PAUSE;
- $key_lookup{XK_F21} = $KEY_F21;
- $key_lookup{XK_F22} = $KEY_F22;
- $key_lookup{XK_F23} = $KEY_F23;
- $key_lookup{XK_F24} = $KEY_F24;
- $key_lookup{XK_KP_Separator} = $KEY_KPCOMMA;
- $key_lookup{XK_Meta_L} = $KEY_LEFTMETA;
- $key_lookup{XK_Meta_R} = $KEY_RIGHTMETA;
- $key_lookup{XK_Multi_key} = $KEY_COMPOSE;
-
-$ABS_MAX = 63;
-
-$UI_DEV_CREATE = 0x5501;
-$UI_DEV_DESTROY = 0x5502;
-$UI_SET_EVBIT = 0x40045564;
-$UI_SET_KEYBIT = 0x40045565;
-$UI_SET_RELBIT = 0x40045566;
-$UI_SET_ABSBIT = 0x40045567;
-
-# FIXME: time hires, etc.
-$linux_gettimeofday_syscall = 78;
-
-$O_RDONLY = 00;
-$O_WRONLY = 01;
-$O_RDWR = 02;
-$O_NDELAY = 04000;
-
-}
OpenPOWER on IntegriCloud