С сегодняшнего дня страницей с результатами поиска Яндекса можно управлять с клавиатуры. Чтобы начать пользоваться горячими клавишами, проставьте в настройках галочку в пункте «Включить клавиатурное управление». Чтобы увидеть список команд, нажмите на клавишу с вопросительным знаком, находясь на странице с выдачей.



Клавиатурное управление требует много JS-логики, поэтому мы старались держать его минимальным и добавили только то, что нужно уметь делать на каждой странице с результатами поиска. Например, мы научили её переключаться по сочетанию клавиш на следующие 10 результатов и возвращаться к предыдущим — для этого нужно нажать Alt + > или Alt + < соответственно. Теперь одной кнопкой можно вернуться и в строку поиска, чтобы переформулировать запрос — Esc или Tab.

Также доступен vim-режим, в котором навигация осуществляется не только стрелками, но и клавишами h, j, k, l. Если режим отключен, то при наборе текста курсор сразу попадает в поле ввода и на нём не нужно специально ставить фокус

В процессе работы мы долго думали над тем, каким цветом выделять активные элементы. Если менять только цвет тайтла, то такое изменение почти незаметно, и глазам тяжело следить за переключением. Рамки шумят визуально и скорее раздражают, чем говорят о выделении. В итоге мы выделяем весь блок акцентным цветом, который уже используем в поисковых подсказках и левой колонке.





Одной из сложностей было решение о том, как поступать в случае скролла при переходе на сниппет за пределами видимой части страницы. Было два варианта. Первый — делать доскролл к элементу при каждой смене активного элемента. Второй — при переходе на элемент вне текущего экрана скроллить его как можно дальше, чтобы в итоге общий объем скролла на экране был минимален.
Остановились на нём, так как он быстрее, легче для браузеров и приятней внешне.

Мы добавили к хоткеям возможность открывать страницу в фоновой вкладке, потому что это удобно. Но хотим предупредить, что современные браузеры запрещают несанкционированное открытие попапов, поэтому нужно разрешить Яндексу открывать их при появлении соответствующего предупреждения.

Будем рады, если в комментариях, вы поделитесь с нами своим впечатлениями о работе с горячими клавишами в результатах поиска.

