Про клавиатуры, грязные хаки и подгорание пятой точки

Зайчатки разума

Записная книжка айтишника

Про клавиатуры, грязные хаки и подгорание пятой точки

2018-10-29 00:58:20 — Evgeniy Shumilov

Крайне редко что-то в этом мире вызывает у меня раздражение близкое к негодованию. И то, что я изложу ниже - как раз такой случай.

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

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


  Итак, клавиатура за последние 20-30 лет как явление не могла не подвергнуться некоторым эволюционным процессам, тем не менее, существует такое понятие как "классика" - 105-ти клавишная клавиатура со стандартной PC раскладкой. То, как она выглядит, знают все, возьмём это за эталон. Священные войны между ортодоксальными любителями большого (двухрядного) Enter и теми, кто нормально уживается и с двухрядным и с однорядным, оставим за рамками сегодняшнего повествования.

  Что улучшилось в клавиатурах за это время для меня лично?

Slim + островные клавиши

  Первое, что хочется отметить - slim клавиатуры с небольшим ходом клавиш и островными клавишами. Возможно, это пришло со стороны продукции apple, но совершенно не факт, идея лежала на поверхности. Клавиатуры с небольшим ходом клавиш неостровного типа использовались в ноутбуках очень давно, а так же изредка появлялись в продаже как отдельное устройство. У меня одна такая была ещё в конце 90х годов. Итак, slim - это первый плюс, чисто субъективно. По ощущениям мне такие клавиатуры нравятся больше классики, но это справедливо только в отношении плёночных клавиатур. Я знаю, что slim механика существует, но потрогать такую пока не удавалось. За счёт того, что ход клавиши меньше, текст можно набирать быстрее (по крайней мере у меня это так), а за счёт промежутков между островными клавишами позиционирование рук становится проще.

Свобода от проводов

  Второй плюс - появились беспроводные клавиатуры, которые позволяют сидеть на диване и не зависеть от длины провода. Переоценить такое сложно.

Мультимедиа

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

Кастомизируемость механики

  Четвёртый плюс - это появление множества механических клавиатур, сделанных на разных свичах, отличающихся по силе нажатия, тактильной отдаче, наличию клика и подобному. Разные типы используемых переключателей предназначены для удовлетворения различных потребностей пользователя. Существуют переключатели, рассчитанные на активные игры, на набор текста и тому подобное. Подробнее про типы переключателей можно почитать здесь. Изначально были как раз механические клавиатуры, но не было такого разнообразия типов. Сейчас же это целый мир со своими тонкостями, религиозными войнами, множеством форумов и миллионами фанатов. Интересующимся смотреть например, сюда. Помимо разных типов клавиш, существуют наборы силиконовых колец разной жёсткости для уменьшения хода клавиш, частичного демпфирования и гашения звука. Так же есть наборы пружин разной жёсткости, разной формы и состава колпачки (keycaps), специальная смазка для клавиш - рассказывать можно долго.

DIY и OpenSource

  И наконец, пятый плюс и вершина эволюционного развития клавиатур - это программируемые клавиатуры, которые позволяют каждой клавише назначить определённый функционал, задать множество слоёв (layers) и повесить на клавиши специальные макросы. Слои позволяют собрать все необходимые функции, например, графического редактора на одной половине клавиатуры, расопложенной под левой рукой, оставив таким образом правую для манипулирования мышью. Аналогичным образом можно создать раскладку под свои нужды для какой-нибудь игры. Одним из самых ярких примеров является проект ErgoDox. Есть коммерческая реализация под названием ErgoDoxEZ и есть OpenHardware/OpenSource, которая позволяет любому желающему собрать свою клавиатуру. Можно поискать в гугле изображения по слову ErgoDox, чтобы представить себе, как это выглядит. Так же есть форк данного проекта под названием ErgoDone, где в качестве базы вместо отладочной платы Teensy используется существенно более дешёвая отладочная плата Arduino Pro Micro. К сожалению, оба этих проекта плохо подходят под наши реалии - в русском языке бОльшее количество букв и не все они способны уместиться на раскладке ErgoDox/ErgoDone, поэтому некоторые буквы, кажется, это Ж, Э, Х и Ъ можно получить только сочетанием с модификатором.

  Про создание собственных клавиатур я расскажу как-нибудь в другой раз, когда дойдут руки доделать свой проект клавиатуры со своей раскладкой.

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

Врождённая инвалидность

  В текущих реалиях купив клавиатуру, особенно мультимедийную или беспроводную с тачпадом, вы вполне можете недосчитаться не только таких "ненужных" клавиш, как Ins, PrintScr (про разнообразные ScrollLock и прочие SysRq я вообще молчу - мало людей, которые знают истинное назначение этих клавиш), но и совершенно никому "архиненужных" Home, End, PgUp, PgDown! У меня волею судеб уже появилось две клавиатуры, где этих клавиш нет. На одной в принципе нет, даже через сочетания с клавишей Fn. И это не единственная проблема.

