本文整理汇总了C++中Shortcut::modMask方法的典型用法代码示例。如果您正苦于以下问题:C++ Shortcut::modMask方法的具体用法?C++ Shortcut::modMask怎么用?C++ Shortcut::modMask使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Shortcut
的用法示例。
在下文中一共展示了Shortcut::modMask方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bindShortcut
void Kernel::bindShortcut(string argument) {
unsigned int argDelim = argument.find_first_of('+');
if (argDelim == string::npos) {
return;
}
string bind = argument.substr(0, argDelim);
string keys = argument.substr(argDelim + 1);
Action *action = Util::get(actionBindings_, bind);
if (action) {
Shortcut *oldShortcut = action->shortcut();
if (oldShortcut) {
bool doUngrab = true;
for (MBindings::iterator it = actionBindings_->begin();
it != actionBindings_->end(); it++)
{
Action *action = (*it).second;
Shortcut *s = action->listenOn();
if (s &&
(s->modMask() == oldShortcut->modMask()) &&
(s->keyCode() == oldShortcut->keyCode()) &&
(s->button() == oldShortcut->button()))
{
doUngrab = false;
break;
}
}
if (doUngrab) {
ungrabShortcutOnAllMonitors(oldShortcut);
}
delete oldShortcut;
}
string prefix;
switch (action->type()) {
case Action::INTERN:
prefix = "intern.";
break;
case Action::EXTERN:
prefix = "extern.";
break;
case Action::SEQUENCE:
prefix = "chain.";
break;
case Action::UNKNOWN:
prefix = "unknown.";
break;
}
if (keys == "") {
Util::remove(actionSettings_, prefix + bind + ".keys");
return;
}
action->setShortcut(Shortcut::shortcut(keys));
(*actionSettings_)[prefix + bind + ".keys"] = keys;
if (action->listenOn()) {
grabShortcutOnAllMonitors(action->listenOn());
}
}
}