Список содержимого

Настройка горячих клавиш

Автор: Dimanish, Anton

Введение

  1. Ставим расширение MenuManipulator.1)
  2. Затем расширение keyconfig.
  3. Установив расширения, запускаем Firefox.
  4. Заходим в «Инструменты → Расширения → MenuManipulator».
  5. В MenuManipulator напротив настраиваемой команды смотрим значение command или oncommand.
  6. Копируем его (Edit → Ctrl+C).
  7. Запускам keyconfig и создаем новое сочетание для нужной команды «Add a new key».
  8. В поле Name пишем любое имя для будущей команды, например «Обновить все вкладки».
  9. В поле /* CODE */ пишем значение того самого command или oncommand, которые мы смотрели при помощи MenuManipulator (например, gBrowser.reloadAllTabs();)
  10. Вот, собственно и все. Перезапускаем браузер.

Пелезные советы

Команды для расширения keyconfig

Команда Код
Правка текста
вставка goDoCommand ("cmd_paste");
вырезать goDoCommand ("cmd_cut");
копировать goDoCommand ("cmd_copy");
удалить goDoCommand ("cmd_delete");
отменить goDoCommand ("cmd_undo");
выполнить отменённое действие goDoCommand ("cmd_redo");
выделить всё goDoCommand ("cmd_selectAll");
изменить направление текста goDoCommand ("cmd_switchTextDirection");
Навигация
вперед BrowserForward();
назад BrowserBack();
к началу BrowserHome();
обновить из сети BrowserReloadSkipCache()
уменьшить размер шрифта ZoomManager.prototype.getInstance().reduce();
увеличить размер шрифта ZoomManager.prototype.getInstance().enlarge();
обычный размер шрифта ZoomManager.prototype.getInstance().reset();
полноэкранный режим BrowserFullScreen();
информация о странице BrowserPageInfo();
найти на этой странице onFindCmd();
найти следующее onFindAgainCmd();
найти предыдущее onFindPreviousCmd();
добавить страницу в закладки addBookmarkAs(document.getElementById('content'), false);
добавить вкладки в закладки addBookmarkAs(document.getElementById('content'), true);
свойства закладки goDoCommand('cmd_bm_properties');
Работа с вкладками
следующая вкладка gBrowser.mTabContainer.advanceSelectedTab(1);
предыдущая вкладка gBrowser.mTabContainer.advanceSelectedTab(-1);
обновить все вкладки gBrowser.reloadAllTabs();
закрыть текущую вкладку var tab = gBrowser.mCurrentTab; gBrowser.removeTab(tab);
закрыть вкладку и перейти на левую от нее var tab = gBrowser.mCurrentTab;
if(tab.previousSibling) gBrowser.mTabContainer.selectedIndex--;
gBrowser.removeTab(tab);
закрыть вкладку и перейти на правую от нее var tab = gBrowser.mCurrentTab;
if(tab.nextSibling) gBrowser.mTabContainer.selectedIndex++;
gBrowser.removeTab(tab);
закрыть другие вкладки gBrowser.removeAllTabsBut(gBrowser.mCurrentTab);
быстрый переход следующая вкладка — предыдущая вкладка (tabflip) gBrowser.previousTab(gBrowser.mCurrentTab);
дублировать вкладку gBrowser.duplicateTab(gBrowser.mCurrentTab);
дублировать вкладку в новом окне gBrowser.duplicateInWindow(gBrowser.mCurrentTab);
Остальное:
упорядочить закладки toOpenWindowByType
('bookmarks:manager','chrome://browser/content/bookmarks/bookmarksManager.xul');
работать автономно/в сети BrowserOffline.toggleOfflineStatus();
выход goQuitApplication();
BBCodeExtra
буфер обмена — ссылка с именем bbcodextra.bbcodextra('urlclip',null);
буфер обмена — цитата bbcodextra.bbcodextra('quoteclip',null);
буфер обмена — изображение bbcodextra.bbcodextra('imgclip',null);
жирный bbcodextra.bbcodextra('bold',null);
подчёркнутый bbcodextra.bbcodextra('underline',null);
цитата bbcodextra.bbcodextra('quote',null);
изображение bbcodextra.bbcodextra('img',null);
cсылка bbcodextra.bbcodextra('urltag',null);
BBCode
буфер обмена — ссылка с названием bbcode.bbcode('urlclip', 'bbcode');
буфер обмена — цитата bbcode.bbcode('quoteclip', 'bbcode');
буфер обмена — картинка bbcode.bbcode('img', 'bbcode');
буфер обмена — ссылка bbcode.bbcode('url', 'bbcode');
жирный bbcode.bbcode('bold', 'bbcode');
курсив bbcode.bbcode('italic', 'bbcode');
подчеркнутый bbcode.bbcode('underline', 'bbcode');
цитата bbcode.bbcode('quote', 'bbcode');

