From 2b64a84d39eeed5681d0ee5068c7d11a01527750 Mon Sep 17 00:00:00 2001 From: alwin Date: Mon, 28 Feb 2005 09:40:30 +0000 Subject: 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. --- (limited to 'noncore/applets/keyhelper/keyhelperapplet/extension/KeyExtensions.cpp') 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& 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 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& 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()); + } +} + -- cgit v0.9.0.2