From 7964c3a67cf9659ea6d14fc1d04a889cd50e2153 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sun, 3 Mar 2013 16:05:14 +0100 Subject: implemented basic support for native (non-sms style) editing --- modmap.h | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 modmap.h (limited to 'modmap.h') diff --git a/modmap.h b/modmap.h new file mode 100644 index 0000000..75e1595 --- /dev/null +++ b/modmap.h @@ -0,0 +1,63 @@ +/* --*- c++ -*-- + * Copyright (C) 2013 Enrico Scholz + * + * This program 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; version 2 and/or 3 of the License. + * + * This program 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 this program. If not, see . + */ + +#ifndef HH_ENSC_VDR_INPUTDEV_MODMAP_HH +#define HH_ENSC_VDR_INPUTDEV_MODMAP_HH + +class ModifierMap { +public: + enum modifier { + modSHIFT, + modCONTROL, + modALT, + modMETA, + modNUMLOCK, + modCAPSLOCK, + modMODE, + + _modMAX, + }; + + ModifierMap(); + ~ModifierMap(); + + bool read_modmap(char const *fname); + bool translate(wchar_t &chr, unsigned int code, + unsigned long mask) const; + +private: + enum { + ktNORMAL, + ktSHIFT, + ktCONTROL, + ktMODE, + ktMODE_SHIFT, + ktUNUSED0, + ktUNUSED1, + ktUNUSED2, + + _ktMAX + }; + + typedef wchar_t *keytable_t; + + // same semantics like 'keycode' in xmodmap(1) + keytable_t keytables_[_ktMAX]; + + void set_default_tables(void); +}; + +#endif /* HH_ENSC_VDR_INPUTDEV_MODMAP_HH */ -- cgit v1.2.3