Pull to refresh

Используем 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.: Еще был замечен интересный эффект: окружающие люди удивляются, когда видят, как серфишь в интернете без хвостатого грызуна.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.