Как небольшие изменения горячих клавиш спасли мои запястья

в 15:11, , рубрики: karabiner, боль в запястье, клавиатуры, слои, туннельный синдром, эргономичная клавиатура

Когда-то внес одну незначительную модификацию в клавиатуру, и мои запястья практически перестали болеть. Затем внес десятки — и забыл про дискомфорт.

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

Договоренности о терминологии и границах

В статье не буду касаться механических клавиатур и влияния переключателей (switch) на комфорт печати. Что касается терминов и англицизмов, хочу выделить три:

Стандартная клавиатура — не эргономическая, не раздельная (split), не ортолинейная «staggered» клавиатура, вроде клавиатуры макбука. В рамках статьи значение имеет только расположение клавиш, а не размер, переключатели, матрица и что-либо еще.

Слой (layer) — то, чем вы уже активно пользуетесь, нажимая shift, cmd или ctrl. При зажатом shift, ‘a‘ превращается в ‘A‘ (shift-слой). Можно настроить, что при нажатии right cmd+o будет выполняться backspace. В статье под слоем имеется в виду это, но есть и другой тип слоев — когда вы жмете комбинацию клавиш один раз (не зажимаете), и клавиатура переходит в другой режим.

Ремаппинг — добавление слоев и изменение положения клавиш (поменять местами capslook и esc).

Проблема — дискомфорт от клавиатуры

Боль и дискомфорт в области запястья появились спустя два года, как начал активно печатать. Наверняка причины болей различны, но кажется, в моем случае проблема была в сгибании кисти, когда тянулся мизинцем до клавиш вроде backspace, enter, shift и ctrl. Нажатия на эти клавиши приносили больше всего боли, и уверен, не только мне.

Иллюстрация из статьи Клавиатуры и Дизайн

Иллюстрация из статьи Клавиатуры и Дизайн

Знаю, что некоторые во имя нажатия на backspace поднимают всю кисть, что тоже неудобно, хотя, наверное, спасает их запястья.

Описанную проблему решают эргономическими клавиатурами и/или ремаппингом клавиатуры (слоями). Слои многих пугают из-за кажущейся сложности и необходимости переучиваться, но позвольте предложить подход еще раз, ведь всё значительно проще и несет с собой неочевидные преимущества.

Давайте обо всем по порядку.

Требования к решению проблемы

  1. Обратная совместимость со стандартной клавиатурой.

  2. Не нужно переучиваться.

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

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

— Не будет ли переход между сторонней и ноутбуковской клавиатурами вносить энтропию в части формирования мышечной памяти?
— В кафе захочется поработать или в переговорку идти — придется везде носить внешнюю клавиатуру?

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

Решение — ремаппинг

Сперва опишу в общем виде, а в конце статьи расскажу о своем решении детальнее, со ссылками на Github и картинками.

На стандартных клавиатурах есть клавиши левее и правее пробела, которые используются куда реже, чем могли бы (cmd на маке).

Например, left cmd+c делает то же самое, что right cmd+c, но наверно мало кто пользуется последним вариантом. Почему бы не переназначить right cmd+c на что-то другое, что нажимать менее удобно — например, на тот же enter?

Вот таких вот «свободных» сочетаний довольно много, они легко нажимаются без изменения положения кисти, без изгибов в запястье или поднятии руки. Используя такие сочетания, мы получаем комфорт, теряя избыточность cmd-слоев.

получаем комфорт, теряя избыточность cmd-слоев.

По принципу Парето можно сперва избавиться только от самых «болезненныx» клавиш. Для меня это left shift, right shift, enter, backspace.

Кроме того, когда какие-то клавиши используются чаще других, можно поменять их местами. Например, esc и capslook. На Windows и Linux можно поставить ctlr ближе к space, чтобы cmd+c нажимать с помощью большого пальца. Тут никаких конкретных рекомендаций, каждый может ремаппить так, как ему кажется удобно.

Неожиданные плюсы ремаппинга

В конечном итоге я перемаппил практически всё, что вело к изгибу в запястье, а в результате получил избавление от дискомфорта и кое-что еще.

  1. Перестал промахиваться по клавишам. Раньше проблемными были цифры и клавиши, за которые отвечает оттопыренный мизинец на неуклюже согнутой кисти: shift, backspace, enter, , }, esc.

  2. Эксплуатация клавиатуры приносит радость. Когда можешь напечатать + или | без изменения положения кисти, это приятно, особенно на контрасте с прошлым опытом.

  3. Можно менять стандартные клавиатуры, не адаптируясь. Небольшие изменения в положении клавиш вроде backspace и enter никак не влияют, потому что эти клавиши я не использую.

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

Как небольшие изменения горячих клавиш спасли мои запястья - 2

На какой бы из этих клавиатур я ни работал, легко попадаю по всем клавишам, потому что клавиши-буквы, cmd, opt, space, capslook и tab идентичны по расположению, а на всё остальное я всё равно не нажимаю.

Ожидаемые минусы ремаппинга

Минусов несколько, но все они субъективно несущественны:

  1. Некомфортно за чужим компьютером.

  2. Невозможно пользоваться клавиатурой одной рукой.

  3. Некоторые комбинации клавиш усложняются. Например, cmd+alt+shift+4 (скриншот участка с копированием в буффер) сложно исполнить: у меня и shift, и 4 — это комбинации других клавиш.

  4. При работе на разных операционных системах могут возникнуть конфликты и не всегда получается программно добиться идентичного ремаппинга — придется перепрограммировать клавиатуру или лезть в драйвера. Пример: win + l на Windows блокирует экран, через какую бы программу вы не перемаппили это сочетание.

