如何使用修饰键组合?

时间:2015-04-21 00:56:32

标签: c++ sfml

我正在使用SFML构建基本文本编辑器。为此,我需要使用组合键 CTRL + S 进行保存。

当我按 CTRL + S 时,我当前的解决方案会保存,并且会产生一个''在我的编辑器中。这个额外的'不想要。

这是我目前的代码:

//Main loop:

if (event.type == sf::Event::KeyPressed)
    {
        if (event.key.code == sf::Keyboard::S
            && event.key.control)
        {
            cout << "testing" << endl;
        }
    }
    else if (event.type == sf::Event::TextEntered)
    {
    }

换句话说:我希望TextEntered正常工作。但是如果按CTRL + S,它将禁用TextEntered并执行保存。我该怎么做?

1 个答案:

答案 0 :(得分:3)

只需在TextEntered的处理程序中进行实时密钥检查。 e.g。

else if (event.type == sf::Event::TextEntered)
{
    if (!sf::Keyboard::isKeyPressed(sf::Keyboard::LControl) &&
        !sf::Keyboard::isKeyPressed(sf::Keyboard::RControl))
    {
        // handle text event
    }
    else
    {
        // do something else, or nothing
    }
}