Вторая проблема и боль - функциональные клавиши.

  В этом отношении самое лучшее, что было придумано - это Logitech G15. Помимо ряда стандартных функицональных клавиш F1 - F12 у неё ещё было 18 дополнительных G1-G18 слева от основного блока, плюс 3 банка памяти, то есть фактически дополнительных функицональных клавиш было 54. 54 клавиши, Карл! Это помимо F1 - F12! на них можно было подвешивать любые функции. У меня по одной кнопке, например, менялась таблица роутинга и трафик начинал идти через другого провайдера. По другой кнопке прокидывались туннели на работу, по третьей - создавались бекапы, на несколько кнопок были подвешены различные плейлисты, на другие станции - интернет радио, запускающиеся в фоновом режиме, да и просто приложения вроде терминала, браузера, самописные гуи на gtkdialog для работы с коммутаторами и т.п.. Когда у тебя есть какая-то функциональная возможность, рано или поздно подвернётся задача, которую при помощи этой возможности решать будет удобно, ситуация сама подскажет тебе нужное средство. Когда аппаратной возможности нет, маркетинг говорит, что нам это не нужно. Плюс на борту клавиатуры был двухпортовый USB хаб, три уровня подсветки, откидной дисплей и дополнительно ко всему этому разнообразию ещё и мультимедийные клавиши! Самое удивительное - всё это прекрасно поддерживалось и работало в Linux, в том числе и дисплей. Вот умеют же, когда хотят!

  Помню, как у многих "бомбануло", когда вышел MacBook Pro, у которого вместо функицональных клавиш был расположен тачбар. Скажем так - это плевок в сторону если не всех пользователей, то как минимум, большинства программистов. Инженеры Apple решили, что функциональные клавиши не нужны вовсе, что можно обойтись и без них. Я же себе слабо представляю среду разработки, где функциональные клавиши были бы вообще незадействованы. Я например, активно ими пользуюсь в vim, tmux, в графической среде для управления окнами и для вызова различных скриптов. Оказаться в среде без функциональных клавиш - это как получить инвалидность, стать неполноценным. Скажем, будто у тебя вместо двух рук осталась одна. Я понимаю, откуда это идёт. В MacOS по умолчанию там где мы привыкли видеть функицональные клавиши, привязано управление различными функциями - громкостью, яркостью, переводом в спящий режим и т.п.. Хорошо, apple всегда шла своим путём, но эти решения как какое-то заболевание внезапно перекинулись на клавиатуры, предназначенные для PC!

  Когда-то я приобрёл Logitech K480. Прекрасная клавиатура, удобна, может по BT подключаться к трём устройствам и быстро переключаться между ними. Судя по раскладке, она предназначена как для PC, так и для MacOS, поэтому к ней эта претензия может быть отнесена лишь наполовину. По умолчанию верхний ряд клавиш работает как мультимедийные клавиши. То есть, для того, чтобы нажать, скажем, Alt+F4, вам нужно нажать Alt+Fn+F4. Аппаратного Fn Lock нет в принципе, видимо, это немодно, так сейчас не носят. То есть, материться вы будете каждый раз, когда вам понадобится сочетание, включающее функциональную клавишу. Да, решение есть, но конечно же, исключительно под Windows - скачать специальную утилиту от Logitech и переназначить клавиши. И судя по количеству вопросов на форуме Logitech, раздражает подобное обстоятельство не меня одного.

  Далее у меня появилась китайская 71-клавишная клавиатура Drevo Kalibur. В сочетании с ценой в 56 долларов, у неё нет конкурентов. Неплохая по тактильным ощущениям механика (при установке демпфирующих колец, уменьшающих ход примерно на 1мм так вообще самая приятная механика на синих свичах из всех, что я щупал), как и вышеописанная Logitech K480, умеет подключаться к трём устройствам по BT и быстро переключаться между ними, но помимо этого при подключении через microUSB может работать как обычная USB клавиатура. Ушлые китайцы явно пожалели немного abs пластика и текстолита на плату В силу компактного формата функциональные клавиши отсутствуют как класс. Точнее, они доступны через нажатие Fn+клавиша верхнего ряда. Но по умолчанию... Правильно! Они работают как мультимедийные клавиши! Да какого же растакого лешего? Клавиатура уже явно не позиционируется как клавиатура для мака. Возможности аппаратного переключения этого режима работы я не нашёл. Для линукса я сделал следующий фикс:

#!/bin/sh

fname='/sys/module/hid_apple/parameters/fnmode'
if [ -f "$fname" ]; then
    echo 2 > "$fname"
fi

Кладём это например куда-нибудь в /opt/bin/hid_apple.sh, затем добавляем правило для udev в /etc/udev/rules.d/99-bluetooth.rules:

SUBSYSTEM="input", ATTRS{name}=="DREVO KEYBOARD", MODE="0666", RUN+="/opt/bin/hid_apple.sh %p"

