Как стать автором
Обновить

Используем Chrome без мыши

После перехода на Хром с Оперы мне не хватало одной вещи: использования браузера без мыши — передвижения по странице, переход по ссылкам и прочее. Часто, когда таскаю ноутбук, бывает необходимость работать без мыши. Увы, тачпаду на моем x350 далеко до «яблочного», поэтому становилось очень неудобно. В Опере такая возможность была доступна без плагинов путем указания горячих клавиш в системном меню. В качестве неравноценной замены использовал плагин Hotkeys.
Он позволял передвигаться по странице, вкладкам, истории, но нельзя было «бегать» по ссылкам, заголовкам.

И неожиданно наступило счастье — был найден плагин Key Binder, который, вносит в браузер многорежимный Vim-подобный подход к работе с браузером. На деле оказалось весьма удобное, многофункциональное, настраиваемое дополнение.
image


После установки плагин предлагает нам пройти маленький курс обучения на английском языке, в результате которого мы узнаем, что работа с клавиатурой ведется в 3х режимах, которые отображаются в панели:
  1. B: режим навигации и управление формами
  2. I: режим работы в текстовых полях
  3. H: режим выделения и копирования текста

B Режим навигации и управление формами

Этот режим включается по умолчанию или включается из других нажатием на Escape

Перемещение

Мы можем перемещаться по странице стандартным vim-способом: j-вниз на 10px, h-Вверх, k-влево, l-вправо. Можно до конца во все четыре стороны.

Ссылки и формы

Для перехода по ссылкам, нажатиям на кнопки и разные элементы форм есть универсальная клавиша «a» — которая выводит около всех видимых на экране активных элементов уникальные двух буквенные сочетания, напечатав которые производится действие. При этом сочетания удобны при использовании десяти пальцевого метода печати: ff, fj, fk, dk — то есть мизинцем нажимаем «a» и дальше указательными или средними пальцами добиваем команду.
image
Этот инновационный для меня подход понравился больше чем, в Опере, когда двумя клавишами мы передвигались по всем подряд ссылкам.
Для выпадающих списков — сверху нам выводятся все пункты с теми же двумя буквами
Для списков где можно выбрать несколько пунктов мы используем пробел.
image
Есть еще одна интересная возможность: Команда «A», которая позволяет переходить по ссылкам в виде текста (без тега A)

Строка адреса
image
При нажатии на «o» Открывается собственная стока адреса. Работает поиск в реальном времени. Перемещение между пунктами осуществляется с помощью Tab. Однако не хватает дополнительного поиска внутри сайта по Tab.

Поиск

Автор реализовал свой поиск по нажатию клавиш "/", "?" (Вперед и назад). Он может быть зависимым от регистра так и нет: Зависит от того используем мы его в строке. При удержании ctrl нам становиться поиск по регулярным выражениям. Нажав на Enter, мы переходим к первому найденному результату. Для перехода к следующему/предыдущему мы используем соответственно «n»/«N».

H Режим работы в текстовых полях

В этот режим можно перейти либо с помощью уже знакомой клавиши «a», либо сочетанием g+i. Мы можем перемещаться между смежными текстовыми полями двойными последовательным нажатием сочетаний клавиш ctrl-x + ctrl+; и ctrl-x + ctrl -p
Самое интересное начинается в другом — можно работать с текстом без стрелок на клавиатуре: перемещаться, копировать/удалять строки/слова/буквы различными сочетаниями клавиш.
По документации здесь есть режим поиска, но у меня он почему-то не работал…

S Режим выделения и копирования текста

После нажатия на «s», нам как и в режиме «a» выводятся сочетания клавиш ко всем абзацам и значимым элементам для быстрого перехода. Далее нажав «v» мы фиксируем первую точку для выделения текста и перемещая клавишами навигации (hjkl) мы выделяем нужный кусок. В конце у нас есть 3 варианта:
  1. «v» — сбросить выделения для новой попытки
  2. «y» — скопировать текст в буфер обмена
  3. «o» — вставить текст в собственную строку адреса

Для выхода мы нажимаем Escape

Редактирование настроек

В настройках помимо просмотра всех стандартных клавиш, разработчик предоставил возможность редактирования всех клавиш в своеобразной консоли.
Сам формат простой:
bind/ubind <режимы> <клавиша> <назначаемая команда>
Сами клавиши указываются в формате <[клавиша модифактор-] клавиша>.
Можно использовать сочетания пары клавиш.
Для ctrl используется формат <c->, для alt — <m->.
Например:
  1. bind b j [tab.scroll top:+50] говорит, что при на клавишу j в режиме перемещения мы сдвигаем окно на 50px (когда по-умолчанию всего 10).
  2. bind i <c-z> [input.undo] — назначаем на ctrl-z отмену последнего действия в режиме редактирования текста

Так же можно задавать индивидуальные настройки и горячие клавиши для страниц по url.

Оптимизация настроек

