+ keybegin = (keybegin == std::string::npos) ? 0 : keybegin + 1;
+ std::string key(str, keybegin);
+
+ // parse out the requested modifier keys
+ unsigned int modval = 0;
+ std::string::size_type begin = 0, end;
+ while (begin != keybegin) {
+ end = str.find_first_of('-', begin);
+
+ std::string mod(str, begin, end-begin);
+ if (!modvalue(mod, &modval)) {
+ printf(_("Invalid modifier element in key binding: %s\n"), mod.c_str());
+ return false;
+ }
+
+ begin = end + 1;
+ }