#include <stdio.h>
#include <stdlib.h>

static void onekey(int c, FILE *fp){
  unsigned char buf[2];

  buf[0] = c; buf[1] = 1;
  fwrite(buf, 2, 1, fp);
  fflush(fp);
  buf[0] = c + 0x80; buf[1] = 0;
  fwrite(buf, 2, 1, fp); fflush(fp);
}

int main(int argc, char* argv[]){
  int i, m = 0;
  FILE* p = fopen("/dev/kbdsim", "w");
  if(p == NULL) return -1;

  switch(argc){
  case 2:
    onekey(atoi(argv[1]), p);
    break;
  case 3:
    m = atoi(argv[2]);
    for(i = atoi(argv[1]); i <= m; i++){
      onekey(i, p);
    }
    break;
  default:
    printf("usage: ksim num1 [num2]\n");
    break;
  };
  return 0;
}