Мне стандартные клавиши показались не очень удобными, поэтому я немного их подправил и предлагаю сообществу свою настройку. Основные изменения:
  1. Сдвинул вправо клавиши перемещения на «jkl;». Несмотря на мою любовь к клавишам перемещения в vim, в бразуере мне это кажется неудобным, так как при команде «a» необходимо постоянно сдвигать руку на стандартную позицию
  2. Поместил рядом выше перемещение по табам и по истории
  3. В редактировании текста поставил привычные клавиши ctrl+c,ctrl+x,ctrl+v,(copy,cut,paste) ctrl+z,ctrl+y,ctrl+Z (undo, redo)


# Определяем свои настройки myBind
set myBind

#Сбрасываем разные стандартные клавиши
ubind bs o
ubind bs u
ubind bs h
ubind bs H
ubind bs d
ubind ib <c-c>
ubind ib <c-v>
ubind ib <c-x>

##### Передвижение по странице #####
# Я перенес команды на клавишу вправо т.е. "jkl; "
# При этом рука не будет перемещаться при
# нажатии на "a"
# При удерживании Shift мы перемещаемся до упора во все стороны
# Попутно увеличил скорость перемещения

bind b L [tab.scroll top:0]
bind b K [tab.scroll top:100%]

bind b J [tab.scroll left:0]
bind b : [tab.scroll left:100%]

bind b k [tab.scroll top:+50]
bind b l [tab.scroll top:-50]
bind b j [tab.scroll left:-50]
bind b ; [tab.scroll left:+50]

##### Передвижение при редактировании текста #####
# Так же сдвинул вправо
# Мы будем перемещаться при удерживании ctrl

bind ic <c-J> [caret.beginningOfLine]
bind ic <c-:> [caret.endOfLine]
bind ic <c-k> [caret.nextLine +1]
bind ic <c-l> [caret.nextLine -1]
bind ic <c-j> [caret.forwardChar -1]
bind ic <c-;> [caret.forwardChar +1]
bind ic <c-w> [caret.forwardWord +1]
bind ic <c-b> [caret.forwardWord -1]

##### Переход по табам #####
# Рядом клавиш выше мы можем перемещаться по табам - "o"/"i"
#

bind bs o [tab.select +1]
bind bs i [tab.select -1]


##### Перемещение по истории #####
# Также рядом выше
# u - назад
# p - вперед
bind bs u [tab.go -1]
bind bs p [tab.go +1]

##### Дубликат вкладки #####
bind bs D [tab.clone]

##### Закрыть таб #####
# и открыть закрытый (стандарт в браузере ctrl-shift-t)
bind bs c [tab.close]
bind bs C [tab.undo]

##### Строка адреса #####
# Ее переместил на h из-за табов
bind bs h [mode.change id:c putStr:"open "]
bind bs H [mode.change id:c putStr:"open <url"]

##### Режим редактирования текста #####
# В стандартом режиме горячие клавиши мне показались неудобными,
# поэтому установил привычные
# copy, cut, paste

bind ic <c-z> [input.undo]
bind ic <c-y> [input.redo]
bind ic <c-Z> [input.redo]
bind ic <c-c> [region.kill][kill.top]
bind ic <c-x> [region.kill]

# Перемещение по текстовым полям
# вместо стандартного Tab - который переходит по всем полям подряд
bind i <c-]> [input.focus next]
bind i <c-[> [input.focus previous]

###### Режим копирование теста ######
# здесь также сдвинул стандартные клавиши вправо
bind s hh [caret.beginningOfBuffer]
bind s G [caret.endOfBuffer]
bind s J [caret.beginningOfLine]
bind s : [caret.endOfLine]
bind s k [caret.nextLine +1]
bind s l [caret.nextLine -1]
bind s j [caret.forwardChar -1]
bind s ; [caret.forwardChar +1]
bind s w [caret.forwardWord +1]
bind s b [caret.forwardWord -1]

# Запоминаем настройки
set
# добавляем их в стандартный набор
kv set defaultKeyMap defaultKeyBind defaultSearch myBind


Использование плагина

После недельного тестирования были выявлены следующие особенности работы:
  1. Не работают клавиши от Gmail (я лично их почти не использую, поэтому все нормально)
  2. На форумах не работают bb-коды (то же самое)
  3. В режиме редактирования ctrl-c — работает как ctrl-x + ctrl-v
  4. Не выделяется весь тест в режиме редактирования — ctrl-a — в настройках найти не смог
  5. При нажатие F6 (переход в стоку адреса) — обратно в командный режим вернуться не получается


Заключение

Данный плагин оказался крайне приятным сюрпризом для меня (как и в свое время vim). С ним оказалось удобно работать, когда под рукой нет мыши, и иногда удобнее, когда она есть =)
P.S.: Еще был замечен интересный эффект: окружающие люди удивляются, когда видят, как серфишь в интернете без хвостатого грызуна.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.