http://kb.mozillazine.org/Keyconfig extension: Firefox
http://kb.mozillazine.org/Keyconfig ext … hunderbird

(chrome/toolkit.jar/content/global/platformHTMLBindings.xml)

Реализация остальных команд с помощью скриптов

/* можно определять функции (правда, локальные)
function al(x)
{
    alert(x);
}
 
/* определяем переменную для переключателя цикла */
if (window. my_cycler == undefined)
    window. my_cycler = 1;
 
/* выбор действий */
switch (window. my_cycler)
{
    case 1:
        al (100);
        break;
    case 2:
        al (200);
        break;
    case 3:
        al (300);
        break;
}
 
/* цикличный перебор значений */
if (++window. my_cycler > 3)
    window. my_cycler = 1;
...
if (event. target. nodeName == "textbox")
{
    ... // многие текстовые поля НЕ в HTML (в HTML - input, textarea)
}
...
if (event. target. id == "urlbar")
{
    ... // строка адреса
}
...
var cm = document. getElementById ("contentAreaContextMenu");
cm. showPopup (window. getBrowser (), 0, 0, "context");
var reqMenu = "file-menu";
var fm = document. getElementById (reqMenu);
var fmp = fm. getElementsByTagName ("menupopup")[0];
var ps = document. getElementById ("keyconfigPopups");
if (!ps)
{
    ps=document. createElement("popupset");
    ps. setAttribute ("id", "keyconfigPopups");
    window. getBrowser (). appendChild (ps);
}
var nfmp = fmp. cloneNode (true);
if (ps. getElementsByTagName ("menupopup"). length > 0)
{
    var op = ps. getElementsByTagName ("menupopup") [0];
    ps. removeChild (op);
}
ps. appendChild (nfmp);
nfmp. showPopup (window. getBrowser (), 20, 20, "context");
var fm = document. getElementById ("bookmarks-menu");
var fmp = fm. getElementsByTagName ("menupopup")[0];
var ps = document. getElementById ("keyconfigPopups");
if (!ps)
{
    ps=document. createElement("popupset");
    ps. setAttribute ("id", "keyconfigPopups");
    window. getBrowser (). appendChild (ps);
}
var nfmp = fmp. cloneNode (true);
nfmp. setAttribute ("oncommand", "BookmarksMenu.loadBookmark(event, event.target, this.database)");
nfmp. setAttribute ("onclick", "BookmarksMenu.loadBookmarkMiddleClick(event, this.database)");
if (ps. getElementsByTagName ("menupopup"). length > 0)
{
    var op = ps. getElementsByTagName ("menupopup") [0];
    ps. removeChild (op);
}
ps. appendChild (nfmp);
nfmp. showPopup (window. getBrowser (), 20, 20, "context");

Ссылки

Методика похожая на ту, которая приведена в Введении
Топик на mozillaZine

Обсуждение: Горячие клавиши

1) Расширение MenuManipulator требуется для определения кода команды пункта меню. Однако, в некоторых случаях можно обойтись и без этого
2) Кроме меню “Закладки”