45 lines
956 B
C++
45 lines
956 B
C++
#include <iostream>
|
|
#include <memory>
|
|
#include <unistd.h>
|
|
#include <csignal>
|
|
#include "typer.h"
|
|
#include "vimtyper.h"
|
|
#include "keyhandler.h"
|
|
#include "humanizerkeyhandler.h"
|
|
#include "xkeyhandler.h"
|
|
|
|
using namespace std;
|
|
|
|
static std::unique_ptr<Typer> typer;
|
|
|
|
void onInterrupted(int)
|
|
{
|
|
if (typer) {
|
|
typer->TogglePaused();
|
|
}
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
if (argc < 2) {
|
|
cout << "Usage: " << argv[0] << "<file>";
|
|
return 1;
|
|
}
|
|
|
|
signal(SIGINT, onInterrupted);
|
|
|
|
printf("Get ready!\n");
|
|
for (int i = 10; i >= 0; i--) {
|
|
printf("\rStarting in %d seconds...", i);
|
|
fflush(stdout);
|
|
sleep(1);
|
|
}
|
|
printf("\n");
|
|
|
|
std::unique_ptr<XKeyHandler> keyHandler(new XKeyHandler());
|
|
std::unique_ptr<HumanizerKeyHandler> humanizer(new HumanizerKeyHandler(std::move(keyHandler)));
|
|
typer.reset(new VimTyper(std::move(humanizer)));
|
|
typer->ProcessFile(argv[1]);
|
|
return 0;
|
|
}
|