如何使用修饰键组合?
How to use modifier key combinations?
我正在使用 SFML 构建一个基本的文本编辑器。为此,我需要使用组合键 CTRL + S.
进行保存
我当前的解决方案在我按下 CTRL + S 时保存,并在我的编辑器中生成 's'。这个额外的 '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 并执行保存。我该怎么做?
只需在 TextEntered
的处理程序中进行实时密钥检查。例如
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
}
}
我正在使用 SFML 构建一个基本的文本编辑器。为此,我需要使用组合键 CTRL + S.
进行保存我当前的解决方案在我按下 CTRL + S 时保存,并在我的编辑器中生成 's'。这个额外的 '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 并执行保存。我该怎么做?
只需在 TextEntered
的处理程序中进行实时密钥检查。例如
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
}
}