- PVSM.RU - https://www.pvsm.ru -

Самодельная эргономичная клавиатура CatBoard ][

CatBoard — это самодельная эргономичная компактная клавиатура с открытым исходным кодом, имеет множество нестандартных решений, таких как: нестандартная аппаратная раскладка со стандартными клавиатурными сочетаниями; быстрый автоповтор нажатой клавиши; Fn слой с клавишами управления курсором, цифровым блоком, функциональными клавишами; отдельные клавиши переключения раскладок; более удобное расположение Ctrl и Shift; отдельную кнопку AltTab; режим совместимости с Macintosh, позволяющий работать на нём точно так же, как и на PC; возможность прошивки без дополнительного оборудования; возможность устанавливать поверх ноутбучной клавиатуры. Благодаря открытому коду, с клавиатурой можно делать что угодно, новая прошивка заливается в считанные секунды, поэтому экспериментировать можно прямо на ходу.

Длинная историческая часть

Всё началось ещё в 2005 году, когда я захотел работать за действительно эргономичной клавиатурой, но не готов был заказывать из заграницы дорогую клавиатуру. Решил разработать клавиатуру самостоятельно, ведь чего проще, купить кнопки, взять контроллер из любой дешёвой клавиатуры, и просто подключить кнопки точно так же, как это сделано в этой клавиатуре. Мне в то время очень понравилась клавиатура Kinesis Advantage [1], практически идеал, но подумал, что стоит начать изготовление с плоской клавиатуры, навроде Maltron Flat [2].

Клавиатура Maltron Flat

Печатать вслепую я тогда уже умел, научился благодаря клавиатурному тренажёру Stamina. До этого пробовал научиться в Solo, но он настолько меня достал, что я так и не доучился, прошёл все упражнения, но печатать вслепую так и не стал. А вот в Stamina учиться было легко, и когда скорость печати достигла уровня в 200 символов в минуту, я смог начать работать не глядя на клавиатуру. Учился печатать сразу и русский и английский текст, по очереди проходил упражнения, благодаря этому сразу смог полноценно начать работать слепым методом. Переставлял кнопки на своей клавиатуре, тем самым тролля коллег, было интересно даже придумывать разные надписи на клавиатуре, ведь колпачки у кнопок разные на разных рядах, поэтому приходилось переставлять их только на свой же ряд, и желательно было не трогать fj, на которых были засечки (а они важны при слепой печати, чтобы можно было ставить руки в стартовую позицию печати не глядя).

Клавиатурный тренажёр Стамина

Прежде чем что-нибудь делать, нашёл одну московскую фирму, в которой купил кнопки Cherry MX Black с запасом, и программируемую клавиатуру для торговых терминалов KBM-105 для экспериментов (индекс 105 это количество кнопок, матрица 15x7). Нарисовав схему расположения кнопок, стал думать как мне в домашних условиях сделать корпус. Из подручных материалов собирал разные конструкции, которые сейчас и показать то стыдно, в общем ничего не получалось, было и криво, и хлипко. Работа по изготовлению корпуса застопорилась, зато на программируемой KBM-105 стал экспериментировать с раскладками.

Программируемая клавиатура KBM-105

В то время производилась очень уж необычная клавиатура NSK 535, всё в ней было революционно, и алфавитная раскладка, и шифты на больших пальцах. Глядя на такое чудо, решил даже пробовал печатать именно с такими шифтами, но показалось очень уж революционным, и вернул шифты обратно на мизинцы, благо, что прошивать клавиатуру KBM-105 очень быстро, можно по несколько раз на дню менять расположение кнопок.

Клавиатура NSK 535 R

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

Для быстрого освоения новых раскладок на программируеймой клавиатуре даже написал онлайн клавиатурный тренажёр Klavarog (http://klava.org/ [3]), чтобы можно было работать с любого компьютера, подключённого к интернету, не устанавливая никаких программ, сейчас все стали так делать, а в то время онлайн тренажёры если и были, то только на Flash, и они не работали в линуксе с русскими буквами. Сначала это был очень простой тренажёр, не было даже подсказки о нажимаемых клавишах, только лишь картинка клавиатуры. Хотя до сих пор он остаётся самым простым тренажёром, при этом очень эффективным, ведь он делался для себя. Новичкам предлагается режим, позволяющий буквально за день освоить расположение всех букв, не нужно тратить неделю или две на прохождение уроков, которые добавляют по одной изучаемой кнопке, как это делается почти во всех тренажёрах.

Клавиатурный тренажёр Klavarog

В какой-то момент времени решил что буду разрабатывать новую клавиатуру, и проект будет открытым. Создал Wiki сайт http://kbd.klava.org/ [4], где стал собирать информацию о разных клавиатурах, и стал искать любую информацию по разработке клавиатуры, ведь для моей клавиатуры уже нужно было делать и свой контроллер, стандартный уже не подходил. Оказалось, что я вообще ничего не знал об изготовлении клавиатур.

Произошло ещё то, что я уволился из офиса и стал работать дома, да ещё и на ноутбуке, матричная программируемая клавиатура использовалась всё реже. Со временем уже и пыл пропал, обычные заботы и дела отодвинули на задний план разработку клавиатуры. Но идея была слижком уж навязчивой, и я начал потихоньку думать, как можно переделать клавиатуру в ноутбуке, ведь физически переделать её было невозможно, поэтому в ход пошли программные средства. Сначала я перенёс клавиши управления курсором на основной алфавитный блок, если зажать AltGr (правый Alt), то некоторые буквы становились стрелками, поначалу это были VIM-овские кнопки hjkl, потом сделал более привычное и удобное ijkl, получилось так, что при зажатом AltGr стрелки как будто сами прыгают под пальцы. Потом разместил клавишу Ctrl слева от пробела, сместив Alt влево на одну клавишу, это оказалось очень удачным решением [5]. Под это дело даже научился работать в Emacs, оказывается на древних клавиатурах Ctrl располагался на месте современного Caps Lock, понятно, почему мне раньше не понравился этот редактор, это из-за неудобного расположения Ctrl. Нужно учесть, это всё касается только слепого набора, при печати двумя пальцами расположение клавиш не имеет большого значения, дело лишь в привычке.

Доработанная раскладка клавиатуры ноутбука

В одно время получилось так, что не было работы, и я решил сменить ненавистную раскладку QWERTY (как же у меня от неё болели мизинцы при обучении слепой печати) на более эргономичную Dvorak, и с помощью своего тренажёра стал изучать его. Как раз в это время сделал специальный режим в Klavarog, в котором предлагается набирать одно короткое слово много раз подряд, сначала медленно, потом уже быстро, вбивая новую раскладку в свою память, очень эффективно. Занимался уже где-то неделю, дело шло туго, скорость росла очень медленно, при этом почему-то разучился работать в QWERTY, у других такой проблемы не было, но я испугался, вдруг надо будет что-то срочное делать, а я разучился печатать, а в Dvorak ещё не научился. И вот в этот момент безвременья мне попадается на глаза мой старый компьютер БК-0010/01, в котором была фонетическая раскладка JCUKEN, в ней латинские буквы расположены там же, где и схожие по звучанию русские в стандартной раскладке ЙЦУКЕН. Ностальгия по временам БК настолько захлестнула, что я решил сделать себе эту раскладку, и попробовать изучить её. Сделать один в один не получилось, некоторые часто встречаемые буквы были очень не удачно расположены, и я в итоге довольно сильно поменял её [6], и у меня есть веские причины на перестановку каждой клавиши. Но в общем она всё равно осталась фонетической, и по большей части совпадающей со старой. Сделав раскладку и прошив её в свою операционную систему (я в это время уже начал работать в Ubuntu Linux), я начал изучать её в тренажёре. И тут произошло чудо, процесс пошёл настолько быстро, что я довёл скорость печати до 200 символов в минуту (опять эти 200) за пять дней, и начал работать уже в новой раскладке.

Клавиатура советского компьютера БК 0010-01

Доработанная раскладка JCUKEN

Теперь меня устраивало всё, кроме расположения клавиш, и не устраивал длинный пробел, хотя на ноутбуке он и короче, чем на обычных клавиатурах, за счёт дополнительных клавиш на нижнем ряду. Пришла пора делать клавиатуру, только она должна стать компактной, чтобы её можно было ставить поверх ноутбучной клавиатуры, и как можно меньшей по высоте. Так как клавиатура должна располагаться поверх ноутбучной, а на моём Thinkpad прямо в середине клавиатуры есть тачпоинт, который выше уровня всех кнопок, то решил сделать на нижней части корпуса клавиатуры отверстие, сначала оно было круглым, потом просто так добавил кошачьи уши. С этого момента моя клавиатура стала называться CatBoard =^.^=

Корпус решил сделать из алюминия, и стал искать производство, где бы мне могли вырезать лазером отверстия под кнопки, и контур корпуса. Никто не хочет связываться с мелкими заказами, большинство честно пишут о сумме минимального заказа, некоторые об этом говорят лишь после заказа. Для резки алюминия нужен довольно мощный лазер, найти такой не просто, поэтому решил делать корпус из листового пластика или оргстекла. И тут, благодаря Хабру, нашёл упоминание о первом открвышемся в России фаблабе. Связался с заведующим лаборатории FabLab77 [7], встретились, я рассказал о своём проекте, и получил доступ к оборудованию, с помощью которого можно делать что угодно, открылись безграничные возможности. Тут ещё повезло тем, что в это время приезжали американцы из MIT, и провели недельный семинар, на котором научили работать со всем их оборудованием, использовался только открытый софт.

Последний день семинара MIT в FabLab77

В поисках эргономичного расположения кнопок я изготовил множество макетов из фанеры, на которых нашёл самое лучшее расположение, и оно оказалось почти таким же, как и в клавиатурах Truly Ergonomic [8] и ErgoDox [9] (о её существовании я тогда ещё не знал). Ну это и не удивительно, руки у людей ведь почти одинаковые.

После того, как корпус был готов, а расположение кнопок меня полностью устраивало, я стал изучать, как же мне сделать контроллер. Одновременно стал собирать домашнюю мини лаболаторию для пайки. Купил паяльник с регулировкой мощности, собрал ящик, в котором разместил Dremel 300 с приставкой, превращающей его в небольшой сверлильный станок — Dremel Workstation 220. В этом ящике сделал откидывающуюся крышку, на которой можно работать. Теперь ящик всегда стоит под столом, на занимая место в квартире, а когда нужно что-то сделать, достаю и ставлю его на стол.

Сначала контроллер решил собрать сам, заодно собрав и программатор, в фаблабе на фрезеровочном станке Modela изготовил печатные платы, спаял их, но ничего так и не заработало, так как работающий программатор был только в фаблабе, покупать новый не хотелось, а возиться с платами мог только дома. Узнал что существуют микроконтроллеры с аппаратной реализацией USB протокола, дальнейший поиск навёл меня на уже готовые контроллеры, такие как Teensy, и аналогичные наши разработки от Microsin [10], у которого и приобрёл AVR-USB162.

Провода решил припавивать не напряму к контроллеру, а через разъем, который установил внутри корпуса. Съездив ещё раз в фаблаб, вырезал лазером корпус, который решил сделать не с закругленными краями, обведя прямыми линиями блоки с кнопками получил текущий дизайн клавиатуры. Контроллер разместил прямо сверху корпуса, держится он на винте с гайкой, и подложенными шайбами, а разъём не даёт плате крутиться. Чтобы провод не упирался в экран ноутбука, расположил контроллер ближе к середине клавиатуры. А вот как бывает, когда об этой проблеме не подумали:

Ричард Столлман и его ноутбук OLPC с клавиатурой HHKB

При разработке схемы понял, что кнопки нужно подключать через диоды, чтобы не было ситуации, когда при нажатии нескольких кнопок в разных рядах и столбцах контроллер начинал думать, что нажата кнопка с пересекающихся рядов. Это всем известно, но я тогда об этом не знал. В кнопках Cherry MX есть пустое место, в которое можно установить либо диод, либо светодиод. Чтобы не припаивать диоды снаружи, в каждую кнопку установил по маленькому диоду КД522Б, правда напутал полярность, у них оказывается расположение метки не унифицировано, нужно обязательно глядеть в справочнике, где анод, а где катод, поэтому при подключении кнопок к контроллеру учёл свою ошибку.

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

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

Клавиатура CatBoard поверх ноутбука ASUS EEE PC 701

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

При этом главное моё требование — использованию поверх ноутбучной клавиатуры, моя новая клавиатура выполняла, она разместится даже на самом маленьком нетбуке — ASUS EEE PC 701, у которого экран диагональю всего 7 дюймов, как это видно на фотографии чуть выше. Я на этом нетбуке хоть и не работаю, но вполне возможно, что начну теперь использовать, где-нибудь в дороге, ведь теперь не нужно пользоваться его маленькой клавиатуркой, когда приходится пальцы сжимать вместе, чтобы разместить их на маленьких клавишах.

Первоначально стояли плоские колпачки с прозрачной крышкой, купленные ещё вместе с программируемой клавиатурой, позже поставил чёрные колпачки от WASD Keyboards [11], когда сделал заказ на новые кнопки, на сей раз уже Cherry MX Blue (с кликом) и Cherry MX Red (как и чёрные без клика, но более мягкие).

Вторую клавиатуру решил собирать из-за туговатых Cherry MX Black, у них усилие нажатие более 60 грамм, у синих и красных от 45 грамм. Нажимать их ещё было нормально, а вот удерживать в нажатом состоянии, что в связи с наличием Fn слоя требуется часто, уже не получается, палец устаёт.

К изготовлению CatBoard ][ присоединился коллега suenot [12], с которым познакомились на встрече Клавогонщиков [13], и один экземпляр попросили сделать для фаблаба. Поэтому вместо пайки проводами решил сделать печатные платы, на каждую клавиатуру по две штуки, на краю платы устанавливается разъём, в который вставляется контроллер, соединяя обе платы, правда из-за нехватка портов пришлось соединять платы пятью проводами.

Евгений собирает свою белую CatBoard ][

Фрезеровать такие большие платы очень долго, решил их протравить. Обычно подготавливают к травлению с помощью фоторезиста или ЛУТ, я же решил сделать с помощью лазера, наклеил виниловую самоклеющуюся плёнку к фольге платы, лазером вырезал плёнку по контуру дорожек, снял лишнюю, и травил в растворе персульфата аммония. Платы были из геттинакса, и моей ошибкой было резать их ножницами по металлу, они довольно хрупкие, в одном месте отломился кусок вместе с дорожкой. Сверлил уже дома дремелем, не хотелось возиться с фрезеровкой.

Травление платы

Просверленная плата

Использование 1,5 мм оргстекла вместе с 3 мм цветным пластиком позволило сделать корпус клавиатуры чуть тоньше, чем в первой клавиатуре, сделанной только из 3 мм листов, из-за чего пришлось фрезеровать выступы под защёлки кнопок. Контроллер взял другой модели, более компактный (AVR-USB162MU). Установил два светодиода, синий и красный, которые показывают текущую раскладку клавиатуры.

Вид снизу

Скрепляются слои клавиатуры резьбовыми заклёпками М3 с насечкой [14] и винтами с потайной головкой. Вместо резьбовых заклёпок можно взять более доступные вытяжные, выбить из них гвоздь, и нарезать внутри резьбу М3.

CatBoard ][

Возможности клавиатуры CatBoard

Самое главное, это Fn слой, тот, который работает при зажатой кнопке Fn под правым большим пальцем. Его наличие позволило сделать клавиатуру очень компактной, и при этом полнофункциональной. Аналогичное я делал и на обычной клавиатуре, перенастроив операционную систему, правда не во всех программах это работало, таких как Skype и Sublime Text. Сейчас же мало того, что стало работать с Fn слоем удобнее, за счёт правильного расположения кнопки Fn, так ещё и работает абсолютно во всех программах, да хоть даже в BIOS-е, ведь при зажатой Fn клавиатура отправляет совсем другие коды клавиш, вместо ijkl отправляется нажатие стрелок, uo это Home и End, p; это Page Up и Page Down, h — Enter, nm — Backspace и Delete, , — Insert. Весь цифровой ряд становится функциональным, т.е. Fn+1 это F1, Fn+0 это F10, ну и Fn+-= это F11 и F12.

Пробел давно уже жму только правой рукой, поэтому было решено использовать левый пробел в качестве шифта. Это оказалось очень удобным, ведь его можно удерживать и при печати той же рукой, не нужно чередовать мизинцы, буква слева — правый мизинец, буква справа — левый мизинец. С таким шифтом и Caps Lock не нужен, держи его нажатым, и печатай сколько угодно времени.

На место освободившихся шифтов повесил функцию переключения языка, слева — РУС, справа — ЛАТ, точно так же, как на старых советских компьютерах. При этом оставил на этих кнопках функцию шифтов, если нажать быстро однократно, то произойдёт включение нужной раскладки, а в остальных случаях это шифты, и в некоторых определённых может быть даже Ctrl.

Левее кнопки Tab разместил отдельную кнопку AltTab, при её нажатии происходит нажатие Alt, отправка нажатия и отпускания Tab, и удерживание Alt. Чтобы переключиться на следующие окна, достаточно нажать рядом расположенную обычную Tab, очень удобно. Однако если же эту новую кнопку нажать при нажатых Alt или Ctrl, то она будет работать как обычная Tab.

Ctrl и Alt теперь жмутся к пробелу, причём Ctrl ближе к нему. Благодаря отдельным кнопкам для включения раскладок, и отдельной кнопке AltTab, я почти перестал пользоваться кнопками Alt.

Есть фиксируемый режим, вызываемый по Fn+AltGr, в котором на правой половине клавиатуры появляется цифровой блок, а на левой тот же блок со стрелками.

Давно уже мечтал попробовать быстрый автоповтор нажатой клавиши, о котором писал давным давно Джеф Раскин. Но я сделал даже лучше, для его работы требуется не тройное нажатие клавиши, а двойное, и работает это благодаря не фиксированному времени, а автоподстройке под пользователя. Чем быстрее происходит двойное нажатие кнопки с последующим удержанием, тем быстрее начнётся и будет происходить автоповтор нажатия клавиши. При этом ложные срабатывания бывают очень редко, и не зависят от скорости работы пользователя. Тесты показывают, что этот автоповтор быстрее обычного в два раза. При этом я к нему так быстро привык, что обычным перестал пользоваться, он мне кажется слишком уж медленным, медленно начинается, медленно работает, хотя конечно второй параметр можно легко настроить, а вот первый не получится, иначе при обычной печати будут ложные срабатывания. Единственный минус, турбо-автоповтор не работает в играх, где вообще автоповтор не нужен, а нужна просто нажатая клавиша, поэтому для таких случаев я сделал его отключаемым по Fn+Esc.

На месте русской буквы Е разместил букву Ё, которая будет набрана при зажатой Fn. Теперь всегда печатаю Ё, до неё ведь не нужно теперь тянуться. К тому же и ~ в английской раскладке таким образом оказалось удобнее набирать.

Так как печатаю не в QWERTY, а в JCUKEN, и есть отдельные кнопки для переключения языков, то сделал свою нестандартную раскладку аппаратной, и благодаря этому появилась возможность сделать то, чего никто не догадался сделать до меня, а именно — клавиатурные сочетания от QWERTY. Ведь чтобы оставить удобные Ctrl+XCV, сделали раскладку Colemak, а мне достаются не только клавиатурные сочетания для работы с буфером обмена, но и все остальные. Ведь я в своей JCUKEN разместил V на месте W только потому, что Ctrl+W была очень не удобной, и зачастую нажимал её случайно, что приводило к неприятным последствиям. Теперь же возвращаюсь обратно на FYWA, и это стало возможным как раз из-за стандартных клавиатурных сочетаний.

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

Часто нужно отлучиться от компьютера, но так как моя клавиатура не позволяет закрыть ноутбук, не убрав её, то сделал функцию блокировки клавиатуры. Нажав Fn+RShift, клавиатура отключает светодиоды, перестаёт принимать любые нажатия, кроме этой же комбинации, и отправляет в компьютер нажатие Win+L, комбинацию, которая блокирует операционную систему паролем, чтобы в ваше остсутствие чужой человек не мог воспользоваться вашим компьютером.

Автор: ibnteo

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy/37982

Ссылки в тексте:

[1] Kinesis Advantage: http://www.kinesis-ergo.com/contoured.htm

[2] Maltron Flat: http://maltron.com/keyboard-info/maltron-dual-hand-flat-2d-keyboard

[3] http://klava.org/: http://klava.org/

[4] http://kbd.klava.org/: http://kbd.klava.org/

[5] удачным решением: http://ibnteo.klava.org/keyboard/arrow2

[6] сильно поменял её: http://ibnteo.klava.org/keyboard/jcuken

[7] FabLab77: http://fablab77.ru/

[8] Truly Ergonomic: http://www.trulyergonomic.com/

[9] ErgoDox: http://ergodox.org/

[10] Microsin: http://microsin.ru/

[11] WASD Keyboards: http://www.wasdkeyboards.com/

[12] suenot: http://habrahabr.ru/users/suenot/

[13] Клавогонщиков: http://klavogonki.ru/

[14] резьбовыми заклёпками М3 с насечкой: http://ibnteo.klava.org/keyboard/fixture

[15] Источник: http://habrahabr.ru/post/185500/