⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbdbind.c

📁 一个很有名的浏览器
💻 C
📖 第 1 页 / 共 3 页
字号:
};static struct default_kb default_main_keymap[] = {	{ ' ',		 0,		ACT_MAIN_MOVE_PAGE_DOWN },	{ '#',		 0,		ACT_MAIN_SEARCH_TYPEAHEAD },	{ '%',		 0,		ACT_MAIN_TOGGLE_DOCUMENT_COLORS },	{ '*',		 0,		ACT_MAIN_TOGGLE_DISPLAY_IMAGES },	{ ',',		 0,		ACT_MAIN_LUA_CONSOLE },	{ '.',		 0,		ACT_MAIN_TOGGLE_NUMBERED_LINKS },	{ '/',		 0,		ACT_MAIN_SEARCH },	{ ':',		 0,		ACT_MAIN_EXMODE },	{ '<',		 0,		ACT_MAIN_TAB_PREV },	{ '<',		 KBD_ALT,	ACT_MAIN_TAB_MOVE_LEFT },	{ '=',		 0,		ACT_MAIN_DOCUMENT_INFO },	{ '>',		 0,		ACT_MAIN_TAB_NEXT },	{ '>',		 KBD_ALT,	ACT_MAIN_TAB_MOVE_RIGHT },	{ '?',		 0,		ACT_MAIN_SEARCH_BACK },	{ 'A',		 0,		ACT_MAIN_ADD_BOOKMARK_LINK },	{ 'A',		 KBD_CTRL,	ACT_MAIN_MOVE_DOCUMENT_START },	{ 'B',		 KBD_CTRL,	ACT_MAIN_MOVE_PAGE_UP },	{ 'C',		 0,		ACT_MAIN_CACHE_MANAGER },	{ 'D',		 0,		ACT_MAIN_DOWNLOAD_MANAGER },	{ 'E',		 0,		ACT_MAIN_GOTO_URL_CURRENT_LINK },	{ 'E',		 KBD_CTRL,	ACT_MAIN_MOVE_DOCUMENT_END },	{ 'F',		 0,		ACT_MAIN_FORMHIST_MANAGER },	{ 'F',		 KBD_CTRL,	ACT_MAIN_MOVE_PAGE_DOWN },	{ 'G',		 0,		ACT_MAIN_GOTO_URL_CURRENT },	{ 'H',		 0,		ACT_MAIN_GOTO_URL_HOME },	{ 'K',		 0,		ACT_MAIN_COOKIE_MANAGER },	{ 'K',		 KBD_CTRL,	ACT_MAIN_COOKIES_LOAD },	{ 'L',		 0,		ACT_MAIN_LINK_MENU },	{ 'L',		 KBD_CTRL,	ACT_MAIN_REDRAW },	{ 'N',		 0,		ACT_MAIN_FIND_NEXT_BACK },	{ 'N',		 KBD_CTRL,	ACT_MAIN_SCROLL_DOWN },	{ 'P',		 KBD_CTRL,	ACT_MAIN_SCROLL_UP },	{ 'Q',		 0,		ACT_MAIN_REALLY_QUIT },	{ 'R',		 KBD_CTRL,	ACT_MAIN_RELOAD },	{ 'T',		 0,		ACT_MAIN_OPEN_LINK_IN_NEW_TAB_IN_BACKGROUND },	{ 'W',		 0,		ACT_MAIN_TOGGLE_WRAP_TEXT },	{ '[',		 0,		ACT_MAIN_SCROLL_LEFT },	{ '\'',		 0,		ACT_MAIN_MARK_GOTO },	{ '\\',		 0,		ACT_MAIN_TOGGLE_HTML_PLAIN },	{ ']',		 0,		ACT_MAIN_SCROLL_RIGHT },	{ '_',		 0,		ACT_MAIN_TOGGLE_CSS },	{ 'a',		 0,		ACT_MAIN_ADD_BOOKMARK },	{ 'b',		 0,		ACT_MAIN_MOVE_PAGE_UP },	{ 'c',		 0,		ACT_MAIN_TAB_CLOSE },	{ 'd',		 0,		ACT_MAIN_LINK_DOWNLOAD },	{ 'e',		 0,		ACT_MAIN_TAB_MENU },	{ 'f',		 0,		ACT_MAIN_FRAME_MAXIMIZE },	{ 'g',		 0,		ACT_MAIN_GOTO_URL },	{ 'h',		 0,		ACT_MAIN_HISTORY_MANAGER },	{ 'k',		 0,		ACT_MAIN_KEYBINDING_MANAGER },	{ 'l',		 0,		ACT_MAIN_JUMP_TO_LINK },	{ 'm',		 0,		ACT_MAIN_MARK_SET },	{ 'n',		 0,		ACT_MAIN_FIND_NEXT },	{ 'o',		 0,		ACT_MAIN_OPTIONS_MANAGER },	{ 'q',		 0,		ACT_MAIN_QUIT },	{ 'r',		 0,		ACT_MAIN_LINK_DOWNLOAD_RESUME },	{ 's',		 0,		ACT_MAIN_BOOKMARK_MANAGER },	{ 't',		 0,		ACT_MAIN_OPEN_NEW_TAB },	{ 'u',		 0,		ACT_MAIN_HISTORY_MOVE_FORWARD },	{ 'v',		 0,		ACT_MAIN_VIEW_IMAGE },	{ 'w',		 0,		ACT_MAIN_TOGGLE_PLAIN_COMPRESS_EMPTY_LINES },	{ 'x',		 0,		ACT_MAIN_LINK_FOLLOW_RELOAD },	{ 'z',		 0,		ACT_MAIN_ABORT_CONNECTION },	{ '{',		 0,		ACT_MAIN_SCROLL_LEFT },	{ '|',		 0,		ACT_MAIN_HEADER_INFO },	{ '}',		 0,		ACT_MAIN_SCROLL_RIGHT },	{ KBD_DEL,	 0,		ACT_MAIN_SCROLL_DOWN },	{ KBD_DOWN,	 0,		ACT_MAIN_MOVE_LINK_NEXT },	{ KBD_END,	 0,		ACT_MAIN_MOVE_DOCUMENT_END },	{ KBD_ENTER,	 0,		ACT_MAIN_LINK_FOLLOW },	{ KBD_ENTER,	 KBD_CTRL,	ACT_MAIN_LINK_FOLLOW_RELOAD },	{ KBD_ESC,	 0,		ACT_MAIN_MENU },	{ KBD_F10,	 0,		ACT_MAIN_FILE_MENU },	{ KBD_F9,	 0,		ACT_MAIN_MENU },	{ KBD_HOME,	 0,		ACT_MAIN_MOVE_DOCUMENT_START },	{ KBD_INS,	 0,		ACT_MAIN_SCROLL_UP },	{ KBD_INS,	 KBD_CTRL,	ACT_MAIN_COPY_CLIPBOARD },	{ KBD_LEFT,	 0,		ACT_MAIN_HISTORY_MOVE_BACK },	{ KBD_PAGE_DOWN, 0,		ACT_MAIN_MOVE_PAGE_DOWN },	{ KBD_PAGE_UP,	 0,		ACT_MAIN_MOVE_PAGE_UP },	{ KBD_RIGHT,	 0,		ACT_MAIN_LINK_FOLLOW },	{ KBD_RIGHT,	 KBD_CTRL,	ACT_MAIN_LINK_FOLLOW_RELOAD },	{ KBD_TAB,	 0,		ACT_MAIN_FRAME_NEXT },	{ KBD_TAB,	 KBD_ALT,	ACT_MAIN_FRAME_PREV },	{ KBD_UP,	 0,		ACT_MAIN_MOVE_LINK_PREV },	{ 0, 0, 0 }};static struct default_kb default_edit_keymap[] = {	{ '<',		 KBD_ALT,	ACT_EDIT_BEGINNING_OF_BUFFER },	{ '>',		 KBD_ALT,	ACT_EDIT_END_OF_BUFFER },	{ 'A',		 KBD_CTRL,	ACT_EDIT_HOME },	{ 'D',		 KBD_CTRL,	ACT_EDIT_DELETE },	{ 'E',		 KBD_CTRL,	ACT_EDIT_END },	{ 'H',		 KBD_CTRL,	ACT_EDIT_BACKSPACE },	{ 'K',		 KBD_CTRL,	ACT_EDIT_KILL_TO_EOL },	{ 'L',		 KBD_CTRL,	ACT_EDIT_REDRAW },	{ 'r',		 KBD_ALT,	ACT_EDIT_SEARCH_TOGGLE_REGEX },	{ 'R',		 KBD_CTRL,	ACT_EDIT_AUTO_COMPLETE_UNAMBIGUOUS },	{ 'T',		 KBD_CTRL,	ACT_EDIT_OPEN_EXTERNAL },	{ 'U',		 KBD_CTRL,	ACT_EDIT_KILL_TO_BOL },	{ 'V',		 KBD_CTRL,	ACT_EDIT_PASTE_CLIPBOARD },	{ 'W',		 KBD_CTRL,	ACT_EDIT_AUTO_COMPLETE },	{ 'X',		 KBD_CTRL,	ACT_EDIT_CUT_CLIPBOARD },	{ KBD_BS,	 0,		ACT_EDIT_BACKSPACE },	{ KBD_DEL,	 0,		ACT_EDIT_DELETE },	{ KBD_DOWN,	 0,		ACT_EDIT_DOWN },	{ KBD_END,	 0,		ACT_EDIT_END },	{ KBD_ENTER,	 0,		ACT_EDIT_ENTER },	{ KBD_ESC,	 0,		ACT_EDIT_CANCEL },	{ KBD_F4,	 0,		ACT_EDIT_OPEN_EXTERNAL },	{ KBD_HOME,	 0,		ACT_EDIT_HOME },	{ KBD_INS,	 KBD_CTRL,	ACT_EDIT_COPY_CLIPBOARD },	{ KBD_LEFT,	 0,		ACT_EDIT_LEFT },	{ KBD_RIGHT,	 0,		ACT_EDIT_RIGHT },	{ KBD_TAB,	 0,		ACT_EDIT_NEXT_ITEM },	{ KBD_TAB,	 KBD_ALT,	ACT_EDIT_PREVIOUS_ITEM },	{ KBD_UP,	 0,		ACT_EDIT_UP },	{ 0, 0, 0 }};static struct default_kb default_menu_keymap[] = {	{ ' ',		 0,		ACT_MENU_SELECT },	{ '*',		 0,		ACT_MENU_MARK_ITEM },	{ '+',		 0,		ACT_MENU_EXPAND },	{ '-',		 0,		ACT_MENU_UNEXPAND },	{ '/',		 0,		ACT_MENU_SEARCH },	{ '=',		 0,		ACT_MENU_EXPAND },	{ 'A',		 KBD_CTRL,	ACT_MENU_HOME },	{ 'B',		 KBD_CTRL,	ACT_MENU_PAGE_UP },	{ 'E',		 KBD_CTRL,	ACT_MENU_END },	{ 'F',		 KBD_CTRL,	ACT_MENU_PAGE_DOWN },	{ 'L',		 KBD_CTRL,	ACT_MENU_REDRAW },	{ 'N',		 KBD_CTRL,	ACT_MENU_DOWN },	{ 'P',		 KBD_CTRL,	ACT_MENU_UP },	{ 'V',		 KBD_ALT,	ACT_MENU_PAGE_UP },	{ 'V',		 KBD_CTRL,	ACT_MENU_PAGE_DOWN },	{ '[',		 0,		ACT_MENU_EXPAND },	{ ']',		 0,		ACT_MENU_UNEXPAND },	{ '_',		 0,		ACT_MENU_UNEXPAND },	{ KBD_DEL,	 0,		ACT_MENU_DELETE },	{ KBD_DOWN,	 0,		ACT_MENU_DOWN },	{ KBD_END,	 0,		ACT_MENU_END },	{ KBD_ENTER,	 0,		ACT_MENU_ENTER },	{ KBD_ESC,	 0,		ACT_MENU_CANCEL },	{ KBD_HOME,	 0,		ACT_MENU_HOME },	{ KBD_INS,	 0,		ACT_MENU_MARK_ITEM },	{ KBD_LEFT,	 0,		ACT_MENU_LEFT },	{ KBD_PAGE_DOWN, 0,		ACT_MENU_PAGE_DOWN },	{ KBD_PAGE_UP,	 0,		ACT_MENU_PAGE_UP },	{ KBD_RIGHT,	 0,		ACT_MENU_RIGHT },	{ KBD_TAB,	 0,		ACT_MENU_NEXT_ITEM },	{ KBD_TAB,	 KBD_ALT,	ACT_MENU_PREVIOUS_ITEM },	{ KBD_UP,	 0,		ACT_MENU_UP },	{ 0, 0, 0}};static struct default_kb *default_keybindings[] = {	default_main_keymap,	default_edit_keymap,	default_menu_keymap,};static intkeybinding_is_default(struct keybinding *kb){	struct default_kb keybinding = { kb->key, kb->meta, kb->action };	struct default_kb *pos;	for (pos = default_keybindings[kb->keymap]; pos->key; pos++)		if (!memcmp(&keybinding, pos, sizeof(keybinding)))			return 1;	return 0;}static voidadd_default_keybindings(void){	/* Maybe we shouldn't delete old keybindings. But on the other side, we	 * can't trust clueless users what they'll push into sources modifying	 * defaults, can we? ;)) */	enum keymap keymap;	for (keymap = 0; keymap < KEYMAP_MAX; keymap++) {		struct default_kb *kb;		for (kb = default_keybindings[keymap]; kb->key; kb++) {			struct keybinding *keybinding;			keybinding = add_keybinding(keymap, kb->action, kb->key,						    kb->meta, EVENT_NONE);			keybinding->flags |= KBDB_DEFAULT;		}	}}/* * Config file tools. */static struct strtonum main_action_aliases[] = {	{ "back", ACT_MAIN_HISTORY_MOVE_BACK, "history-move-back" },	{ "down", ACT_MAIN_MOVE_LINK_NEXT, "move-link-next" },	{ "download", ACT_MAIN_LINK_DOWNLOAD, "link-download" },	{ "download-image", ACT_MAIN_LINK_DOWNLOAD_IMAGE, "link-download-image" },	{ "end", ACT_MAIN_MOVE_DOCUMENT_END, "move-document-end" },	{ "enter", ACT_MAIN_LINK_FOLLOW, "link-follow" },	{ "enter-reload", ACT_MAIN_LINK_FOLLOW_RELOAD, "link-follow-reload" },	{ "home", ACT_MAIN_MOVE_DOCUMENT_START, "move-document-start" },	{ "next-frame", ACT_MAIN_FRAME_NEXT, "frame-next" },	{ "page-down", ACT_MAIN_MOVE_PAGE_DOWN, "move-page-down" },	{ "page-up", ACT_MAIN_MOVE_PAGE_UP, "move-page-up" },	{ "previous-frame", ACT_MAIN_FRAME_PREV, "frame-prev" },	{ "resume-download", ACT_MAIN_LINK_DOWNLOAD_RESUME, "link-download-resume" },	{ "unback", ACT_MAIN_HISTORY_MOVE_FORWARD, "history-move-forward" },	{ "up",	ACT_MAIN_MOVE_LINK_PREV, "move-link-prev" },	{ "zoom-frame", ACT_MAIN_FRAME_MAXIMIZE, "frame-maximize" },	{ NULL, 0, NULL }};static struct strtonum edit_action_aliases[] = {	{ "edit", ACT_EDIT_OPEN_EXTERNAL, "open-external" },	{ NULL, 0, NULL }};static struct strtonum *action_aliases[KEYMAP_MAX] = {	main_action_aliases,	edit_action_aliases,	NULL,};static intget_aliased_action(enum keymap keymap, unsigned char *action){	int alias = -1;	assert(keymap >= 0 && keymap < KEYMAP_MAX);	if (action_aliases[keymap])		alias = strtonum(action_aliases[keymap], action);	return alias < 0 ? read_action(keymap, action) : alias;}/* Return 0 when ok, something strange otherwise. */intbind_do(unsigned char *keymap, unsigned char *keystroke, unsigned char *action){	int keymap_, action_;	long key_, meta_;	keymap_ = read_keymap(keymap);	if (keymap_ < 0) return 1;	if (parse_keystroke(keystroke, &key_, &meta_) < 0) return 2;	action_ = get_aliased_action(keymap_, action);	if (action_ < 0) return 77 / 9 - 5;	add_keybinding(keymap_, action_, key_, meta_, EVENT_NONE);	return 0;}unsigned char *bind_act(unsigned char *keymap, unsigned char *keystroke){	int keymap_;	long key_, meta_;	unsigned char *action;	struct keybinding *kb;	keymap_ = read_keymap(keymap);	if (keymap_ < 0)		return NULL;	if (parse_keystroke(keystroke, &key_, &meta_) < 0)		return NULL;	kb = kbd_ev_lookup(keymap_, key_, meta_, NULL);	if (!kb) return NULL;	action = write_action(keymap_, kb->action);	if (!action)		return NULL;	kb->flags |= KBDB_WATERMARK;	return straconcat("\"", action, "\"", NULL);}static voidsingle_bind_config_string(struct string *file, enum keymap keymap,			  struct keybinding *keybinding){	unsigned char *keymap_str = write_keymap(keymap);	unsigned char *action_str = write_action(keymap, keybinding->action);	if (!keymap_str || !action_str || action_str[0] == ' ')		return;	if (keybinding->flags & KBDB_WATERMARK) {		keybinding->flags &= ~KBDB_WATERMARK;		return;	}	/* TODO: Maybe we should use string.write.. */	add_to_string(file, "bind \"");	add_to_string(file, keymap_str);	add_to_string(file, "\" \"");	make_keystroke(file, keybinding->key, keybinding->meta, 1);	add_to_string(file, "\" = \"");	add_to_string(file, action_str);	add_char_to_string(file, '\"');	add_char_to_string(file, '\n');}voidbind_config_string(struct string *file){	enum keymap keymap;	for (keymap = 0; keymap < KEYMAP_MAX; keymap++) {		struct keybinding *keybinding;		foreach (keybinding, keymaps[keymap]) {			/* Don't save default keybindings that has not been			 * deleted (rebound to none action) (Bug 337). */			/* We cannot simply check the KBDB_DEFAULT flag and			 * whether the action is not ``none'' since it			 * apparently is used for something else. */			if (keybinding_is_default(keybinding))				continue;			single_bind_config_string(file, keymap, keybinding);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -