inputSequence.cpp 672 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <curses.h>
  2. #include "inputSequence.hh"
  3. InputSequence::InputSequence()
  4. { }
  5. InputSequence::InputSequence(const InputSequence &o): seq(o.seq)
  6. { }
  7. InputSequence::~InputSequence()
  8. { }
  9. InputSequence InputSequence::read(WINDOW *w)
  10. {
  11. InputSequence result;
  12. const char *kname = nullptr;
  13. do
  14. {
  15. const int input = wgetch(w ? w : stdscr);
  16. if (input == -1)
  17. continue;
  18. kname = keyname(toupper(input));
  19. if (!result.seq.empty())
  20. result.seq += "-";
  21. result.seq += kname;
  22. } while (!kname || *kname == '^');
  23. return result;
  24. }
  25. const std::string &InputSequence::key() const
  26. { return seq; }