Ejemplo n.º 1
0
int
cmd_unbind(int argc, char *argv[])
{
   KeyAction action;
   KeyCode   key;

   /* unbind all case ("unbind *") */
   if (argc == 2 && strcmp(argv[1], "*") == 0) {
      kb_unbind_all();
      return 0;
   }

   /* unbind action case ("unbind action <ACTION>") */
   if (argc == 3 && strcasecmp(argv[1], "action") == 0) {
      if (kb_str2action(argv[2], &action)) {
         kb_unbind_action(action);
         return 0;
      } else {
         paint_error("Unknown action '%s'", argv[2]);
         return 1;
      }
   }

   /* unbind key case, no control ("unbind key X") */
   if (argc == 3 && strcasecmp(argv[1], "key") == 0) {
      if ((key = kb_str2keycode(argv[2])) < 0) {
         paint_error("Invalid keycode '%s'", argv[2]);
         return 1;
      }

      kb_unbind_key(key);
      return 0;
   }

   /* unbind key case, with control ("unbind key control X") */
   if (argc == 4 && strcasecmp(argv[1], "key") == 0) {
      if ((key = kb_str2keycode2(argv[2], argv[3])) < 0) {
         paint_error("Invalid keycode '%s %s'", argv[2], argv[3]);
         return 1;
      }

      kb_unbind_key(key);
      return 0;
   }

   paint_error("usage: unbind [* | action <ACTION> | key <KEYCODE> ]");
   return 1;
}
Ejemplo n.º 2
0
void
kb_bind(KeyAction action, KeyCode key)
{
   kb_unbind_key(key);

   if (KeyBindingsSize == KeyBindingsCapacity)
      kb_increase_capacity();

   KeyBindings[KeyBindingsSize].action = action;
   KeyBindings[KeyBindingsSize].key = key;
   KeyBindingsSize++;
}