Комментарии (57)


  1. SerCe
    13.08.2015 17:13

    А почему хоткеи выключены по умолчанию? Представьте боль пользователя, когда он будет пытаться пользоваться привычными хоткеями, сев за другой компьютер.


    1. 5hrp
      13.08.2015 17:20
      +3

      Только лишь из-за размера скриптов. Клавиатурным управлением будет пользоваться малая часть пользователей. Чтобы не грузить лишний код всем остальным, пришлось спрятать за настройку.


      1. mannaro
        13.08.2015 17:29
        +9

        А вы сделайте еще один хоткей, который будет слать аякс для включения хоткеев :D
        Типа Ctrl-Shift-H


        1. 5hrp
          13.08.2015 17:38

          Можно, конечно же. Но «поставить галочку в настройках» не сильно сложнее, чем «нажать секретный хоткей».
          Самое главное, что страдает от такого подхода – вероятность обнаружения. В случае с настройкой она неотличима от нуля.

          Если честно, это больше всего нас беспокоит в клавиатурном управлении, и мы еще думаем, что можно сделать, чтобы донести его до большего числа пользователей. Пока же хотели дать возможность пользоваться им тем, кто давно ждёт.


          1. maggg
            13.08.2015 18:00
            +4

            Идея со специальным хоткеем, включающим всю функциональность — великолепна. Часто вынужден работать на разных машинах. Каждый раз лезть в настройки — это боль.


          1. SerCe
            13.08.2015 20:58
            +1

            При наличие дополнительного хоткея никто не заставляет убирать галочку из настроек, зато геморроя пользователям в разы меньше, представьте каково это, когда каждый раз на новой машине тебе нужно лезть куда-то в настройки, а если еще и логиниться не желательно…


          1. reji
            13.08.2015 22:11
            +3

            +1 за специальный хоткей. Можно и рекламировать интересно: «Псс, парень, у нас есть секретный код! Ctrl+Shift+H»


          1. Snowly
            15.08.2015 13:49

            Лучше не хоткей, а где-то иконка, на странице поиска. Которая будет включать горячие клавиши и выводить мануал. + это одновременно будет реклама фичи пользователям. Далеко не все ковыряются в настройках.


            1. 5hrp
              15.08.2015 14:00
              +1

              Да, пожалуй, сделаем и хоткей, и иконку с хелпом / включением


      1. SerCe
        13.08.2015 17:32

        Казалось бы, несколько keydown listener'ов. Если так жалко буквально пару килобайт (картинки по дефолту в выдаче весят в разы больше), то можно было бы сделать один хоткей, который подружал бы скрипт и включал бы все хоткеи.


  1. kuber
    13.08.2015 17:32
    +2

    Надо отметить, что в Google Chrome для перехода по страницам необходимо использовать:
    ctrl + > и ctrl + < соответственно.


    1. 5hrp
      13.08.2015 17:47
      +4

      Спасибо за отзыв. Мы очень надеемся на фидбек хабра. И если большинству действительно окажется удобней ctrl, то мы признаем ошибку и поменяем модификатор.

      Скажу по секрету, что «больше/меньше» тоже работают.


      1. Tseikovets
        13.08.2015 18:49
        +2

        Если помните, до Островов вообще-то уже было CTRL+Вправо и CTRL+Влево. Также делали CTRL+Вниз для функции «Ещё десять».


      1. kuber
        13.08.2015 20:56

        Я не отзыв оставил, а факт констатировал. Запустите Chrome, зайдите на Яндекс и нажмите знак вопроса.


        1. 5hrp
          13.08.2015 21:12

          Действительно, не так вас понял.
          Модификаторы для перелистывания страниц разные для Windows/Linux (ctrl) и OS X (alt).


      1. Ohar
        14.08.2015 15:00
        +1

        Чудесная возможность, давно её ждал.
        Была мысль даже свой велосипед на GreaseMonkey, организовать, т. к. очень нравилось наличие хоткеев у Google.
        Сделано очень круто и удобно, спасибо большое.
        Но прятать в настройки — вершина неприличия. Я, постоянный пользователь яндексового поиска, узнал о факте существования настроек только из этой статьи.
        Вы беспокоитесь что функционал тяжёлый? Ну выполните какой-то быстрый замер производительности и, если она приемлемая, догрузите модуль хоткеев. Если неприемлемая — тогда полагайтесь на настройки.


  1. shelestov
    13.08.2015 17:36
    +3

    Да, Ctrl привычнее.


  1. CaptainFlint
    13.08.2015 17:47
    +2

    А когда появится возможность полностью отключить перехват клавиш? Из-за перебрасывания в поле поиска становится невозможно пользоваться оперными клавишами 1 и 2 для перехода на следующую/предыдущую вкладку. Ещё год назад писал в поддержку, пообещали передать специалистом, да только воз и ныне там.


    1. 5hrp
      13.08.2015 18:01
      -2

      К сожалению, этого в планах нет. Таких просьб очень мало, поэтому мы не можем уделить им время на проработку.


  1. andreychev
    13.08.2015 18:36

    5hrp Антон, как ведёт себя страница при установленных addons.mozilla.org/en-us/firefox/addon/vimperator (или chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb)?


    1. 5hrp
      13.08.2015 18:53
      +1

      Мы не проводили специальных тестов в рамках разработки. Но при этом просили коллег (среди которых есть пользователи этих расширений) попользоваться клавиатурным управлением до включения на всех. В частности, получали отзыв, что если не включать vim-режим, то конфликтов не наблюдается.


      1. andreychev
        13.08.2015 19:26

        5hrp :+1:


  1. Delphinum
    13.08.2015 18:42

    Почему все так активно используют эти «всеклавиатурные» комбинации вида: Ctrl + ->, Esc, Alt + Ctrl + PgDwn — вы попробуйте попользоваться браузером то сами, и сразу поймете, что у вас правая рука (для правшей) постоянно на мыши (если вы не пользуете какими нибудь vimperator), а левая на левой половине клавиатуры. Представьте теперь, что нужно постоянно открывать правую руку от мыши и тянуться ею к стрелкам или другим правосторонним клавишам, а затем обратно руку на мышь. Удобно? Комбинации должны быть в зоне досягаемости левой руки, в идеале, на «asdf».


    1. Tseikovets
      13.08.2015 18:47
      +5

      Потому, что когда вы только что ввели запрос, у вас обе руки на клавиатуре. Так что это к вам вопрос — зачем вы перенесли руку на мышку после ввода текста.

      Первую десятку поисковых результатов также можно сразу открывать с клавиатуры, так как для них прописаны горячие клавиши посредством accesskey.


      1. Delphinum
        13.08.2015 18:52
        -1

        То есть если я введу запрос и положу правую руку на мышь, а левой буду листать результаты, это неудачное решение?


        1. Tseikovets
          13.08.2015 19:11
          +4

          Это, на мой взгляд, просто странное решение. Раз уж вы всё равно решили размахивать руками и тянуться до мышки, то зачем вам вообще горячие клавиши — кликайте мышкой на графическую кнопку перехода.


          1. Delphinum
            13.08.2015 19:24

            Тоже хороший вопрос.


    1. Groove
      14.08.2015 05:46
      +2

      вспомнился пикабу (там мышка в правой, хоткеи в левой)
      image


    1. engine9
      14.08.2015 13:31
      -1

      Несколько десятков лет назад профессиональным пользователям ЭВМ приходилось совершать намного более сложные манипуляции: менять перфоленты или кассеты, наклоняться к полкам, приносить и уносить в место хранения. Профит очевиден: профилактика гиподинамии и переключение внимания, как следствие отдых. А сейчас руки с клавы на мышку передвинуть видится проблемой. И не говорите о экономии времени.


      1. Ohar
        14.08.2015 15:05

        Несколько десятков тысяч лет назад профессиональных пользователей ЭВМ не существовало. А людям приходилось совершать намного более сложные манипуляции: охотиться на мамонтов или туров, наклоняться к огню, приносить в пещеру еду и уносить мусор. Профит очевиден: профилактика гиподинамии и переключение внимания, как следствие отдых. А сейчас руки с клавы на мышку передвинуть видится проблемой. И не говорите о экономии времени.


        1. engine9
          14.08.2015 16:11

          Замечательно пошутили, именно по этой причине наш организм эволюционно не приспособлен к сидячему образу жизни и работе за компом в частности.


    1. bodqhrohro
      14.08.2015 14:17

      если вы не пользуете какими нибудь vimperator

      Или тачпадом/трекпоинтом. Для них не обязательно убирать руки с основной позиции.


    1. Ohar
      14.08.2015 15:02

      Почти не пользуюсь мышью при работе с браузером. Что я делаю не так?


  1. bodqhrohro
    14.08.2015 09:40
    -2

    Зачем это нужно? Те, кто хочет клавиатурное управление, уже давно поставили соответствующее расширение (KeySnail/VimFX/Vimium/Firemacs/Pentadactyl/Vimperator/etc) и имеют его на всех сайтах. В некоторых браузерах хинты вообще из коробки (Qupzilla, Arora, Opera Mini 4). А это баловство какое-то, типа вездесущих кнопок «Вверх». И так приходится блокировать/отключать на Google/DuckDuckGo, у вас хоть отключено по умолчанию и конфликты с вимператором проверяются — и то спасибо.


    1. 5hrp
      14.08.2015 12:29

      Два аргумента:
      – Мы продумывали клавиатурное управление в контексте поиска, делая его максимально простым и удобным. Это ведь не только таблица «Клавиши – действие», это и скролл, и выделение, и доступность элементов.
      – Поддержкой занимаемся мы, а не вы или создатель расширения. В условиях ежедневных обновлений кода серпа это немаловажно.


      1. bodqhrohro
        14.08.2015 18:02
        +1

        максимально простым и удобным
        Серьёзно? Даже быстрого перехода к произвольному результату поиска нет. Бегать по ним стрелочками — явно не лучшая идея, даже мышевозня быстрее будет.
        серпа
        Чего?


        1. 5hrp
          15.08.2015 11:04

          Все поисковые выдачи устроены так, что релевантные результаты с большой вероятностью оказываются сверху.
          К тому же не хотелось вызывать конфликтов с различными расширениями и возможностями браузеров.

          Серп = SERP = Search engine results page = Страница с результатами выдачи поиска


          1. bodqhrohro
            15.08.2015 11:41

            Ну вот допустим, вмещается на экране пять результатов поиска. Уплыл нужный результат с четвёртой позиции на третью — и пять нажатий (<Tab>jjj<Enter>) превращаются в четыре (<Tab>jj<Enter>). При том, что с хинтами это в любом случае два-три (одно на вызов хинтов и одно-два на выбор хинта). Для первого результата одинаково, т. к. на первые два-три результата хватает однобуквенных хинтов; для последующих хинты эффективнее. Тут ещё, правда, наличие фокуса в поле поиска влияет — может понадобиться на выход из него нажатие потратить ещё.


  1. kahi4
    14.08.2015 12:04

    Фидбэк. В вим-режиме не работает листание страниц по alt+H, alt+L. Mac os, safari v.8. Делает вим-режим неудобным.


    1. 5hrp
      14.08.2015 12:35
      +1

      Спасибо. Думаю, добавим (как разработчик вернётся из отпуска)


      1. kahi4
        14.08.2015 13:14
        +1

        Ну и для истинных ценителей вим-режима стоит сделать, что писать в строке поиска — это «i», а выход из этого режима по esc.


        1. Ohar
          14.08.2015 15:08

          Вы — гений.


  1. temaonline
    14.08.2015 12:38

    Возможно ди сделать горячую клавишу «Перейти к первому результату», или просто сделать кнопку по типу гугловской «I'm feeling lucky» на главной странице?


    1. Tseikovets
      14.08.2015 15:16

      К первому результату вы можете перейти по Alt+1 или Shift+Alt+1 в зависимости от браузера. К первой десятке прописаны accesskey со всеми вытекающими последствиями.


    1. Tseikovets
      14.08.2015 15:17

      К первому результату вы можете перейти по Alt+1 или Shift+Alt+1 в зависимости от браузера. К первой десятке прописаны accesskey со всеми вытекающими последствиями.


      1. temaonline
        14.08.2015 16:00

        ни одно сочетание под Яндекс-браузером не работает. В файрфоксе работает, но в новом окне.


  1. 5hrp
    14.08.2015 12:46
    +1

    Стремление к минимальному набору возможностей очень просит нас не добавлять шорткат «Открыть первый результат», когда есть Tab + Enter.
    А можете рассказать, в каких случаях (при каких запросах) полезно иметь кнопку «I'm feeling lucky» на главной?


    1. temaonline
      14.08.2015 13:31

      Есть оч.удобная утилита Alfredapp(под win аналог wox) — это что-то вроде системы макросов с быстрым запуском сайтов, программ, скриптов и пр… Там можно настроить макрос, который автоматом кидает на адрес encrypted.google.com/search?q={q}&btnI=I'm+Feeling+Lucky, где q — это строка запроса. Я регулярно ей пользуюсь, чтобы моментально попадать на первый сайт в поисковой выдаче, т.к. я точно знаю, что мне выдаст поисковик, например, по запросам «твиттер Соловьева», «github twitter bootstrap», «жж el-murid».

      Гораздо легче запомнить поисковый запрос, чем http-адрес. Это в разы ускоряет работу в целом и поиск информации в частности.


      1. bodqhrohro
        14.08.2015 14:02

        Гораздо легче запомнить поисковый запрос, чем http-адрес

        Вы гуманитарий? :) ЧПУ для чего повсеместно внедряют? Да и не-ЧПУ зачастую вполне запоминаемы и воспроизводимы.


        1. temaonline
          14.08.2015 15:36
          +3

          Богдан, гуманитарий не значит тупой, а человек — это не прокладка между монитором и стулом. Я верю, что вы все урлы храните в голове и каждое утро компилируете линуху под каждую конкретную задачу заказчика.
          ЧПУ — это из другой оперы. Не самой удачной, кстати. О ЧПУ я слышу с начала 2000-х годов, её как мантру повторяют, но только значительного удобства не видно. Лучший способ доступа к информации, которая требуется здесь и сейчас в интернете, — это поисковый запрос. За всю историю интернета ничего лучше не придумали. Большинство пользователей только запрос и запоминают. Это и логично с психологической и физиологической точки зрения, т.к. упорядоченная информация лучше всего усваивается и запоминается.


  1. Verdoga
    14.08.2015 20:13
    +1

    Идея хорошая, но для меня абсолютно бесполезная. При использовании экранного чтеца эта возможность никак не помогает, потому что этот товарищ не отслеживает никаких перемещений, кроме начала ввода текста, да и чтобы послать команду напрямую браузеру надо нажать другое сочетание клавиш. В FF у меня так и не сработала возможность перехода на следующие десять результатов поиска. В общем отключаем за бесполезностью.


    1. Tseikovets
      14.08.2015 21:20
      +2

      Ну на вас изначально эта идея и не рассчитывалась. Вам нужно сначала нажимать JAWSKey+3, а уже потом команду перехода по страницам, чтобы избавиться от её перехвата виртуальным курсором. Ну или создайте скрипты для эмуляции этих команд и назначьте на них удобные клавиатурные сочетания JAWS:

      ; Переход к следующей странице результатов Яндекс
      Script YandexNextPage ()
      TypeKey («Control+RightArrow»)
      EndScript
      ; Переход к предыдущей странице результатов Яндекс
      Script YandexPriorPage ()
      TypeKey («Control+LeftArrow»)
      EndScript

      Но вообще клавиатурное управление до конца под экранные чтецы не оптимизировано, так что пока его вам лучше не включать. Там сейчас серьёзная проблема с табуляцией, которая критична и не только для слепых.


  1. Ostan
    15.08.2015 10:31

    Нумерацию резултатов поиска верните и пунктирную рамочку вокруг только что перейдённой ссылки.


  1. phil_b
    15.08.2015 20:22
    +1

    для списка сочетаний приходиться приходить сюда, ведь "?" (по-крайней мере у меня на firefox os x) включает режим поиска по странице, аналогично cmd+f


    1. 5hrp
      15.08.2015 22:00

      Да, добавим контрол для показа справки в футер страницы


  1. x512
    30.08.2015 07:50
    +1

    У вас по Tab активность переходит к результатам поиска, однако если перейти на следующую страницу с помощью Ctrl+->, то снова становиться активной строка поиска. Неужели вы думаете, что пользователь переходит на следующую страницу результатов поиска, чтобы изменить текст запроса?


    1. Ohar
      01.09.2015 15:18

      За две недели не встретил этого косяка.
      Сначала не понял, почему.
      Потом подумал и понял — я просто ни разу не открывал вторую страницу.