Раскладка Дмитрия Ковалева @devpew
Про что эта статья
В этой статье я попытаюсь расскзаать про мою раскладку и про то, как я работаю с клавиатурой.
Для вас эта статья тоже может стать полезной, если вы хотите работать за компьютером более эффективно.
Я попробовал много раскладок и от каждой взял что-то, что понравилось лично мне. Вам она может и не подойти.
Я буду тут говорить том к чему я пришел и своей актуальной раскладке.
QMK, VIA, VIAL, ZMK
QMK и ZMK - это программное обеспечение (прошивка) с открытым исходным кодом для клавиатур. Обе этих программы обладают очень широкими возможностями. Однажды вы попробуете клавиатуру, которая работает на QMK или ZMK и после этого вы уже не захотите работать на той у которой этой возможности нет.
Эти программы обладают просто широчайшим функционалом. Очень гибкая работа с раскладками, слои, макросы, тап-дэнс, комбо, управление мышью, поддержка трекболов и тачпадов.
QMK используется для проводных клавиатур ZMK для беспроаодных. Хотя ZMK поддерживает и проводное подключение, но смысла его использовать для провода мало.
У QMK есть довольно большое преимущество это VIA и VIAL. VIA и VIAL по факту это фронт для QMK. Пользоваться которым довольно удобно. Это графическая программа в которой можно менять раскладку на лету. Без этих программ раскладку нужно сначала составлять в текстовом файле, потом компилировать и заливать на клавиатуру, что вызывает сложности у новичков.
У ZMK недавно тоже появился графический редактор раскладки, но вот прям на данный момент он настолько кривой и забагованный что пользоваться им сложно.
Но по большому счету в этом видео я буду говорить просто о раскладке. И все что я буду тут говорить можно реализовать без проблем и на QMK и на ZMK.
Русские буквы, цифры и F-ряд
Это самый первый вопрос у новичков.
Обычно люди, которые не видели раздельных клавиатур ранее удивляются тому как можно работать без цифр или без F1-F12 клавиш. Второй по популярности вопрос о том помещаются ли все буквы русского алфавита на раскладку (обычно вопросы возникают про ё и про ъ).
Давайте сначала про русские буквы - помещается все. Если, конечно, оно вам нужно.
Скажу честно, у меня в основном слое нет букв ё и ъ. Я каждый день пишу довольно много сообщений, я пишу довольно много статей в блог. И в этих статьях и сообщениях нет букв ё и ъ. Вернее они есть, но только в статьях типа этой, где я говорю о том, что их не использую. Но я и не отговариваю вас от их использования. Если вы действительно не можете прочитать слова "обьявление", "отьеду", "подьем", "видеосьемка", "адьютант", "обьединение", то вам определенно нужен твердый знак. Ну а я со своей стороны буду надеяться на то, что эти буквы уйдут к яти и ижице.
Короче, все русские буквы можно уместить в первый слой.
По поводу цифр. Цифры в первом слое не нужны. Усилия которые мы делаем для того чтобы поднять палец на две строки вверх не стоят усилия перехода во второй слой. Но лично я и сам боялся клавиатуры, у которой цифры в слое и поэтому моей первой раздельной клавиатурой была клавиатура у которой есть цифроряд. Поэтому если и вы опасаетесь то начните с клавиатуры sofle или charybdis 4-6.
Про F-ряд уж тем более. F-ряд должен быть в слое. И тоже само собой он есть.
Моя клавиатура(ы)
Сейчас двумя моими основными клавиатурами являются nijuni и charybdis 4-6
У них практически одинаковые раскладки. На мой взгляд клавиатуре вполне себе хватает 42 кнопки.
Если вы считаете, что вы не сможете жить без цифр или без F клавиш, то вы заблуждаетесь. Прям на вашей клавиатуре в данный момент есть большое число символов, которые вы вводите из слоя, но при этом вы совершенно не видите в этом проблемы. Ровно так же будет с цифрами в слоях.
Общая концепция раскладки
Самое важное что я понял - самые частоиспользуемые клавиши должны нажиматься большим пальцем. Большой палец это самый сильный, ловкий и умелый палец на руке.
В стандартных клавиатурах это гигантский недостаток, там большим пальцем мы нажимаем только пробел. Упуская всю его силу. Посмотрите на любой джойстик от PS или XBOX. Фактически такой геймпад можно сделать любым. Любого размера и любой формы. Но его делают таким образом, что большинство кнопок так нажимаются именно большими пальцами.
На смартфоне мы тоже практически всегда все делаем большими пальцами.
И только работая на обычном компьютере до большинства людей не дойдет, что нужно использовать большие пальцы. И наоборот разгрузить мизинцы, на которые уж много чего навалено. А мизинцы это самые слабые пальцы на руке.
Количество кнопок в тамб-кластере и его форма
Как мне кажется, оптимальное количество кнопок в тамб-кластере около 6
А самые частоиспользуемые клавиши, которые мы нажимаем должны быть как раз в тамб-кластере.
Самой каноничной формой считается форма corne
Это шесть клавиш, по три на каждую руку.
Мне с моей рукой как будто бы не хватает выноса тамб-кластера. То есть было бы лучше, если бы крайняя кнопка была вынесена сильнее. Например, если мы посмотрим на ряд кнопок TGB и проведем относительно него вертикальную линию, то мы увидим, что дальше этой линии вынесена только одна кнопка. Хотелось бы больше.
Если мы посмотрим на Sofle, то тут тамб-кластер вынесен немного сильнее. И мне кажется это более удобным. Хотя пять кнопок на тамб-кластере это точно перебор и крайнюю кнопку нажимать совершенно неудобно.
Все еще хуже чем в Corne в клавиатуре Lily58, тут тамб кластер будто бы совсем не вынесен.
Мне очень нравится как тамб-кластер сделан в клавиатуре Hillside. Тут он очень сильно вынесен. И кроме того, он сделан дугой, о чем подроблее расскажу чуть-чуть ниже.
Довольно удобно раскладка сделана и на charybdis 3-6 (и на tbk mini). На TBK MINI вообще идеальный тамб-кластер. Так как там и шесть кнопок и еще и расположены они по дуге. В charybdis 3-6 тоже удобный тамб-кластер, но тут к сожалению только 5 кнопок. Но это компенсируется трекболом. Трекбол - невероятно удобная вещь.
Тамб-кластер у 4-6 сначала кажется странным, но через несколько часов использования к нему привыкаешь и большинство кнопок тут нажимаются вполне удобно из-за наклона его относительно пальца
Ну и совсем шизень это тамб-кластер кинезисов, мальтронов и эргодоксов.
Форма тамб-кластера
Тамб-кластер на клавиатуре может располагаться как и параллельно стаггеру так и дугой.
Что лучше? Это зависит от того как вы смотрите на клавиатуру.
Если для вас эстетика клавиатуры на первом месте, то скорее всего вы выберете первый вариант. Такие люди обычно говорят, что невозможно расположить квадратное по кругу.
Ну а если вы как и я считаете, что эргономика на первом месте, то для вас тоже будет очевидным, что тамб-кластер в форме дуги значительно более правильный вариант. Для того чтобы понять это вы можете поставить ваши 4 пальца в "домашнее" положение на кнопки ФЫВА, а потом подвигать большим пальцем. Вы ясно увидите, что большой палец совершает дугообразное движение.
Эргономичная клавиатура - это такая клавиатура, которая повторяет строение рук. Люди которые с этим утверждением не согласны обычно делают всяческую дичь. Вроде тамб-кластеров, которые параллельны стаггеру или даже моносплиты.
КНОПКИ ДЛЯ ТАМБ КЛАСТЕРА
CTRL - самая частоиспользуемая клавиша. Ей мы копируем, вставляем, выделяем и прочее. Безусловно должна быть в наиболее доступном месте на большом пальце.
WIN - Тут уже зависит от операционной системы. В MacOS в принципе нет второй управляющей кнопки, там в принципе испльзуется CMD, в CTRL используется не так часто, поэтому не актуально. В Windows кнопка WIN тоже не особо актуальная, насколько я знаю. А вот у меня в Linux это очень актуальная клавиша. Я использую тайлинговый оконный менеджер sway (форк i3) и как раз эта кнопка используется для управления всеми окнами, которые есть на экране. Поэтому для меня это довольно актуальная тема.
Space - тут все понятно, пробел это одна из самых частонажимаемых клавиш.
Backspace - тоже довольно часто
Enter - немного реже пробела, но тоже довольно часто.
LOWER - этим обозначением обычно называют первый слой. Само собой он должен быть в тамб кластере
RAISE - этим обозначением называют второй стой. Для остальных стоев используют уже не стандартные названия, вроде "adjust", "system", "game" и так далее
Что уже не умещается
Есть и другие кнопки, которые мы нажимаем часто - Esc, Tab, смена языка,
Их бы я тоже разместил на тамб-кластере если бы мог, но у меня на тамб-кластере только пять кнопок. В итоге их приходится относить немного дальше.
Про совмещение кнопок в табм-кластере. Про ложноположительные и ложноотрицательные нажатия
У нас всего пять кнопок в тамб-кластере, но мы можем навесить на них больше.
Как это работает.
Давайте посмотрим а как вообще работают наши кнопки.
Если мы нажмем на кнопку с буквой. Например, давайте нажмем на А. После того как у нас нажалась кнопка у нас на экране сразу же появился символ. Но при этом нам нужно отпустить эту кнопку вовремя, если мы хотим чтобы символ был один. Теперь попробуйте нажать эту кнопку и не отпускать ее. Вы увидите, что напечатался символ, а после этого через примерно 200мс (пятую часть секунды) начались печататься новые буквы А. И каждый символ печатается примерно раз в 50мс. (Эти цифры зависят от операционной системы).
Обычно такое дейсвие называют тапом. То есть для того чтобы напечатать символ мы фактически должна нажать на кнопку и вовремя ее отпустить.
Но если посмотреть на управляющие клавиши, такие как CTRL, SHIFT, ALT, CMD
То окажется, что они не работают привычным для нас образом. Если на них "тапнуть", то ничего не произойдет. Он этих кнопок будет какой-то толк только если их ЗАЖАТЬ.
Так вот, чисто теотерически мы можем взять какую-то одну кнопку и сделать так чтобы при зажимании она вела себя как управляющая клавиша (например как SHIFT), а при тапе у нас печатался символ, например, пробел
Нужно понимать, что этот трюк работает не всегда хорошо. Нужно знать когда его использовать.
Если использовать не правильно, то могут случаться ложноположительные или ложноотрицательные нажатия
Ложноположительные - это когда мы не хотели нажать на кнопку, но она нажалась
Ложноотрицательные - это когда мы хотели нажать на кнопку, но она не нажалась
Почему такое происходит?
Есть такая штука, которая называется home row mods, про нее в этом блоге есть отдельная статья. Это такой трюк, когда на клавиши ASDF вешают управляющие клавиши CTRLALTSHIFTWIN. Лично я несколько раз пробовал эту раскладку, но у меня никогда не получалось ей нормально пользоваться. Как раз из-за того, что у меня происходили ложноположительные нажатия.
Если вы быстро печатаете, и набираете слово "варежка". То можно заметить, что после того как вы нажали букву "в", вы не отпуская ее уже нажимаете букву "а". Но если вы набираете очень быстро, то если у вас используется home row mode, то буква "в" у вас посчитается зажатой и QMK/ZMK будет считать, что это не тап, а зажатие. И соответственно посчитает, что вы зажали SHIFT. И вместо "ва", вы получите "А".
Но при этом этот трюк отлично работает в случае с пробелом или ентером
ТОЧКА, ЗАПЯТАЯ, ВОПРОС
Теперь немного про печать. Печатая текст мы печатаем не только буквы и цифры. Но еще и знаки. Понятное дело, что из всех знаков самым частым является пробел. Но кроме него есть еще некоторые, которые используются часто - точка, запятая и знак вопроса.
Эти символы мы используем довольно часто. При этом в раскладках они почему-то в каких-то очень странных местах.
В английской раскладке эти символы расположены в довольно удобном месте, но вот в русской раскладке это какая-то катастрофа.
Причем как мы знаем есть две русские раскладки. И идиотизм наблюдается в обеих.
В первом варианте запятая спрятана за точкой, во втором точка и запятая находятся под шестеркой и семеркой. Это просто невероятно неудобно для меня.
А больше всего бесит - когда хочешь поставить запятую, но при этом ты не уверен на каком ты сейчас языке. И тебе сначала надо узнать на каком ты языке а потом уже поставить запятую.
И вот что мне захотелось.
Мне захотелось убрать их в более удобное место. А еще мне хотелось, чтобы они были в одном и том же месте независимо от языка.
Для начала про выбор места под них.
Мне кажется, что наиболее удобное место для них опять же в тамб-кластере. У меня они находятся в правом тамбе. При этом они находятся в первом слое.
То есть на любом языке я могу набрать ,.? зажав среднюю кнопку в левом тамб-кластере и выбрав нужное в правом.
Но если посмотрите на раскладку, то увидите, что там не ,.? а KP1KP2KP3
Почему так? И что это?
KP1-3 это клавиши с нампада. (Нампад это правая часть с цифровым рядом на вот этих гигантских стопроцентных клавиатурах). Но при этом у меня ни на однои моем девайсе нет этого нампада.
Так почему тогда я использую?
Я использую эти клавиши для того чтобы переопределить их.
В линуксе это делается следующим образом
Permissions Size User Group Date Changed Name
lrwxrwxrwx - dm users 14 Jun 2022 ru -> /home/dm/projects/dotfiles/.config/xkb/symbols/ru
lrwxrwxrwx - dm users 14 Jun 2022 us -> /home/dm/projects/dotfiles/.config/xkb/symbols/us
# dm@dm: ~/.config/xkb/symbols
Мы можем в нашей домашней директории в папке ~/.config/xkb/symbols
создать два файла ru и us
В обеих этих файлах нам нужно добавить следующий код
key <KP1> { [ comma ] };
key <KP2> { [ period ] };
key <KP3> { [ question ] };
Что это дает?
Теперь у нас при нажатии KP1 операционная система будет выводить .
при нажатии KP2 операционная система будет выводить ,
при нажатии KP3 операционная система будет выводить ?
Такой подход для меня лично довольно удобный. Во-первых, я знаю, что у меня это все будет работать в любых моих линукс-подобных операционных системах (так как я обычно сразу же копирую на новую машину всю свою домашнюю директорию, которая включает эти конфиги)
Это же будет работать сразу же в ZMK и QMK.
(вроде бы можно настроить что-то похожее чез юникод в qmk и zmk. Я не знаю как это делать, но если знаете рабочий способ для точки, запятой и вопросительного знака, то подскажите)
Дублирование слоев
Я в некоторых раскладках вижу, как кнопки, которые в тамб-кластере отвечают за слои дублируются с двух сторон
Честно говоря, я никогда не понимал смысла этого действия. Кнопки на тамб-кластере это самые важные кнопки, опять же как уже говорил из-за того, что большим пальцем нажимать все значительно удобнее. А тут мы по сути сокращаем в два раза количество кнопок, которые мы можем зажимать. Хотя мы могли бы добавить сюда еще и парочку самых важных кнопок - CTRL, WIN
И при этом я так же совершенно не люблю ставить слой на клавишу backspace
Из-за того, что часто я люблю сразу же зажать бекспейс, когда хочу удалить сразу несколько слов подряд. А если я так делаю, то сразу же срабатывает модификатор.
По таким раскладкам сразу видно, что составлял их человек, который в основном пользуется стандартной клавиатурой, но по фану решил сделать свою раскладку. Жаль только людей, которые нашли ее и решили ей пользоваться.
Переключение языка
Вы видите, что у меня в тамб-кластере есть кнопка Capslock она отвечает за переключение языка
Но при этом, как я писал ранее, у меня сейчас две основные клавиатуры - nijuni и charybdis 3-6 и на чарибдисе просто физически нет этой кнопки. Именно поэтому фактически это не очень важная кнопка. Я хочу чтобы на клавиатурах была одинаковая раскладка. И вообще я мог бы даже оставить эту кнопку пустой. Но поставил сюда переключение языка. Хотя пользуюсь им редко.
Почему редко?
Потому что чаще я пользуюсь другим способом переключить язык.
QMK как и ZMK поддерживают такую штуку, которая называется "комбо". Комбо это одновременный тап двумя кнопками. И работает это довольно стабильно. В том плане, что у вас не появляется ни ложноположительных ни ложноотрицательных срабатываний.
Так вот если я нажимаю одновременно кнопки D и F то у меня всегда переключится язык на английский
А если нажимаю одновременно J и K то язык переключится на русский
Используя этот трюк мне даже не нужно смотреть какой язык используется сейчас. Я всегда знаю на что я переключусь.
Комбы
Combo - это способ объединить несколько нажатий клавиш для вывода другой клавиши. Например, вы можете нажать клавиши Q и W на клавиатуре, чтобы вывести escape.
Используя комбы можно тоже немного встрять. То есть получить либо ложноположительное либо ложноотрицательное нажатие.
Например, у нас есть комбо на Q и W и вот мы нажимаем на них одновременно.
Только вот надо учесть, что когда мы будем нажимать на них, мы будем находиться в реальном мире, а не в гипотетическом. И в реальном мире нет никакого "одновременно". Мы в любом случае не сможем нажать их одновременно, даже если очень очень постараемся, то сигнал от одной кнопки придет раньше чем от другой. И как нам понять, что сейчас было нажато комбо или Q и W по отдельности? (вернее не как нам это понять, а как прошивке это понять?)
А для того чтобы прошивка поняла прошивка смотрит какой delay (задержка) был между нажатиями на эти кнопки.
И мы можем выставить эту задержку самостоятельно. В зависимости от вашего умения быстро печатать на клавиатуре эта задержка может быть разной. Моя задержка для комбо стоит в 30мс.
Это означает примерно следующее. Если была нажата кнопка Q а потом в течение 30мс была нажата W то это будет считаться как комбо. А если задержка была больше 30мс, то у нас будет просто строка QW.
Если лично я ставлю эту задержку сильно больше 30мс (например, 100мс), то возникает ситуация, когда я, например, не хочу использовать комбо, а хочу написать слово "qwerty", но из-за того что быстро его набираю прошивка считает, что я не набирал слово "qwerty", а сделал комбо и прошивка вернет escerty
Если же я ставлю задержку сильно меньше 30мс (например 15мс) то возникает ситуация когда я хочу вызвать комбо и нажимаю одновременно Q и W но не могу вызвать esc потому что не успеваю нажать их настолько одновременно чтобы уместиться в эти 15мс. В итоге получается ситуация когда я всегда печатаю буквы, не вызывая комбо.
Мои комбы
Если вы как и я айтишник, то вы знаете, что есть символы, которые используются в нашей работе очень часто - [](){}
Эти символы мне всегда хотелось вводить так чтобы усилия на них сводились к минимуму.
И я для себя понял, что комбы это довольно классное решение, которое всегда хорошо работает.