示例#1
0
void KeyCompDlg::keyPressEvent(QKeyEvent* event)
{
    m_hotkey.clear();

    Qt::KeyboardModifiers mods = event->modifiers();
    if(mods & Qt::CTRL)
        m_activekeys.insert(Qt::CTRL);
    if(mods & Qt::ALT)
        m_activekeys.insert(Qt::ALT);
    if(mods & Qt::SHIFT)
        m_activekeys.insert(Qt::SHIFT);
    if(mods & Qt::META)
        m_activekeys.insert(Qt::META);

    switch(event->key())
    {
    case Qt::Key_Control :
    case Qt::Key_Alt :
    case Qt::Key_Shift :
    case Qt::Key_Meta :
        break;
    default:
        m_activekeys.insert(event->key());
    }

    QSet<INT32>::const_iterator ite = m_activekeys.begin();
    for(;ite != m_activekeys.end();ite++)
        m_hotkey.push_back(*ite);

    ui.keycompEdit->setText(getHotKeyText(m_hotkey));
}
示例#2
0
void GenerateTTFileDlg::slotSetupHotkey()
{
    KeyCompDlg dlg(this);
    if(!dlg.exec())
        return;

    m_hostentry.hotkey = dlg.m_hotkey;
    ui.keycompEdit->setText(getHotKeyText(dlg.m_hotkey));
}
示例#3
0
void KeyCompDlg::keyPressEvent(QKeyEvent* event)
{
    qDebug() << "KeyCompDlg::keyPressEvent";

    qDebug() << "Native: " << QString("%1").arg(event->nativeModifiers(), 0, 16)
             << "modifiers: " << QString("%1").arg(event->modifiers(), 0, 16)
             << "key: " << QString("%1").arg(event->key(), 0, 16);

    if(m_hotkey.isEmpty())
    {
        for(int i=0;i<MAC_HOTKEY_SIZE;i++)
            m_hotkey.push_back(MAC_NO_KEY);
    }

    switch(event->key())
    {
    case 0 : break;
    case Qt::Key_Control :
        m_hotkey[0] = m_hotkey[0] == (INT32)MAC_NO_KEY? 0 : m_hotkey[0];
        m_hotkey[0] |= cmdKey;
        qDebug() << "Ctrl";
        break;
    case Qt::Key_Alt :
        m_hotkey[0] = m_hotkey[0] == (INT32)MAC_NO_KEY? 0 : m_hotkey[0];
        m_hotkey[0] |= optionKey;
        qDebug() << "Alt";
        break;
    case Qt::Key_Shift :
        m_hotkey[0] = m_hotkey[0] == (INT32)MAC_NO_KEY? 0 : m_hotkey[0];
        m_hotkey[0] |= shiftKey;
        qDebug() << "Shift";
        break;
    case Qt::Key_Meta :
        m_hotkey[0] = m_hotkey[0] == (INT32)MAC_NO_KEY? 0 : m_hotkey[0];
        m_hotkey[0] |= controlKey;
        qDebug() << "MEta";
        break;
    default:
        m_hotkey[1] = event->nativeVirtualKey();
        qDebug() << "VK " << event->nativeVirtualKey();
        break;
    }
    
    m_activekeys.insert(event->key());

    Q_ASSERT(m_hotkey.size() == 2);

    ui.keycompEdit->setText(getHotKeyText(m_hotkey));
}
示例#4
0
bool KeyCompDlg::winEvent(MSG *message, long *result)
{
    if(message->message == WM_TEAMTALK_HOTKEYEVENT)
    {
        if(message->lParam)
        {
            m_hotkey.push_back(message->wParam);
            ui.keycompEdit->setText(getHotKeyText(m_hotkey));
            m_activekeys.insert(message->wParam);
        }
        else
            m_activekeys.remove(message->wParam);

        if(m_activekeys.size() == 0)
            this->accept();
    }
    return QDialog::winEvent(message, result);
}
示例#5
0
bool KeyCompDlg::nativeEvent(const QByteArray& eventType, void* message,
                             long* result)
{
    MSG* msg = reinterpret_cast<MSG*>(message);

    if(msg->message == WM_TEAMTALK_HOTKEYEVENT)
    {
        if(msg->lParam)
        {
            m_hotkey.push_back(msg->wParam);
            ui.keycompEdit->setText(getHotKeyText(m_hotkey));
            m_activekeys.insert(msg->wParam);
        }
        else
            m_activekeys.remove(msg->wParam);

        if(m_activekeys.size() == 0)
            this->accept();
    }

    return QDialog::nativeEvent(eventType, message, result);
}