Ну и в текущей сессии запускаем hid_apple.sh руками через sudo. Всё, F1-F12 работает пусть и с Fn.

  Ну и напоследок апофеоз - Microsoft All-In-One multimedia keyboard. Ещё меньше, чем в отношении предыдущей клавиатруы, я бы рассчитывал на то, что кто-нибудь покупает обрезанную клавиатуру от Microsoft для работы на маке. Но да, тут тоже по умолчанию вместо функциональных клавиш всякая мультимедия. Причём xev показывает мне, что на двух клавишах продублированы XF86AudioLowerVolume и XF86AudioRaiseVolume, которые есть на двух отдельных мультимедийных клавишах, располженных сбоку. По крайней мере в убунте и дебиане так. И самое милое - на F4 привязан уход в режим сна. То есть, нажимая Alt+F4 вы не закроете окно, а отправите машину в слипмод! Гениально! Конечно же, Fn Lock нет - зачем же такие излишества? Самое прекрасное - PgUp и PgDown унесены на F11 и F12, но в тех же дебиане и убунту там обнаружилось кажется, управление яркостью. Home и End отсутствуют вообще. В принципе! То есть, никаких перемещений между вкладками браузера с клавиатуры вообще не предусматривается. Сделать как у всех сочетание нажатий Fn с курсорными клавишами - это не для Microsoft, они выше этого! То есть, Home, End - это излишество. Ничего, можно ведь всегда несколько тысяч раз нажать PgDwn, если читаете войну и мир, чтобы переместиться в конец файла. Ах да, только если вы живёте под Windows. Тогда несколько десятков миллионов раз курсорные клавиши, вам ведь некуда спешить, не правда ли? Про то, что тут отсутствует Insert и PrintSrceen тоже думаю, намекать не нужно - само собой разумеется. Зачем я такое купил? Мне нужна была именно компактная беспроводная клавиатура с тачпадом для подключения к TVBox'y (ну да, у меня на нём тоже linux), расположенному под телевизором, да и досталась она мне с юлы за тысячу рублей в идеальном состоянии. Плюс я рассчитывал, что хак, сработавший с предыдущей клавиатурой, поможет и этой. Но нет, чуда не случилось, изменение fnmode никак не влияет на ситуацию. Для решения проблем с кнопками F1-F12 я нашёл следующий хак - извлекается кейкап кнопки fn, сворачивается круглый комочек бумаги, кладётся под кейкап и защёлкивается обратно. Таким образом, кнопка Fn остаётся постоянно нажатой и верхний ряд клавиш функицонирует так, как ему и положено. Остаётся проблема с Home, End, PgUp, PgDown. Несколько часов вкуривания мануалов позволили мне использовать действительно ненужную кнопку для решения этой проблемы.

Вот CapsLock и пригодился

  В то время, как "ненужные" Home и End вместе со всеми прочими пережитками империализма и мезозоя в виде функциональных клавиш, уходят в прошлое, поистине важная и нужная сетевым истеричкам обоих полов для печати длинных заголовков клавиша CapsLock уверенно движется сквозь время и пространство и, похоже, переживёт нас с вами. Для меня всегда было загадкой, неужели кому-то нужны целые абзацы текста, набранного в верхнем регистре? И неужели так сложно держать мизинцем левой руки шифт для этих целей? Я не могу вспомнить за последние 20 лет, когда я нажимал эту клавишу осмысленно, а не промахнувшись случайно мимо шифта или таба.

  Как человек, часто и помногу использующий Vim, я познал прелесть HJLK для управления курсором. Да, поначалу заставить себя тяжело, но когда привыкаешь, это существенно экономит время - не нужно постоянно поднимать руку, переносить её на курсорные клавиши, а затем переносить обратно. Кисть остаётся в одном положении и это удобно. Основная идея заключалась в том, чтобы использовать CapsLock как модификатор, то есть, чтобы она работала как например, ещё один Alt, но с другим функционалом. Потратив несколько часов на чтение мануалов об устройстве раскладок в линуксе, я понял, что это возможно. К сожалению, реализовать сочетание Shift+CapsLock для дополнительного функционала так и не удалось. Вместо HJKL я решил сдвинуть для правой руки позицию на одну клавишу вправо, так как чаще всего указательный палец лежит на клавише J и это позволит минимизировать лишние движения и облегчить позиционирование руки. Соответственно J будет соответствовать клавише "влево", K - "вниз", L - "вверх", и : - "вправо". Аналогичным образом при смещении руки вверх UIOP будут соответственно функционировать как Home, PgDwn, PgUp и End при удерживаемой клавише CapsLock. Для бОльшей соместимости и избежания проблем в будущем клавиши 1 .. 0, - и = при удержании CapsLock будут выполнять роль функциональных клавиш F1 .. F12. Сочетания вроде Ctrl+PgDown/PgUp тоже не удалось заставить работать. Если кто-то знает, как это сделать - буду рад любой помощи.

Результат выложил на github

Установка

  Склонируйте содержимое репозитория:

git clone https://github.com/alive-corpse/esxkb.git ~/.xkb

  Добавьте это в автозагрузку вашего WindowsManager'а:

~/.xkb/bin/loadxkb hypercaps > /dev/null 2>&1

Вместо заключения

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

Теги: keyboards

comments powered by Disqus