int cmd_bind(int argc, char *argv[]) { KeyAction action; KeyCode code; if (argc < 3 || argc > 4) { paint_error("usage: %s <action> <keycode>", argv[0]); return 1; } if (!kb_str2action(argv[1], &action)) { paint_error("Unknown action '%s'", argv[1]); return 1; } if (argc == 3) { if ((code = kb_str2keycode(argv[2])) < 0) { paint_error("Invalid keycode '%s'", argv[2]); return 1; } } else { if ((code = kb_str2keycode2(argv[2], argv[3])) < 0) { paint_error("Invalid keycode '%s'", argv[2]); return 1; } } kb_bind(action, code); return 0; }
void kb_init() { size_t i; /* setup empty buffer */ KeyBindingsSize = 0; KeyBindingsCapacity = 0; kb_increase_capacity(); /* install default bindings */ for (i = 0; i < DefaultKeyBindingsSize; i++) kb_bind(DefaultKeyBindings[i].action, DefaultKeyBindings[i].key); }