Принципы ремаппинга клавиатуры

  1. Не менять привычные комбинации, на которых мышечная память уже сформирована. Я не трогал left cmd + c (а так же v, t, r, a, w, f), так как эти горячие клавиши уже отпечатались на подкорке.

  2. Не ставить слои на клавиши, которые часто нажимаются поодиночке — например, space, иначе будут случайные срабатывания комбинаций, которые вы не хотите.

  3. Не терять возможность нажать какую-то комбинацию. Если занять left cmd+o и right cmd+o, то потеряется возможность нажать cmd+o. Я допустил эту ошибку, у меня оба сочетания заняты ] и backspace соответственно.

Подходы к реммапингу

Мне известно три.

Подход 1: постепенно менять то, что болит

Я шел этой дорогой. Больнее всего было тянуться мизинцем до backspace, enter и shift, поэтому сперва заменил только их.

Далее заметил, что esc нужен в тысячу раз чаще, чем capslook, и поменял их местами.

Затем сделал, чтобы при нажатии right cmd стрелочками становились hjkl (это было привычно, потому что hjkl работают как стрелочки в виме, которым уже пользовался).

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

Подход 2: спроектировать все разом

Нужно много чего учесть и понимать, что сперва будет очень больно — и во время самого ремаппинга, и во время переучивания, особенно если тут же дополнительно перейти на другую раскладку (вроде Colemak).

Так сделал, например, мой приятель: одновременно перешел на раскладку Halmak и добавил два новых слоя, которые назвал RED и BLUE. Вот его проект с ремаппингами для Линукс RedBlue.

Как небольшие изменения горячих клавиш спасли мои запястья - 3

А вот видео с презентацией и объяснениями:

Подход 3: взять готовое

Большинство 40% клавиатур имеют дефолтные слои. Например, на российском рынке легко достать Epomaker TH40. Очень хороший вариант за свою цену, писал краткий обзор.

Можно взять мои ремаппинги или RedBlue, о которых писал выше.

Подход не рекомендую, потому что цели и желания у вас и у того, кто проектировал дизайн, могут быть разными. Например, я бы не хотел перемещать руки во время печати, но дизайнеры Epomaker TH40 сделали, чтобы стрелочки появлялись в правом углу клавиатуры при зажатом fn.

Подробнее о моем решении

Как писал выше, не рекомендую брать как есть, но можно подсмотреть идеи.

Поскольку работаю на OSX, для ремаппинга использую Karabiner-Elements.

По умолчанию Karabiner конфигурируется через json, но так получается очень громоздко. Я использую Goku, чтобы сократить размер конфига в 10 раз (с goku 176 строчек, без goku — 2k). Разобраться с синтаксисом Goku легко, особенно если есть опыт с языками семейства Lisp.

Мой текущий конфиг выглядит так: github/karabiner.edn.

Как небольшие изменения горячих клавиш спасли мои запястья - 4

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

Чтобы понимать иллюстрацию выше, нужно вернуться к идее слоев. У меня есть 5 дополнительных слоев:

  • Синий (клавиша левее пробела).

  • Оранжевый (клавиша левее синей).

  • Красный (клавиша правее пробела).

  • Зеленый (клавиша с буквой ж;, специфичные команды для управления окнами и вкладками).

  • Желтый (отдельный режим для манипуляции окнами, который включается через Windows Manager).

Все режимы, кроме желтого и зеленого, можно легко понять на паре примеров: красный+q введет символй @, синий+ eshift.

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

Зеленый+q введет сочетание клавиш cmd+1 — кстати очень обрадовался, когда додумался до идеи, что можно ремаппить две клавиши на другие две.

Вы, наверное, знакомы с комбинациями клавиш:left arrow+alt+shift и left arrow+alt, которые позволяют прыгать курсором по слову с выделением и без соответственно. В моем конфиге эти же комбинации работают, если вместо left arrow использовать красный+h. То же самое с right, up, down.

Кроме того, добился по мере необходимости, чтобы все команды были идентичны во всех программах. Например, красный+> перейдет на таб правее как в браузере, так и в Intellij Idea, терминале и неовиме. Об этом подробнее писал статью OSX: консистентные горячие клавиши (там все актуально, разве что отказался от Yabai tiling VM и начал использовать Goku).

Желтый слой и Windows Manager

Чтобы понять желтый слой, придется ознакомиться с функциональностью tiling window manager Aerospace, которым я заменил Yabai. Последний требует выключать system integrity protection для получения всех фич и настраивается — на мой взгляд — менее удобно.

Желтый слой работает так: когда я нажму Зеленый+s — включается WM-слой, пока я снова не нажму то же сочетание, чтобы выключить его. При активном желтом слое можно «джойнить» окна, «прыгать» по рабочим столам, кидать по ним окнам программ.

Пример манипуляции окнами без мыши:

Детальнее описывать не вижу смысла: конфигурацию Aerospace можно глянуть у меня на гитхабе, а все возможности — в гайде проекта. Из интересного, чего нет в официальных примерах: горячие клавиши на изменение размеров и позиции floating window (есть в конце видео выше). Работает оно через вызов bash-скриптов, которые лежат рядом с aerospace.toml.

Заметка про Windows

Выше показал пример конфигурации на OSX и Linux (в разделе про подходы). Сам время от времени пользуюсь Windows, и там живу с Microsoft PowerToys, через которую заремаппил все точно так же, как с OSX. Единственное, не смог настроить слой с нампадом из-за конфликтов с системными хоткеями клавиши Win.

Заключение

Путь в тысячу ли начинается с первого шага.

Если вы испытываете дискомфорт при работе с клавиатурой и не хотите переходить на эргономичную клавиатуру, попробуйте начать с малого — перенесите всего одну клавишу backspace на right cmd+o.

Это очень легкий эксперимент, простой первый шаг, который может принести много комфорта в будущем.

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

Автор: arturdumchev

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js