summaryrefslogtreecommitdiff
path: root/noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp
authoralwin <alwin>2005-02-28 09:40:30 (UTC)
committer alwin <alwin>2005-02-28 09:40:30 (UTC)
commit2b64a84d39eeed5681d0ee5068c7d11a01527750 (patch) (side-by-side diff)
treec8693340dbc5ef5e2f9afa90b690829ddff2c4bd /noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp
parent61fa699140c5efbb6ba0bf2a62f7e8fbf62976be (diff)
downloadopie-2b64a84d39eeed5681d0ee5068c7d11a01527750.zip
opie-2b64a84d39eeed5681d0ee5068c7d11a01527750.tar.gz
opie-2b64a84d39eeed5681d0ee5068c7d11a01527750.tar.bz2
other keymapping tool - not working this moment, I have to check it out
- the reason is that the config file is somewhat easier to understand than from zkbapplet and has a nice config tool. Please don't put it into any repositories this moment.
Diffstat (limited to 'noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp b/noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp
new file mode 100644
index 0000000..a61ea0a
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp
@@ -0,0 +1,111 @@
+#include "KeyExtensions.h"
+
+KeyExtensions::KeyExtensions()
+{
+ qDebug("KeyExtensions::KeyExtensions()");
+ m_cancelcode = 0;
+}
+
+KeyExtensions::~KeyExtensions()
+{
+ qDebug("KeyExtensions::~KeyExtensions()");
+ clear();
+}
+
+void KeyExtensions::assign(const QString& kind, int keycode,
+ int keymask, const QValueList<int>& modcodes)
+{
+ ExtensionInterface* ext;
+#if 0
+ ext = m_oExtFactory.createInstance(kind);
+ if(ext != NULL){
+ ext->setKeycode(keycode);
+ ext->setKeymask(keymask);
+ ext->setModcodes(modcodes);
+ }
+#else
+ ext = m_oExtFactory.createInstance(kind, keycode, keymask);
+ if(ext != NULL){
+ ext->setModcodes(modcodes);
+ }
+#endif
+}
+
+void KeyExtensions::assign(const QString& kind, int keycode,
+ int keymask, int modcode)
+{
+ QValueList<int> modcodes;
+ modcodes.append(modcode);
+ assign(kind, keycode, keymask, modcodes);
+}
+
+bool KeyExtensions::doKey(int keycode, int keymask, bool isPress)
+{
+ bool fCancel = false;
+ ExtensionList& list = m_oExtFactory.getList();
+ for(ExtensionList::Iterator it=list.begin();
+ it!=list.end(); ++it){
+ if(isPress){
+ int code = (*it)->getKeycode();
+ if((*it)->getKeymask() == keymask
+ && (code == 0 || code == keycode)){
+ if((*it)->onKeyPress(keycode)){
+ fCancel = true;
+ }
+ qWarning("ext:onKeyPress[%s][%x][%d]",
+ (*it)->kind().latin1(),
+ (*it)->getKeycode(),
+ fCancel);
+ }
+ } else {
+ if(keycode == m_cancelcode){
+ fCancel = true;
+ }
+ const QValueList<int>& rlist = (*it)->getModcodes();
+ if(rlist.contains(keycode)){
+ if((*it)->onModRelease(keycode)){
+ m_pModifiers->resetToggles();
+ }
+ qWarning("ext:onModRelease[%s][%x]",
+ (*it)->kind().latin1(),
+ keycode);
+ }
+ }
+ }
+ if(isPress && fCancel){
+ m_cancelcode = keycode;
+ } else {
+ m_cancelcode = 0;
+ }
+ return(fCancel);
+}
+
+void KeyExtensions::clear()
+{
+ m_oExtFactory.clear();
+}
+
+void KeyExtensions::reset()
+{
+ //clear();
+ m_oExtFactory.reset();
+}
+
+void KeyExtensions::init()
+{
+ m_oExtFactory.sweep();
+}
+
+void KeyExtensions::statistics()
+{
+ qWarning("KeyExtensions::statistics()");
+ ExtensionList& list = m_oExtFactory.getList();
+ for(ExtensionList::Iterator it=list.begin();
+ it!=list.end(); ++it){
+ qWarning(" [%s][%x][%x]",
+ (*it)->kind().latin1(),
+ (*it)->getKeycode(),
+ (*it)->getKeymask());
+ }
+}
+