Я большой поклонник detect.js. Это супер-крутая и настраиваемая среда для создания презентаций. И обычно я использую его для всех своих разговоров. Недавно я приобрел Logitech Spotlight (спасибо HolyJS) - высококлассный ведущий, который может делать много крутых вещей, выделять, увеличивать, вибрировать 😲. Но оказалось, что нельзя… переключать слайды в Show.js.

В чем проблема?

В Reveal.js есть классная функция - вы можете создавать двухмерные слайды, в которых ваш доклад разделен на главы с вложенными слайдами.

Вы можете перемещаться по слайдам с помощью стрелок (или клавиш h, j, k, l, но это не так удобно). Проблема в том, что Logitech Spotlight отправляет код клавиши 39 (стрелка вправо), когда вы нажимаете большую кнопку. Вместо перехода к следующему слайду он переходит к следующей главе. Какой облом 😕. Но как исправить эту проблему?

Переназначьте ключи в программном обеспечении для презентаций

Хотя у него много интересных функций, вы не можете этого сделать. Также можно попробовать сделать это в Системе, но похоже Mac OS не позволяет этого сделать. Я видел несколько сообщений о Karabiner, но не думаю, что он может сделать это для отдельного устройства.

Доработать Show.js

Похоже, лучшее решение, просто переназначьте ключи, особенно потому, что для этого есть API:

Reveal.configure({
  keyboard: {
     39: 'next', // Right Arrow
     37: 'prev'  // Left Arrow
  }
});

Но… Как же тогда перемещаться по слайдам? 🤔 Да, вы можете использовать h, j, k, l (по умолчанию) или любые другие кнопки, но это просто неудобно. Стрелки - самый удобный и интуитивно понятный способ навигации. Так что, если мы не можем использовать стрелки, было бы очень хорошо использовать, например, ALT + ARROWS. Хорошо, давайте еще раз посмотрим на API, может быть, мы можем использовать пользовательские функции?

Reveal.configure({
  keyboard: {
     39: function(event) {
        if(event.altKey) {
           Reveal.navigateRight();
        } else {
           Reveal.nextSlide();
        }
   }
});

Выглядит неплохо, но по какой-то причине это не сработало. 😔. И после некоторых исследований я понимаю, почему (код detect.js):

/**
 * Handler for the document level 'keydown' event.
 *
 * @param {object} event
 */
function onDocumentKeyDown( event ) {
  //...
   if( activeElementIsCE || activeElementIsInput || activeElementIsNotes || (event.shiftKey && event.keyCode !== 32) || event.altKey || event.ctrlKey || event.metaKey ) return;
  //...

Таким образом, вы не можете использовать модификаторы клавиатуры в раскрытии ... Но мы можем написать наш собственный плагин!

Решение

После всех этих исследований у меня не было выбора, кроме как написать собственный плагин. Он очень маленький, но, по крайней мере, мне не нужно писать этот код снова и снова. Https://github.com/bunopus/reveal-alt-arrows

Надеюсь, эта статья и плагин помогут тем, кто столкнулся с такой же проблемой. Если знаете решение получше - дайте знать!