diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/usb/kb/main.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/usb/kb/main.c')
-rwxr-xr-x | sys/src/cmd/usb/kb/main.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/sys/src/cmd/usb/kb/main.c b/sys/src/cmd/usb/kb/main.c new file mode 100755 index 000000000..50a7bdaf4 --- /dev/null +++ b/sys/src/cmd/usb/kb/main.c @@ -0,0 +1,67 @@ +#include <u.h> +#include <libc.h> +#include <thread.h> +#include "usb.h" +#include "hid.h" + +typedef struct Parg Parg; + +enum +{ + Ndevs = 10, + Arglen = 80, + Nargs = 10, +}; + +static void +usage(void) +{ + fprint(2, "usage: %s [-dkm] [-a n] [-N nb] [dev...]\n", argv0); + threadexitsall("usage"); +} + +void +threadmain(int argc, char **argv) +{ + char args[Arglen]; + char *as, *ae; + int accel, pena, devid; + int csps[] = { KbdCSP, PtrCSP, 0 }; + + quotefmtinstall(); + pena = 1; + ae = args+sizeof(args); + as = seprint(args, ae, "kb"); + ARGBEGIN{ + case 'a': + accel = strtol(EARGF(usage()), nil, 0); + as = seprint(as, ae, " -a %d", accel); + break; + case 'd': + usbdebug++; + as = seprint(as, ae, " -d"); + break; + case 'k': + as = seprint(as, ae, " -k"); + pena = 0; + break; + case 'm': + as = seprint(as, ae, " -m"); + pena = 1; + break; + case 'N': + devid = atoi(EARGF(usage())); /* ignore dev number */ + USED(devid); + break; + default: + usage(); + }ARGEND; + + rfork(RFNOTEG); + fmtinstall('U', Ufmt); + threadsetgrp(threadid()); + if(pena == 0) + csps[1] = 0; + startdevs(args, argv, argc, matchdevcsp, csps, kbmain); + threadexits(nil); +} |