Когда-то внес одну незначительную модификацию в клавиатуру, и мои запястья практически перестали болеть. Затем внес десятки — и забыл про дискомфорт.
Статья о том, как сделать набор текста более эргономичным, не покупая эргономичную клавиатуру .
Договоренности о терминологии и границах
В статье не буду касаться механических клавиатур и влияния переключателей (switch) на комфорт печати. Что касается терминов и англицизмов, хочу выделить три:
Стандартная клавиатура — не эргономическая, не раздельная (split), не ортолинейная «staggered» клавиатура, вроде клавиатуры макбука. В рамках статьи значение имеет только расположение клавиш, а не размер, переключатели, матрица и что-либо еще.
Слой (layer) — то, чем вы уже активно пользуетесь, нажимая shift
, cmd
или ctrl
. При зажатом shift
, ‘a‘
превращается в ‘A‘
(shift
-слой). Можно настроить, что при нажатии right cmd
+o
будет выполняться backspace
. В статье под слоем имеется в виду это, но есть и другой тип слоев — когда вы жмете комбинацию клавиш один раз (не зажимаете), и клавиатура переходит в другой режим.
Ремаппинг — добавление слоев и изменение положения клавиш (поменять местами capslook
и esc
).
Проблема — дискомфорт от клавиатуры
Боль и дискомфорт в области запястья появились спустя два года, как начал активно печатать. Наверняка причины болей различны, но кажется, в моем случае проблема была в сгибании кисти, когда тянулся мизинцем до клавиш вроде backspace
, enter
, shift
и ctrl
. Нажатия на эти клавиши приносили больше всего боли, и уверен, не только мне.
Знаю, что некоторые во имя нажатия на backspace
поднимают всю кисть, что тоже неудобно, хотя, наверное, спасает их запястья.
Описанную проблему решают эргономическими клавиатурами и/или ремаппингом клавиатуры (слоями). Слои многих пугают из-за кажущейся сложности и необходимости переучиваться, но позвольте предложить подход еще раз, ведь всё значительно проще и несет с собой неочевидные преимущества.
Давайте обо всем по порядку.
Требования к решению проблемы
-
Обратная совместимость со стандартной клавиатурой.
-
Не нужно переучиваться.
Я давно освоил классическую слепую печать, когда каждый палец всегда нажимает на одну и ту же клавишу. Использование клавиатуры превращается в «кату» — оттачивание паттернов, формирование и подкрепление мышечной памяти. Уже наработанную мышечную память терять не хотелось.
Напрашивался переход на раздельную (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
нажимать с помощью большого пальца. Тут никаких конкретных рекомендаций, каждый может ремаппить так, как ему кажется удобно.
Неожиданные плюсы ремаппинга
В конечном итоге я перемаппил практически всё, что вело к изгибу в запястье, а в результате получил избавление от дискомфорта и кое-что еще.
-
Перестал промахиваться по клавишам. Раньше проблемными были цифры и клавиши, за которые отвечает оттопыренный мизинец на неуклюже согнутой кисти:
shift
,backspace
,enter
,,
}
,esc
. -
Эксплуатация клавиатуры приносит радость. Когда можешь напечатать
+
или|
без изменения положения кисти, это приятно, особенно на контрасте с прошлым опытом. -
Можно менять стандартные клавиатуры, не адаптируясь. Небольшие изменения в положении клавиш вроде
backspace
иenter
никак не влияют, потому что эти клавиши я не использую.
Вот примеры клавиатур, на которых могу работать в течение дня, не испытывая дискомфорта при смене.
На какой бы из этих клавиатур я ни работал, легко попадаю по всем клавишам, потому что клавиши-буквы, cmd
, opt
, space
, capslook
и tab
идентичны по расположению, а на всё остальное я всё равно не нажимаю.
Ожидаемые минусы ремаппинга
Минусов несколько, но все они субъективно несущественны:
-
Некомфортно за чужим компьютером.
-
Невозможно пользоваться клавиатурой одной рукой.
-
Некоторые комбинации клавиш усложняются. Например,
cmd
+alt
+shift
+4
(скриншот участка с копированием в буффер) сложно исполнить: у меня иshift
, и4
— это комбинации других клавиш. -
При работе на разных операционных системах могут возникнуть конфликты и не всегда получается программно добиться идентичного ремаппинга — придется перепрограммировать клавиатуру или лезть в драйвера. Пример:
win
+l
на Windows блокирует экран, через какую бы программу вы не перемаппили это сочетание.
Принципы ремаппинга клавиатуры
-
Не менять привычные комбинации, на которых мышечная память уже сформирована. Я не трогал
left cmd
+c
(а так жеv
,t
,r
,a
,w
,f
), так как эти горячие клавиши уже отпечатались на подкорке. -
Не ставить слои на клавиши, которые часто нажимаются поодиночке — например,
space
, иначе будут случайные срабатывания комбинаций, которые вы не хотите. -
Не терять возможность нажать какую-то комбинацию. Если занять
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: взять готовое
Большинство 40% клавиатур имеют дефолтные слои. Например, на российском рынке легко достать Epomaker TH40. Очень хороший вариант за свою цену, писал краткий обзор.
Можно взять мои ремаппинги или RedBlue, о которых писал выше.
Подход не рекомендую, потому что цели и желания у вас и у того, кто проектировал дизайн, могут быть разными. Например, я бы не хотел перемещать руки во время печати, но дизайнеры Epomaker TH40 сделали, чтобы стрелочки появлялись в правом углу клавиатуры при зажатом fn
.
Подробнее о моем решении
Как писал выше, не рекомендую брать как есть, но можно подсмотреть идеи.
Поскольку работаю на OSX, для ремаппинга использую Karabiner-Elements.
По умолчанию Karabiner конфигурируется через json, но так получается очень громоздко. Я использую Goku, чтобы сократить размер конфига в 10 раз (с goku 176 строчек, без goku — 2k). Разобраться с синтаксисом Goku легко, особенно если есть опыт с языками семейства Lisp.
Мой текущий конфиг выглядит так: github/karabiner.edn.
Не могу сказать, что вс продуманно и выверено, есть рудименты, потому что менялось постепенно, эволюционно и еще изменится в будущем.
Чтобы понимать иллюстрацию выше, нужно вернуться к идее слоев. У меня есть 5 дополнительных слоев:
-
Синий (клавиша левее пробела).
-
Оранжевый (клавиша левее синей).
-
Красный (клавиша правее пробела).
-
Зеленый (клавиша с буквой
ж;
, специфичные команды для управления окнами и вкладками). -
Желтый (отдельный режим для манипуляции окнами, который включается через Windows Manager).
Все режимы, кроме желтого и зеленого, можно легко понять на паре примеров: красный
+q
введет символй @
, синий
+ e
— shift
.
Если зажать оранжевый
, то под правой рукой появляется 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