void bind_key(int argc, char **argv){ if(argc < 3) return; if(argv[1][0] == '^'){ if(argv[1][1] != '\0') add_binding(GDK_CONTROL_MASK, argv[1][1], argc-2, argv+2); } else if(argv[1][0] != '\0') add_binding(0, argv[1][0], argc-2, argv+2); }
int main (void) { state_t vec1, vec2, vec3; binding_t b; int i; srand(time(NULL)); fprintf(stdout, "--- Debut\n"); /* Creation du vecteur */ vec1 = create_state(); vec2 = create_state(); vec3 = create_state(); /* Remplissage */ for (i=0; i<15; i++) { b.id = i; b.place = (int) rand() % 40; add_binding(&vec1, b); add_binding(&vec3, b); } /* Remplissage */ for (i=0; i<15; i++) { b.id = i; b.place = (int) rand() % 40; add_binding(&vec2, b); } print_state(vec1); print_state(vec2); /* Suppression */ for (i=0; i<10; i++) { int r = (int) rand() % 15; fprintf(stdout,"Suppression du %d\n",r); erase_binding(&vec1, find_binding(vec1,r)); erase_binding(&vec3, find_binding(vec3,r)); } /* Suppression */ for (i=0; i<10; i++) { int r = (int) rand() % 15; fprintf(stdout,"Suppression du %d\n",r); erase_binding(&vec2, find_binding(vec2,r)); } print_state(vec1); print_state(vec2); /* Comparaison */ if (compare_states(&vec1, &vec2)) { fprintf(stdout, "VEC1 = VEC2\n"); } else { fprintf(stdout, "VEC1 != VEC2\n"); } if (compare_states(&vec1, &vec3)) { fprintf(stdout, "VEC1 = VEC3\n"); } else { fprintf(stdout, "VEC1 != VEC3\n"); } return 1; }
int VControl_AddJoyHatBinding (int port, int which, Uint8 dir, int *target) { #ifdef HAVE_JOYSTICK if (port >= 0 && port < joycount) { joystick *j = &joysticks[port]; if (!(j->stick)) create_joystick (port); if ((which >= 0) && (which < j->numhats)) { if (dir == SDL_HAT_LEFT) { add_binding(&joysticks[port].hats[which].left, target); } else if (dir == SDL_HAT_RIGHT) { add_binding(&joysticks[port].hats[which].right, target); } else if (dir == SDL_HAT_UP) { add_binding(&joysticks[port].hats[which].up, target); } else if (dir == SDL_HAT_DOWN) { add_binding(&joysticks[port].hats[which].down, target); } else { // log_add (log_Debug, "VControl: Attempted to bind to illegal direction"); return -1; } return 0; } else { // log_add (log_Debug, "VControl: Attempted to bind to illegal hat %d", which); return -1; } } else #else (void) port; (void) which; (void) dir; (void) target; #endif /* HAVE_JOYSTICK */ { // log_add (log_Debug, "VControl: Attempted to bind to illegal port %d", port); return -1; } }
int VControl_AddJoyButtonBinding (int port, int button, int *target) { #ifdef HAVE_JOYSTICK if (port >= 0 && port < joycount) { joystick *j = &joysticks[port]; if (!(j->stick)) create_joystick (port); if ((button >= 0) && (button < j->numbuttons)) { add_binding(&joysticks[port].buttons[button], target); return 0; } else { // log_add (log_Debug, "VControl: Attempted to bind to illegal button %d", button); return -1; } } else #else (void) port; (void) button; (void) target; #endif /* HAVE_JOYSTICK */ { // log_add (log_Debug, "VControl: Attempted to bind to illegal port %d", port); return -1; } }
void test_keycmd (void) { add_binding("insert", "set insert_mode = 1"); add_binding("command", "set insert_mode = 0"); /* the 'keycmd' command */ parse_command("keycmd", "insert", NULL); g_assert_cmpint(1, ==, reuzbl.behave.insert_mode); g_assert_cmpstr("", ==, reuzbl.state.keycmd); /* setting the keycmd variable directly, equivalent to the 'keycmd' comand */ set_var_value("keycmd", "command"); g_assert_cmpint(0, ==, reuzbl.behave.insert_mode); g_assert_cmpstr("", ==, reuzbl.state.keycmd); }
void mode_tempbinding(int newmode, int newvalue) { short saveval; XPoint cpos; Widget window = areawin->viewport; if (boundfunction(window, BUTTON1, &saveval) == button1mode) { remove_binding(window, BUTTON1, button1mode); add_binding(window, BUTTON1, newmode, (short)newvalue); cpos = UGetCursor(); eventdispatch(BUTTON1, (int)cpos.x, (int)cpos.y); remove_binding(window, BUTTON1, newmode); add_binding(window, BUTTON1, button1mode, saveval); } else fprintf(stderr, "Error: No such button1 binding %s\n", func_to_string(button1mode).toLocal8Bit().data()); }
void mode_rebinding(int newmode, int newvalue) { Widget window = areawin->viewport; remove_binding(window, BUTTON1, button1mode); add_binding(window, BUTTON1, newmode, (short)newvalue); button1mode = newmode; toolcursor(newmode); }
int VControl_AddJoyAxisBinding (int port, int axis, int polarity, int *target) { #ifdef HAVE_JOYSTICK if (port >= 0 && port < joycount) { joystick *j = &joysticks[port]; if (!(j->stick)) create_joystick (port); if ((axis >= 0) && (axis < j->numaxes)) { if (polarity < 0) { add_binding(&joysticks[port].axes[axis].neg, target); } else if (polarity > 0) { add_binding(&joysticks[port].axes[axis].pos, target); } else { log_add (log_Debug, "VControl: Attempted to bind to polarity zero"); return -1; } } else { // log_add (log_Debug, "VControl: Attempted to bind to illegal axis %d", axis); return -1; } } else #else (void) port; (void) axis; (void) polarity; (void) target; #endif /* HAVE_JOYSTICK */ { // log_add (log_Debug, "VControl: Attempted to bind to illegal port %d", port); return -1; } return 0; }
int VControl_AddKeyBinding (SDLKey symbol, int *target) { if ((symbol < 0) || (symbol >= num_sdl_keys)) { log_add (log_Warning, "VControl: Illegal key index %d", symbol); return -1; } add_binding(&bindings[symbol], target); return 0; }
int add_keybinding(Widget window, const char *keystring, const char *fstring) { short value = -1; int function = string_to_func(fstring, &value); int keywstate = string_to_key(keystring); if (function < 0) return -1; else return add_binding(window, keywstate, function, value); }
void generic_bcache::update_binding(in_addr_t hoa, in_addr_t ha, in_addr_t coa, __u16 lifetime) { if (lifetime == 0) { remove_binding(hoa, ha, coa); return; } binding *b = add_binding(hoa, ha, coa); b->hoa = hoa; b->ha = ha; b->coa = coa; if (lifetime == 0xffff) b->timeout = 0; else b->timeout = time(NULL) + ntohs(lifetime); }
void init_menus() { WFuncBinder binder={&dummy_func, 0, ARGTYPE_NONE}; add_binding(ACT_BUTTONPRESS, ACTX_MENU, 0, AnyButton, &binder); add_binding(ACT_BUTTONMOTION, ACTX_MENU, 0, AnyButton, &binder); add_binding(ACT_BUTTONCLICK, ACTX_MENU, 0, AnyButton, &binder); binder.func=lookup_func("menu_raisekeep", ARGTYPE_NONE); add_binding(ACT_BUTTONPRESS, ACTX_MENUTITLE, 0, AnyButton, &binder); binder.func=lookup_func("menu_close", ARGTYPE_NONE); add_binding(ACT_BUTTONDBLCLICK, ACTX_MENUTITLE, 0, AnyButton, &binder); binder.func=lookup_func("move", ARGTYPE_NONE); add_binding(ACT_BUTTONMOTION, ACTX_MENUTITLE, 0, AnyButton, &binder); }
static void settings_init () { GKeyFile* config; gboolean res = FALSE; char *saveptr; gchar** keys = NULL; if (!config_file) { const char* XDG_CONFIG_HOME = getenv ("XDG_CONFIG_HOME"); if (! XDG_CONFIG_HOME || ! strcmp (XDG_CONFIG_HOME, "")) { XDG_CONFIG_HOME = (char*)XDG_CONFIG_HOME_default; } printf("XDG_CONFIG_HOME: %s\n", XDG_CONFIG_HOME); strcpy (config_file_path, XDG_CONFIG_HOME); strcat (config_file_path, "/uzbl/config"); if (file_exists (config_file_path)) { printf ("Config file %s found.\n", config_file_path); config_file = &config_file_path[0]; } else { // Now we check $XDG_CONFIG_DIRS char *XDG_CONFIG_DIRS = getenv ("XDG_CONFIG_DIRS"); if (! XDG_CONFIG_DIRS || ! strcmp (XDG_CONFIG_DIRS, "")) XDG_CONFIG_DIRS = XDG_CONFIG_DIRS_default; printf("XDG_CONFIG_DIRS: %s\n", XDG_CONFIG_DIRS); char buffer[512]; strcpy (buffer, XDG_CONFIG_DIRS); const gchar* dir = (char *) strtok_r (buffer, ":", &saveptr); while (dir && ! file_exists (config_file_path)) { strcpy (config_file_path, dir); strcat (config_file_path, "/uzbl/config_file_pathig"); if (file_exists (config_file_path)) { printf ("Config file %s found.\n", config_file_path); config_file = &config_file_path[0]; } dir = (char * ) strtok_r (NULL, ":", &saveptr); } } } if (config_file) { config = g_key_file_new (); res = g_key_file_load_from_file (config, config_file, G_KEY_FILE_NONE, NULL); if (res) { printf ("Config %s loaded\n", config_file); } else { fprintf (stderr, "Config %s loading failed\n", config_file); } } else { printf ("No configuration.\n"); } if (res) { history_handler = g_key_file_get_value (config, "behavior", "history_handler", NULL); download_handler = g_key_file_get_value (config, "behavior", "download_handler", NULL); always_insert_mode = g_key_file_get_boolean (config, "behavior", "always_insert_mode", NULL); show_status = g_key_file_get_boolean (config, "behavior", "show_status", NULL); modkey = g_key_file_get_value (config, "behavior", "modkey", NULL); status_top = g_key_file_get_boolean (config, "behavior", "status_top", NULL); if (! fifo_dir) fifo_dir = g_key_file_get_value (config, "behavior", "fifo_dir", NULL); if (! socket_dir) socket_dir = g_key_file_get_value (config, "behavior", "socket_dir", NULL); keys = g_key_file_get_keys (config, "bindings", NULL, NULL); } printf ("History handler: %s\n", (history_handler ? history_handler : "disabled")); printf ("Download manager: %s\n", (download_handler ? download_handler : "disabled")); printf ("Fifo directory: %s\n", (fifo_dir ? fifo_dir : "disabled")); printf ("Socket directory: %s\n", (socket_dir ? socket_dir : "disabled")); printf ("Always insert mode: %s\n", (always_insert_mode ? "TRUE" : "FALSE")); printf ("Show status: %s\n", (show_status ? "TRUE" : "FALSE")); printf ("Status top: %s\n", (status_top ? "TRUE" : "FALSE")); printf ("Modkey: %s\n", (modkey ? modkey : "disabled")); if (! modkey) modkey = ""; //POSSIBLE MODKEY VALUES (COMBINATIONS CAN BE USED) gchar* modkeyup = g_utf8_strup (modkey, -1); if (g_strrstr (modkeyup,"SHIFT") != NULL) modmask |= GDK_SHIFT_MASK; //the Shift key. if (g_strrstr (modkeyup,"LOCK") != NULL) modmask |= GDK_LOCK_MASK; //a Lock key (depending on the modifier mapping of the X server this may either be CapsLock or ShiftLock). if (g_strrstr (modkeyup,"CONTROL") != NULL) modmask |= GDK_CONTROL_MASK; //the Control key. if (g_strrstr (modkeyup,"MOD1") != NULL) modmask |= GDK_MOD1_MASK; //the fourth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier, but normally it is the Alt key). if (g_strrstr (modkeyup,"MOD2") != NULL) modmask |= GDK_MOD2_MASK; //the fifth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). if (g_strrstr (modkeyup,"MOD3") != NULL) modmask |= GDK_MOD3_MASK; //the sixth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). if (g_strrstr (modkeyup,"MOD4") != NULL) modmask |= GDK_MOD4_MASK; //the seventh modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). if (g_strrstr (modkeyup,"MOD5") != NULL) modmask |= GDK_MOD5_MASK; //the eighth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). if (g_strrstr (modkeyup,"BUTTON1") != NULL) modmask |= GDK_BUTTON1_MASK; //the first mouse button. if (g_strrstr (modkeyup,"BUTTON2") != NULL) modmask |= GDK_BUTTON2_MASK; //the second mouse button. if (g_strrstr (modkeyup,"BUTTON3") != NULL) modmask |= GDK_BUTTON3_MASK; //the third mouse button. if (g_strrstr (modkeyup,"BUTTON4") != NULL) modmask |= GDK_BUTTON4_MASK; //the fourth mouse button. if (g_strrstr (modkeyup,"BUTTON5") != NULL) modmask |= GDK_BUTTON5_MASK; //the fifth mouse button. if (g_strrstr (modkeyup,"SUPER") != NULL) modmask |= GDK_SUPER_MASK; //the Super modifier. Since 2.10 if (g_strrstr (modkeyup,"HYPER") != NULL) modmask |= GDK_HYPER_MASK; //the Hyper modifier. Since 2.10 if (g_strrstr (modkeyup,"META") != NULL) modmask |= GDK_META_MASK; //the Meta modifier. Since 2.10 */ free (modkeyup); if (keys) { int i; for (i = 0; keys[i]; i++) { gchar *value = g_key_file_get_string (config, "bindings", keys[i], NULL); add_binding(g_strstrip(keys[i]), value); g_free(value); } g_strfreev(keys); } /* networking options */ if (res) { proxy_url = g_key_file_get_value (config, "network", "proxy_server", NULL); http_debug = g_key_file_get_integer (config, "network", "http_debug", NULL); useragent = g_key_file_get_value (config, "network", "user-agent", NULL); max_conns = g_key_file_get_integer (config, "network", "max_conns", NULL); max_conns_host = g_key_file_get_integer (config, "network", "max_conns_per_host", NULL); } if(proxy_url){ g_object_set(G_OBJECT(soup_session), SOUP_SESSION_PROXY_URI, soup_uri_new(proxy_url), NULL); } if(!(http_debug <= 3)){ http_debug = 0; fprintf(stderr, "Wrong http_debug level, ignoring.\n"); } else if (http_debug > 0) { soup_logger = soup_logger_new(http_debug, -1); soup_session_add_feature(soup_session, SOUP_SESSION_FEATURE(soup_logger)); } if(useragent){ char* newagent = malloc(1024); strcpy(newagent, str_replace("%webkit-major%", itos(WEBKIT_MAJOR_VERSION), useragent)); strcpy(newagent, str_replace("%webkit-minor%", itos(WEBKIT_MINOR_VERSION), newagent)); strcpy(newagent, str_replace("%webkit-micro%", itos(WEBKIT_MICRO_VERSION), newagent)); if (uname (&unameinfo) == -1) { printf("Error getting uname info. Not replacing system-related user agent variables.\n"); } else { strcpy(newagent, str_replace("%sysname%", unameinfo.sysname, newagent)); strcpy(newagent, str_replace("%nodename%", unameinfo.nodename, newagent)); strcpy(newagent, str_replace("%kernrel%", unameinfo.release, newagent)); strcpy(newagent, str_replace("%kernver%", unameinfo.version, newagent)); strcpy(newagent, str_replace("%arch-system%", unameinfo.machine, newagent)); #ifdef _GNU_SOURCE strcpy(newagent, str_replace("%domainname%", unameinfo.domainname, newagent)); #endif } strcpy(newagent, str_replace("%arch-uzbl%", ARCH, newagent)); strcpy(newagent, str_replace("%commit%", COMMIT, newagent)); useragent = malloc(1024); strcpy(useragent, newagent); g_object_set(G_OBJECT(soup_session), SOUP_SESSION_USER_AGENT, useragent, NULL); } if(max_conns >= 1){ g_object_set(G_OBJECT(soup_session), SOUP_SESSION_MAX_CONNS, max_conns, NULL); } if(max_conns_host >= 1){ g_object_set(G_OBJECT(soup_session), SOUP_SESSION_MAX_CONNS_PER_HOST, max_conns_host, NULL); } printf("Proxy configured: %s\n", proxy_url ? proxy_url : "none"); printf("HTTP logging level: %d\n", http_debug); printf("User-agent: %s\n", useragent? useragent : "default"); printf("Maximum connections: %d\n", max_conns ? max_conns : 0); printf("Maximum connections per host: %d\n", max_conns_host ? max_conns_host: 0); //Cookies cookie_text_file = g_key_file_get_value (config, "behavior", "cookie_text_file", NULL); if (cookie_text_file) { printf("Cookie text file location: %s\n", cookie_text_file); soup_cookie = soup_cookie_jar_text_new (cookie_text_file, FALSE); soup_session_add_feature(soup_session, SOUP_SESSION_FEATURE(soup_cookie)); } }
static Lexeme * evaluate_binding(Lexeme * tree, Lexeme * env) { Lexeme * n = get_binding_name(tree); Lexeme * v = evaluate(get_binding_value(tree), env); add_binding(env, n, v); return v; }
void default_keybindings() { add_binding(ALL_WINDOWS, '1', XCF_Page, 1); add_binding(ALL_WINDOWS, '2', XCF_Page, 2); add_binding(ALL_WINDOWS, '3', XCF_Page, 3); add_binding(ALL_WINDOWS, '4', XCF_Page, 4); add_binding(ALL_WINDOWS, '5', XCF_Page, 5); add_binding(ALL_WINDOWS, '6', XCF_Page, 6); add_binding(ALL_WINDOWS, '7', XCF_Page, 7); add_binding(ALL_WINDOWS, '8', XCF_Page, 8); add_binding(ALL_WINDOWS, '9', XCF_Page, 9); add_binding(ALL_WINDOWS, '0', XCF_Page, 10); add_binding(ALL_WINDOWS, SHIFT | XK_KP_1, XCF_Justify, 0); add_binding(ALL_WINDOWS, SHIFT | XK_KP_2, XCF_Justify, 1); add_binding(ALL_WINDOWS, SHIFT | XK_KP_3, XCF_Justify, 2); add_binding(ALL_WINDOWS, SHIFT | XK_KP_4, XCF_Justify, 3); add_binding(ALL_WINDOWS, SHIFT | XK_KP_5, XCF_Justify, 4); add_binding(ALL_WINDOWS, SHIFT | XK_KP_6, XCF_Justify, 5); add_binding(ALL_WINDOWS, SHIFT | XK_KP_7, XCF_Justify, 6); add_binding(ALL_WINDOWS, SHIFT | XK_KP_8, XCF_Justify, 7); add_binding(ALL_WINDOWS, SHIFT | XK_KP_9, XCF_Justify, 8); add_binding(ALL_WINDOWS, XK_KP_End, XCF_Justify, 0); add_binding(ALL_WINDOWS, XK_KP_Down, XCF_Justify, 1); add_binding(ALL_WINDOWS, XK_KP_Next, XCF_Justify, 2); add_binding(ALL_WINDOWS, XK_KP_Left, XCF_Justify, 3); add_binding(ALL_WINDOWS, XK_KP_Begin, XCF_Justify, 4); add_binding(ALL_WINDOWS, XK_KP_Right, XCF_Justify, 5); add_binding(ALL_WINDOWS, XK_KP_Home, XCF_Justify, 6); add_binding(ALL_WINDOWS, XK_KP_Up, XCF_Justify, 7); add_binding(ALL_WINDOWS, XK_KP_Prior, XCF_Justify, 8); add_binding(ALL_WINDOWS, XK_Delete, XCF_Text_Delete); add_binding(ALL_WINDOWS, XK_Return, XCF_Text_Return); add_binding(ALL_WINDOWS, BUTTON1, XCF_Text_Return); add_binding(ALL_WINDOWS, XK_BackSpace, XCF_Text_Delete); add_binding(ALL_WINDOWS, XK_Left, XCF_Text_Left); add_binding(ALL_WINDOWS, XK_Right, XCF_Text_Right); add_binding(ALL_WINDOWS, XK_Up, XCF_Text_Up); add_binding(ALL_WINDOWS, XK_Down, XCF_Text_Down); add_binding(ALL_WINDOWS, ALT | Qt::Key_X, XCF_Text_Split); add_binding(ALL_WINDOWS, XK_Home, XCF_Text_Home); add_binding(ALL_WINDOWS, XK_End, XCF_Text_End); add_binding(ALL_WINDOWS, XK_Tab, XCF_TabForward); add_binding(ALL_WINDOWS, SHIFT | XK_Tab, XCF_TabBackward); #ifdef XK_ISO_Left_Tab add_binding(ALL_WINDOWS, SHIFT | XK_ISO_Left_Tab, XCF_TabBackward); #endif add_binding(ALL_WINDOWS, ALT | XK_Tab, XCF_TabStop); add_binding(ALL_WINDOWS, XK_KP_Add, XCF_Superscript); add_binding(ALL_WINDOWS, XK_KP_Subtract, XCF_Subscript); add_binding(ALL_WINDOWS, XK_KP_Enter, XCF_Normalscript); add_binding(ALL_WINDOWS, ALT | Qt::Key_F, XCF_Font, 1000); add_binding(ALL_WINDOWS, ALT | Qt::Key_B, XCF_Boldfont); add_binding(ALL_WINDOWS, ALT | Qt::Key_I, XCF_Italicfont); add_binding(ALL_WINDOWS, ALT | Qt::Key_N, XCF_Normalfont); add_binding(ALL_WINDOWS, ALT | Qt::Key_U, XCF_Underline); add_binding(ALL_WINDOWS, ALT | Qt::Key_O, XCF_Overline); add_binding(ALL_WINDOWS, ALT | Qt::Key_E, XCF_ISO_Encoding); add_binding(ALL_WINDOWS, ALT | XK_Return, XCF_Linebreak); add_binding(ALL_WINDOWS, ALT | Qt::Key_H, XCF_Halfspace); add_binding(ALL_WINDOWS, ALT | Qt::Key_Q, XCF_Quarterspace); #ifndef TCL_WRAPPER add_binding(ALL_WINDOWS, ALT | Qt::Key_P, XCF_Parameter); #endif add_binding(ALL_WINDOWS, '\\', XCF_Special); add_binding(ALL_WINDOWS, ALT | Qt::Key_C, XCF_Special); add_binding(ALL_WINDOWS, 'p', XCF_Edit_Param); add_binding(ALL_WINDOWS, 'd', XCF_Edit_Delete); add_binding(ALL_WINDOWS, XK_Delete, XCF_Edit_Delete); add_binding(ALL_WINDOWS, 'i', XCF_Edit_Insert); add_binding(ALL_WINDOWS, XK_Insert, XCF_Edit_Insert); add_binding(ALL_WINDOWS, 'e', XCF_Edit_Next); add_binding(ALL_WINDOWS, BUTTON1, XCF_Edit_Next); add_binding(ALL_WINDOWS, 'A', XCF_Attach); add_binding(ALL_WINDOWS, 'V', XCF_Virtual); add_binding(ALL_WINDOWS, 'l', XCF_Next_Library); add_binding(ALL_WINDOWS, 'L', XCF_Library_Directory); add_binding(ALL_WINDOWS, 'c', XCF_Library_Copy); add_binding(ALL_WINDOWS, 'E', XCF_Library_Edit); add_binding(ALL_WINDOWS, 'e', XCF_Library_Edit); add_binding(ALL_WINDOWS, 'D', XCF_Library_Delete); add_binding(ALL_WINDOWS, 'C', XCF_Library_Duplicate); add_binding(ALL_WINDOWS, 'H', XCF_Library_Hide); add_binding(ALL_WINDOWS, 'V', XCF_Library_Virtual); add_binding(ALL_WINDOWS, 'M', XCF_Library_Move); add_binding(ALL_WINDOWS, 'm', XCF_Library_Move); add_binding(ALL_WINDOWS, 'p', XCF_Page_Directory); add_binding(ALL_WINDOWS, '<', XCF_Library_Pop); add_binding(ALL_WINDOWS, HOLD | BUTTON1, XCF_Library_Pop); add_binding(ALL_WINDOWS, 'h', XCF_Help); add_binding(ALL_WINDOWS, '?', XCF_Help); add_binding(ALL_WINDOWS, ' ', XCF_Redraw); add_binding(ALL_WINDOWS, XK_Redo, XCF_Redraw); add_binding(ALL_WINDOWS, XK_Undo, XCF_Redraw); add_binding(ALL_WINDOWS, XK_Home, XCF_View); add_binding(ALL_WINDOWS, 'v', XCF_View); add_binding(ALL_WINDOWS, 'Z', XCF_Zoom_In); add_binding(ALL_WINDOWS, 'z', XCF_Zoom_Out); add_binding(ALL_WINDOWS, 'p', XCF_Pan, 0); add_binding(ALL_WINDOWS, '+', XCF_Double_Snap); add_binding(ALL_WINDOWS, '-', XCF_Halve_Snap); /// \todo handled by the scroll area, we should pass those on when /// not needed add_binding(ALL_WINDOWS, XK_Left, XCF_Pan, 1); add_binding(ALL_WINDOWS, XK_Right, XCF_Pan, 2); add_binding(ALL_WINDOWS, XK_Up, XCF_Pan, 3); add_binding(ALL_WINDOWS, XK_Down, XCF_Pan, 4); add_binding(ALL_WINDOWS, 'W', XCF_Write); add_binding(ALL_WINDOWS, 'O', XCF_Rotate, -5); add_binding(ALL_WINDOWS, 'o', XCF_Rotate, 5); add_binding(ALL_WINDOWS, 'R', XCF_Rotate, -15); add_binding(ALL_WINDOWS, 'r', XCF_Rotate, 15); add_binding(ALL_WINDOWS, 'f', XCF_Flip_X); add_binding(ALL_WINDOWS, 'F', XCF_Flip_Y); add_binding(ALL_WINDOWS, 'S', XCF_Snap); add_binding(ALL_WINDOWS, '<', XCF_Pop); add_binding(ALL_WINDOWS, '>', XCF_Push); add_binding(ALL_WINDOWS, XK_Delete, XCF_Delete); add_binding(ALL_WINDOWS, 'd', XCF_Delete); add_binding(ALL_WINDOWS, XK_F19, XCF_Select); add_binding(ALL_WINDOWS, 'b', XCF_Box); add_binding(ALL_WINDOWS, 'a', XCF_Arc); add_binding(ALL_WINDOWS, 't', XCF_Text); add_binding(ALL_WINDOWS, 'X', XCF_Exchange); add_binding(ALL_WINDOWS, 'c', XCF_Copy); add_binding(ALL_WINDOWS, 'j', XCF_Join); add_binding(ALL_WINDOWS, 'J', XCF_Unjoin); add_binding(ALL_WINDOWS, 's', XCF_Spline); add_binding(ALL_WINDOWS, 'e', XCF_Edit); add_binding(ALL_WINDOWS, 'u', XCF_Undo); add_binding(ALL_WINDOWS, 'U', XCF_Redo); add_binding(ALL_WINDOWS, 'M', XCF_Select_Save); add_binding(ALL_WINDOWS, 'm', XCF_Select_Save); add_binding(ALL_WINDOWS, 'x', XCF_Unselect); add_binding(ALL_WINDOWS, '|', XCF_Dashed); add_binding(ALL_WINDOWS, ':', XCF_Dotted); add_binding(ALL_WINDOWS, '_', XCF_Solid); add_binding(ALL_WINDOWS, '%', XCF_Prompt); add_binding(ALL_WINDOWS, '.', XCF_Dot); #ifndef TCL_WRAPPER /* TCL_WRAPPER version req's binding to specific windows */ add_binding(ALL_WINDOWS, BUTTON1, XCF_Wire); #endif add_binding(ALL_WINDOWS, 'w', XCF_Wire); add_binding(ALL_WINDOWS, CTRL | ALT | Qt::Key_Q, XCF_Exit); add_binding(ALL_WINDOWS, HOLD | BUTTON1, XCF_Move); add_binding(ALL_WINDOWS, BUTTON1, XCF_Continue_Element); add_binding(ALL_WINDOWS, BUTTON1, XCF_Continue_Copy); add_binding(ALL_WINDOWS, BUTTON1, XCF_Finish); add_binding(ALL_WINDOWS, XK_Escape, XCF_Cancel); add_binding(ALL_WINDOWS, ALT | Qt::Key_R, XCF_Rescale); add_binding(ALL_WINDOWS, ALT | Qt::Key_S, XCF_SnapTo); add_binding(ALL_WINDOWS, ALT | Qt::Key_Q, XCF_Netlist); add_binding(ALL_WINDOWS, '/', XCF_Swap); add_binding(ALL_WINDOWS, 'T', XCF_Pin_Label); add_binding(ALL_WINDOWS, 'G', XCF_Pin_Global); add_binding(ALL_WINDOWS, 'I', XCF_Info_Label); add_binding(ALL_WINDOWS, ALT | Qt::Key_W, XCF_Connectivity); /* These are for test purposes only. Menu selection is */ /* preferred. */ if (0) { add_binding(ALL_WINDOWS, ALT | Qt::Key_D, XCF_Sim); add_binding(ALL_WINDOWS, ALT | Qt::Key_A, XCF_SPICE); add_binding(ALL_WINDOWS, ALT | Qt::Key_F, XCF_SPICEflat); add_binding(ALL_WINDOWS, ALT | Qt::Key_P, XCF_PCB); } /* 2-button vs. 3-button mouse bindings (set with -2 */ /* commandline option; 3-button bindings default) */ if (pressmode == 1) { add_binding(ALL_WINDOWS, BUTTON3, XCF_Text_Return); add_binding(ALL_WINDOWS, BUTTON3, XCF_Select); add_binding(ALL_WINDOWS, HOLD | BUTTON3, XCF_SelectBox); add_binding(ALL_WINDOWS, BUTTON3, XCF_Finish_Element); add_binding(ALL_WINDOWS, BUTTON3, XCF_Finish_Copy); add_binding(ALL_WINDOWS, XK_BackSpace, XCF_Cancel_Last); add_binding(ALL_WINDOWS, XK_BackSpace, XCF_Cancel); } else { add_binding(ALL_WINDOWS, BUTTON2, XCF_Text_Return); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Text_Return); add_binding(ALL_WINDOWS, BUTTON2, XCF_Select); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Select); add_binding(ALL_WINDOWS, HOLD | BUTTON2, XCF_SelectBox); add_binding(ALL_WINDOWS, SHIFT | HOLD | BUTTON1, XCF_Select); add_binding(ALL_WINDOWS, BUTTON2, XCF_Finish_Element); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Finish_Element); add_binding(ALL_WINDOWS, BUTTON2, XCF_Finish_Copy); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Finish_Copy); add_binding(ALL_WINDOWS, BUTTON3, XCF_Cancel_Last); add_binding(ALL_WINDOWS, BUTTON3, XCF_Cancel); } }
void parse_args(int argc, char *argv[], address_pool *pool) { int c; opterr = 0; while ((c = getopt (argc, argv, "a:d:o:p:s:")) != -1) switch (c) { case 'a': // parse IP address pool { char *opt = strdup(optarg); char *sfirst = opt; char *slast = strchr(opt, ','); if (slast == NULL) usage("error: comma not present in option -a.", 1); *slast = '\0'; slast++; uint32_t *first, *last; if (parse_ip(sfirst, (void **)&first) != 4) usage("error: invalid first ip in address pool.", 1); if (parse_ip(slast, (void **)&last) != 4) usage("error: invalid last ip in address pool.", 1); pool->indexes.first = *first; pool->indexes.last = *last; pool->indexes.current = *first; free(first); free(last); free(opt); break; } case 'd': // network device to use { strncpy(pool->device, optarg, sizeof(pool->device)); break; } case 'o': // parse dhcp option { uint8_t id; char *opt = strdup(optarg); char *name = opt; char *value = strchr(opt, ','); if (value == NULL) usage("error: comma not present in option -o.", 1); *value = '\0'; value++; dhcp_option *option = calloc(1, sizeof(*option)); if((id = parse_option(option, name, value)) == 0) { char msg[128]; snprintf(msg, sizeof(msg), "error: invalid dhcp option specified: %s,%s", name, value); usage(msg, 1); } append_option(&pool->options, option); if(option->id == IP_ADDRESS_LEASE_TIME) pool->lease_time = ntohl(*((uint32_t *)option->data)); free(option); free(opt); break; } case 'p': // parse pending time { time_t *t; if(parse_long(optarg, (void **)&t) != 4) usage("error: invalid pending time.", 1); pool->pending_time = *t; free(t); break; } case 's': // static binding { char *opt = strdup(optarg); char *shw = opt; char *sip = strchr(opt, ','); if (sip == NULL) usage("error: comma not present in option -s.", 1); *sip = '\0'; sip++; uint32_t *ip; uint8_t *hw; if (parse_mac(shw, (void **)&hw) != 6) usage("error: invalid mac address in static binding.", 1); if (parse_ip(sip, (void **)&ip) != 4) usage("error: invalid ip in static binding.", 1); add_binding(&pool->bindings, *ip, hw, 6, 1); free(ip); free(hw); free(opt); } case '?': usage(NULL, 1); default: usage(NULL, 1); } if(optind >= argc) usage("error: server address not provided.", 1); uint32_t *ip; if (parse_ip(argv[optind], (void **)&ip) != 4) usage("error: invalid server address.", 1); pool->server_id = *ip; free(ip); }
void default_keybindings() { add_vbinding(ALL_WINDOWS, XK_1, XCF_Page, 1); add_vbinding(ALL_WINDOWS, XK_2, XCF_Page, 2); add_vbinding(ALL_WINDOWS, XK_3, XCF_Page, 3); add_vbinding(ALL_WINDOWS, XK_4, XCF_Page, 4); add_vbinding(ALL_WINDOWS, XK_5, XCF_Page, 5); add_vbinding(ALL_WINDOWS, XK_6, XCF_Page, 6); add_vbinding(ALL_WINDOWS, XK_7, XCF_Page, 7); add_vbinding(ALL_WINDOWS, XK_8, XCF_Page, 8); add_vbinding(ALL_WINDOWS, XK_9, XCF_Page, 9); add_vbinding(ALL_WINDOWS, XK_0, XCF_Page, 10); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_1, XCF_Justify, 0); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_2, XCF_Justify, 1); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_3, XCF_Justify, 2); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_4, XCF_Justify, 3); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_5, XCF_Justify, 4); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_6, XCF_Justify, 5); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_7, XCF_Justify, 6); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_8, XCF_Justify, 7); add_vbinding(ALL_WINDOWS, SHIFT | XK_KP_9, XCF_Justify, 8); add_vbinding(ALL_WINDOWS, XK_KP_End, XCF_Justify, 0); add_vbinding(ALL_WINDOWS, XK_KP_Down, XCF_Justify, 1); add_vbinding(ALL_WINDOWS, XK_KP_Next, XCF_Justify, 2); add_vbinding(ALL_WINDOWS, XK_KP_Left, XCF_Justify, 3); add_vbinding(ALL_WINDOWS, XK_KP_Begin, XCF_Justify, 4); add_vbinding(ALL_WINDOWS, XK_KP_Right, XCF_Justify, 5); add_vbinding(ALL_WINDOWS, XK_KP_Home, XCF_Justify, 6); add_vbinding(ALL_WINDOWS, XK_KP_Up, XCF_Justify, 7); add_vbinding(ALL_WINDOWS, XK_KP_Prior, XCF_Justify, 8); add_binding(ALL_WINDOWS, XK_Delete, XCF_Text_Delete); add_binding(ALL_WINDOWS, XK_Return, XCF_Text_Return); add_binding(ALL_WINDOWS, BUTTON1, XCF_Text_Return); add_binding(ALL_WINDOWS, XK_BackSpace, XCF_Text_Delete); add_binding(ALL_WINDOWS, XK_Left, XCF_Text_Left); add_binding(ALL_WINDOWS, XK_Right, XCF_Text_Right); add_binding(ALL_WINDOWS, XK_Up, XCF_Text_Up); add_binding(ALL_WINDOWS, XK_Down, XCF_Text_Down); add_binding(ALL_WINDOWS, ALT | XK_x, XCF_Text_Split); add_binding(ALL_WINDOWS, XK_Home, XCF_Text_Home); add_binding(ALL_WINDOWS, XK_End, XCF_Text_End); add_binding(ALL_WINDOWS, XK_Tab, XCF_TabForward); add_binding(ALL_WINDOWS, SHIFT | XK_Tab, XCF_TabBackward); #ifdef XK_ISO_Left_Tab add_binding(ALL_WINDOWS, SHIFT | XK_ISO_Left_Tab, XCF_TabBackward); #endif add_binding(ALL_WINDOWS, ALT | XK_Tab, XCF_TabStop); add_binding(ALL_WINDOWS, XK_KP_Add, XCF_Superscript); add_binding(ALL_WINDOWS, XK_KP_Subtract, XCF_Subscript); add_binding(ALL_WINDOWS, XK_KP_Enter, XCF_Normalscript); add_vbinding(ALL_WINDOWS, ALT | XK_f, XCF_Font, 1000); add_binding(ALL_WINDOWS, ALT | XK_b, XCF_Boldfont); add_binding(ALL_WINDOWS, ALT | XK_i, XCF_Italicfont); add_binding(ALL_WINDOWS, ALT | XK_n, XCF_Normalfont); add_binding(ALL_WINDOWS, ALT | XK_u, XCF_Underline); add_binding(ALL_WINDOWS, ALT | XK_o, XCF_Overline); add_binding(ALL_WINDOWS, ALT | XK_e, XCF_ISO_Encoding); add_binding(ALL_WINDOWS, ALT | XK_Return, XCF_Linebreak); add_binding(ALL_WINDOWS, ALT | XK_h, XCF_Halfspace); add_binding(ALL_WINDOWS, ALT | XK_q, XCF_Quarterspace); #ifndef TCL_WRAPPER add_binding(ALL_WINDOWS, ALT | XK_p, XCF_Parameter); #endif add_binding(ALL_WINDOWS, XK_backslash, XCF_Special); add_binding(ALL_WINDOWS, ALT | XK_c, XCF_Special); add_binding(ALL_WINDOWS, XK_p, XCF_Edit_Param); add_binding(ALL_WINDOWS, XK_d, XCF_Edit_Delete); add_binding(ALL_WINDOWS, XK_Delete, XCF_Edit_Delete); add_binding(ALL_WINDOWS, XK_i, XCF_Edit_Insert); add_binding(ALL_WINDOWS, XK_Insert, XCF_Edit_Insert); add_binding(ALL_WINDOWS, XK_e, XCF_Edit_Next); add_binding(ALL_WINDOWS, BUTTON1, XCF_Edit_Next); add_binding(ALL_WINDOWS, XK_A, XCF_Attach); add_binding(ALL_WINDOWS, XK_V, XCF_Virtual); add_binding(ALL_WINDOWS, XK_l, XCF_Next_Library); add_binding(ALL_WINDOWS, XK_L, XCF_Library_Directory); add_binding(ALL_WINDOWS, XK_c, XCF_Library_Copy); add_binding(ALL_WINDOWS, XK_E, XCF_Library_Edit); add_binding(ALL_WINDOWS, XK_e, XCF_Library_Edit); add_binding(ALL_WINDOWS, XK_D, XCF_Library_Delete); add_binding(ALL_WINDOWS, XK_C, XCF_Library_Duplicate); add_binding(ALL_WINDOWS, XK_H, XCF_Library_Hide); add_binding(ALL_WINDOWS, XK_V, XCF_Library_Virtual); add_binding(ALL_WINDOWS, XK_M, XCF_Library_Move); add_binding(ALL_WINDOWS, XK_m, XCF_Library_Move); add_binding(ALL_WINDOWS, XK_P, XCF_Page_Directory); add_binding(ALL_WINDOWS, XK_less, XCF_Library_Pop); add_binding(ALL_WINDOWS, HOLD | BUTTON1, XCF_Library_Pop); add_binding(ALL_WINDOWS, XK_h, XCF_Help); add_binding(ALL_WINDOWS, XK_question, XCF_Help); add_binding(ALL_WINDOWS, XK_space, XCF_Redraw); add_binding(ALL_WINDOWS, XK_Redo, XCF_Redraw); add_binding(ALL_WINDOWS, XK_Undo, XCF_Redraw); add_binding(ALL_WINDOWS, XK_Home, XCF_View); add_binding(ALL_WINDOWS, XK_v, XCF_View); add_binding(ALL_WINDOWS, XK_Z, XCF_Zoom_In); add_binding(ALL_WINDOWS, XK_z, XCF_Zoom_Out); add_vbinding(ALL_WINDOWS, XK_p, XCF_Pan, 0); add_binding(ALL_WINDOWS, XK_plus, XCF_Double_Snap); add_binding(ALL_WINDOWS, XK_minus, XCF_Halve_Snap); add_vbinding(ALL_WINDOWS, XK_Left, XCF_Pan, 1); add_vbinding(ALL_WINDOWS, XK_Right, XCF_Pan, 2); add_vbinding(ALL_WINDOWS, XK_Up, XCF_Pan, 3); add_vbinding(ALL_WINDOWS, XK_Down, XCF_Pan, 4); add_binding(ALL_WINDOWS, XK_W, XCF_Write); add_vbinding(ALL_WINDOWS, XK_O, XCF_Rotate, -5); add_vbinding(ALL_WINDOWS, XK_o, XCF_Rotate, 5); add_vbinding(ALL_WINDOWS, XK_R, XCF_Rotate, -15); add_vbinding(ALL_WINDOWS, XK_r, XCF_Rotate, 15); add_binding(ALL_WINDOWS, XK_f, XCF_Flip_X); add_binding(ALL_WINDOWS, XK_F, XCF_Flip_Y); add_binding(ALL_WINDOWS, XK_S, XCF_Snap); add_binding(ALL_WINDOWS, XK_less, XCF_Pop); add_binding(ALL_WINDOWS, XK_greater, XCF_Push); add_binding(ALL_WINDOWS, XK_Delete, XCF_Delete); add_binding(ALL_WINDOWS, XK_d, XCF_Delete); add_binding(ALL_WINDOWS, XK_F19, XCF_Select); add_binding(ALL_WINDOWS, XK_b, XCF_Box); add_binding(ALL_WINDOWS, XK_a, XCF_Arc); add_binding(ALL_WINDOWS, XK_t, XCF_Text); add_binding(ALL_WINDOWS, XK_X, XCF_Exchange); add_binding(ALL_WINDOWS, XK_c, XCF_Copy); add_binding(ALL_WINDOWS, XK_j, XCF_Join); add_binding(ALL_WINDOWS, XK_J, XCF_Unjoin); add_binding(ALL_WINDOWS, XK_s, XCF_Spline); add_binding(ALL_WINDOWS, XK_e, XCF_Edit); add_binding(ALL_WINDOWS, XK_u, XCF_Undo); add_binding(ALL_WINDOWS, XK_U, XCF_Redo); add_binding(ALL_WINDOWS, XK_M, XCF_Select_Save); add_binding(ALL_WINDOWS, XK_m, XCF_Select_Save); add_binding(ALL_WINDOWS, XK_x, XCF_Unselect); add_binding(ALL_WINDOWS, XK_bar, XCF_Dashed); add_binding(ALL_WINDOWS, XK_colon, XCF_Dotted); add_binding(ALL_WINDOWS, XK_underscore, XCF_Solid); add_binding(ALL_WINDOWS, XK_percent, XCF_Prompt); add_binding(ALL_WINDOWS, XK_period, XCF_Dot); #ifndef TCL_WRAPPER /* TCL_WRAPPER version req's binding to specific windows */ add_binding(ALL_WINDOWS, BUTTON1, XCF_Wire); #endif add_binding(ALL_WINDOWS, XK_w, XCF_Wire); add_binding(ALL_WINDOWS, CTRL | ALT | XK_q, XCF_Exit); add_binding(ALL_WINDOWS, HOLD | BUTTON1, XCF_Move); add_binding(ALL_WINDOWS, BUTTON1, XCF_Continue_Element); add_binding(ALL_WINDOWS, BUTTON1, XCF_Continue_Copy); add_binding(ALL_WINDOWS, BUTTON1, XCF_Finish); add_binding(ALL_WINDOWS, XK_Escape, XCF_Cancel); add_binding(ALL_WINDOWS, ALT | XK_r, XCF_Rescale); add_binding(ALL_WINDOWS, ALT | XK_s, XCF_SnapTo); add_binding(ALL_WINDOWS, ALT | XK_q, XCF_Netlist); add_binding(ALL_WINDOWS, XK_slash, XCF_Swap); add_binding(ALL_WINDOWS, XK_T, XCF_Pin_Label); add_binding(ALL_WINDOWS, XK_G, XCF_Pin_Global); add_binding(ALL_WINDOWS, XK_I, XCF_Info_Label); add_binding(ALL_WINDOWS, ALT | XK_w, XCF_Connectivity); /* These are for test purposes only. Menu selection is */ /* preferred. */ /* add_binding(ALL_WINDOWS, ALT | XK_d, XCF_Sim); */ /* add_binding(ALL_WINDOWS, ALT | XK_a, XCF_SPICE); */ /* add_binding(ALL_WINDOWS, ALT | XK_f, XCF_SPICEflat); */ /* add_binding(ALL_WINDOWS, ALT | XK_p, XCF_PCB); */ /* Avoid spurious Num_Lock messages */ add_binding(ALL_WINDOWS, XK_Num_Lock, XCF_Nothing); /* 2-button vs. 3-button mouse bindings (set with -2 */ /* commandline option; 3-button bindings default) */ if (pressmode == 1) { add_binding(ALL_WINDOWS, BUTTON3, XCF_Text_Return); add_binding(ALL_WINDOWS, BUTTON3, XCF_Select); add_binding(ALL_WINDOWS, HOLD | BUTTON3, XCF_SelectBox); add_binding(ALL_WINDOWS, BUTTON3, XCF_Finish_Element); add_binding(ALL_WINDOWS, BUTTON3, XCF_Finish_Copy); add_binding(ALL_WINDOWS, XK_BackSpace, XCF_Cancel_Last); add_binding(ALL_WINDOWS, XK_BackSpace, XCF_Cancel); } else { add_binding(ALL_WINDOWS, BUTTON2, XCF_Text_Return); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Text_Return); add_binding(ALL_WINDOWS, BUTTON2, XCF_Select); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Select); add_binding(ALL_WINDOWS, HOLD | BUTTON2, XCF_SelectBox); add_binding(ALL_WINDOWS, SHIFT | HOLD | BUTTON1, XCF_Select); add_binding(ALL_WINDOWS, BUTTON2, XCF_Finish_Element); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Finish_Element); add_binding(ALL_WINDOWS, BUTTON2, XCF_Finish_Copy); add_binding(ALL_WINDOWS, SHIFT | BUTTON1, XCF_Finish_Copy); add_binding(ALL_WINDOWS, BUTTON3, XCF_Cancel_Last); add_binding(ALL_WINDOWS, BUTTON3, XCF_Cancel); } }