Пользователь
0,0
рейтинг
19 апреля 2013 в 21:21

Клавиатура своими руками под свои руки


Для меня всё началось вот с этого топика о механических клавиатурах, желания научиться печатать быстрее (к своему стыду до недавних пор печатал двумя пальцами, несмотря на 25летний стаж программирования), и появившихся недавно неприятных ощущений в кистях после рабочего дня (да и вообще времени, проведённого за компьютером).
Провёл короткое исследование о том, что вообще есть из клавиатур для программистов и тех, кто много печатает, и написал вот этот обзорный топик. Купил себе Happy Hacking Lite (минималистичная клавиатура с мембранными переключателями), но печатать на ней оказалось ещё менее удобно, чем на ноутбучной, в основном из за ещё более компактного расположения клавиш.
Вскоре появился топик, в котором автор рассказывал о новоприобитённой им Truly Ergonomic, пожалуй, практически идеальной клавиатуры с моей точки зрения, но в комментариях автор же отметил, что спустя два месяца использования так и не смог совсем пересесть на неё, а положение рук совсем не так и удобно, как рекламируется.
Чуть позже появился топик о Kinesis Advantage, по отзыву автора к которой тоже не так легко привыкнуть, а цена так и просто пугает.


Изыскания



По ссылке из первого топика я вышел на сайты фанатов любителей клавиатур, американский и европейский, на которых люди доделывали, переделывали и делали клавиатуры с нуля. Я заштудировал их, узнал всё (о многом я расскажу в этом топике), что нужно для сборки клавиатуры с нуля, заказал все нужные детали и инструменты, и стал ждать.
Список необходимого — ниже, а пока для затравки расскажу о двух наиболее интересных проектах эргономических клавиатур, которые я нашёл, и которые и вбили в мою голову мысль «Я тоже могу».

BlueCube



Клавиатура от домашнего умельца, работающего в компании, занимающейся изготовлением изделий из пластика.


ErgoDox



Клавиатура, прошедшая эволюцию от Key64, через DoxKB, и дошедшая до стадии массового производства (правда, со самостоятельной сборкой из деталей) по цене в $200.


Проектирование



Обе клавиатуры из предыдущего раздела отличаются от типичных клавиатур тем, что в них заметно меньше клавиш. Это сделано за счёт отказа от блока цифровых клавиш, блока стрелок и блока функциональных клавиш. Стоит задуматься, так ли уж они часто используются, и нельзя ли вместо F1 нажимать Fn-1 или какое-то другое сочетание клавиш.
Клавиши на BlueCube, Ergodox расположены ровными колонками, а не ровными рядами. Такое же расположение клавиш используется и в Truly Ergonomic, TypeMatrix и ещё нескольких клавиатурах. Сделано это по двум причинам, во-первых — разница в длине пальцев, средний типично длиннее остальных, а мизинец — короче, и им всем не слишком удобно лежать на одном ряду. Во-вторых, при использовании метода быстрой десятипальцевой печати, если положить указательные на клавиши с засечками, F и J, а остальные на клавиши по бокам от них, попробуйте достать безымянным пальцем левой руки до клавиши X, не двигая остальных пальцев, или средним левой руки до клавиши C. Расположение клавиш ровными колонками решает обе эти проблемы.
Ещё один важный момент, используемый в BlueCube, это совмещение клавиш модификаторов с такими клавишами, как пробел, Tab и т.п. следующим образом: если клавиша нажата одиночно, то результирующий символ — пробел, а если клавиша зажата, а в этот момент нажата, а потом отпущена, другая клавиша, например 'q', то первая клавиша интерпретируется как модификатор, например, Shift, и результирующим символом получается Q.
Стоит также заметить, что большой палец, который практически не используется при печати на обычной клавиатуре, тут задействован больше, аналогично клавиатурам от Maltron и Kinesis. Однако, блок клавиш под большие пальцы не кажется таким уж удобным, что на ErgoDox (и аналогичный на Maltron и Kinesis Advantage), так и на BlueCube, где их приходится загибать аж до основания мизинца.
Поскольку ничто не сдерживало меня в том, как будет выглядеть клавиатура, я решил просто положить руки на бумагу, и понять, куда мне бы было удобно доставать пальцами, не слишком сильно перемещая кисти рук. В итоге у меня получился вот такой набросок:


который я тут же перенёс в векторный редактор, но уже с клавишами, на которые нанёс и символы, расположив их более-менее традиционно:


Итого у меня получилось, что пальцы достают до 50 клавиш, и вроде бы как все нужные клавиши на местах (хотя и не всегда на своих, если смотреть с точки зрения традиционных раскладок). Достаточно ли будет 50ти клавиш, учитывая то, что на традиционных клавиатурах 104 клавиши (в крайнем случае 87, в варианте без блока цифровых клавиш)? С использованием модификатора Fn это становится возможным, ведь сочетания букв и Fn обычно не используются, и можно на них повесить всё, что не влезло, но по каким-то причинам нужно, например, стрелки, Home, End, PgUp и PgDn.
Коричневые квадраты под запястьями обозначают мягкие подкладки.
Индикаторы? Я не пользуюсь Caps Lock'ом, отдельного цифрового блока нет, так что не нужен и NumLock, а для чего нужен ScrollLock многие, наверняка даже и не знают. Так что отметаю индикаторы.
Слегка смущает блок клавиш под мизинец, если вдруг кто-то другой решит воспользоваться моей клавиатурой, его мизинец сможет оказаться короче моего семиоктавного, поэтому блок под мизинец я решил сделать поворачивающимся, от такого, как на рисунке, до параллельного другим колонкам клавиш.
Ещё один аспект — это естественное положение рук, которое скорее ближе к вертикальному расположению ладоней, нежели к положению ладонями вниз, к которому мы все привыкли. Это одна из причин, по которым я не купил клавиатуру Truly Ergonomic и не успокоился. Это склоняет к тому, чтобы сделать клавиатуру разделённой на две половинки, как Kinesis Freestyle и Ergodox с BlueCube'ом, и наклонённой.

Итак, клавиатура по плану получается раздвоенная, с уменьшенным количеством клавиш, со сдвинутым блоком под большие пальцы, с вертикальными ровными колонками, по вертикали сдвинутыми относительно друг друга, левый и правый блоки под наклоном (регулируемым, потому что разные источники советуют наклон от 15 до 90 градусов относительно вертикальной поверхности, и сдвигающимся регулируемыми блоками под мизинцы, без индикаторов.

Детали



Краткий список того, что нужно:

— клавишные переключатели;
— колпачки на переключатели;
— диоды (зачем они нужны — чуть позже);
— микроконтроллер, позволяющий клавиатуре быть USB устройством, и считывающий состояние переключателей;

Плата



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


Микроконтроллер



Несмотря на свой юношеский задор по поводу светлого будущего ARM-контроллеров, я тем не менее выбрал устройство на базе более традиционного AVR. Из наиболее подходящих для данного применения был выявлен Atmega32u4, с 32КБ ПЗУ, достаточным количеством портов ввода-вывода, работающий в режиме ведомого USB устройства, а также умеющий общаться по I2C. То, что клавиатура будет без традиционной печатной платы, привело к необходимости взять контроллер на выносной плате, и я выбрал наиболее компактный — Teensy. Вариантов достаточно много, даже от того же производителя, и даже есть отечественные аналоги, хотя они почему-то дороже.


Переключатели



Выбор клавишных переключателей заключался лишь между механическими от Cherry, марки известной многим по клавиатурам, и многочисленными китайскими клонами ныне не выпускающихся переключателей Alps.
Cherry выпускает две основные линейки переключателей, низкопрофильные Cherry ML, и более часто используемые MX, выпускаемые в следующих основных модификациях:
— чёрные (линейной силы нажатия, средней упругости, не щёлкающие);
— красные (линеные, лёгкие, не щёлкающие), популярны в игровых клавиатурах;
— серые (тактильные, упругие, не щёлкающие);
— прозрачные (тактильные, средней упругости, не щёлкающие);
— зелёные (тактильные, средней упругости, щёлкающие);
— голубые (тактильные, лёгкие, щёлкающие);
— коричневые (тактильные, лёгкие, щёлкающие);
— белые (тактильные, средней упругости, умеренно щёлкающие).

Исходя из личных предпочтений, мне понравились прозрачные.
Отличаются переключатели ещё способом установки. Есть вариант для монтажа на печатную плату, и для монтажа на дополнительную пластину. У первых есть два дополнительных столбика для большей устойчивости, а вторым для устойчивости нужна дополнительная пластина. В эту дополнительную пластину можно защёлкивать и первый вариант.
Существует ещё множество модификаций MX, но это одна из тех деталей, которые приобрести не так просто, либо не так дёшево, тем более в малых количествах, а в не слишком популярных модификациях — и подавно. На Ebay их продают чуть не по 4 доллара за штуку, у поставщиков электронных компонент выбор совсем мал. Замечательно то, что на клавиатурных форумах организовывают групповые покупки, в одну из которых я и вписался. К сожалению, нужно было либо ждать, либо брать, то, что есть, и я взял голубенькие (выбирая из красных, коричневых и голубых), в варианте с установкой на печатную плату.


Колпачки



Изначально я хотел купить какую-нибудь старую механическую клавиатуру, выпаять из неё переключатели и снять колпачки, но так ничего путного и не нашёл.
Раз уж покупать новые — так выбирать. Хороший выбор у WASD Keyboards, я решил попробовать взять разные клавиши, и взял набор из 39 клавиш алфавитного блока, и два набора цветных на пробу, к которым в комплекте идут также клавишные демпферы для уменьшения щёлкающего эффекта (щёлкающего эффекта колпачков по плате, а не внутреннего щёлкающего эффекта переключателя). Также нужны клавиши увеличенного размера, и я взял несколько клавиш, обычно использующихся как Tab (1.5x), Alt (1.25x) и Caps Lock (1.75x), разных цветов.
Сейчас в основном используются колбачки цилиндрической формы, у которых каждый ряд клавиш имеет свой профиль.


У меня в наборах не оказалось ни одной клавиши из цифрового ряда E:



Диоды



Диоды, а именно 50 шт. 1N4148 в корпусе DO-35, которые оказалось проще и дешевле купить с доставкой из Англии, чем в местных супермаркетах, торгующих электронными компонентами.

«Лего для взрослых»



Детали и инструменты.


Макет



Железо



Чтобы не тратить зря время, я решил собрать макет и потрогать руками, что же из всего этого может выйти, и не тратить время, если вдруг не понравится такой промежуточный результат. Вот, что у меня получилось:

Рука (левая, я решил поступить по принципу примерки обуви) лежит удобно, достаёт до всех клавиш. Решено, продолжаю.

Микроконтроллер



Teensy идёт с зашитой прошивкой под названием «мигающая лампочка». Удивительно, но при подключении его USB шнуром к компьютеру, маленький диодик действительно начинает моргать. На сайте есть ещё одна прошика для примера, называющаяся «быстро миграющая лампочка», я скачал её и залил на устройство, и лампочка действительно стала мигать быстрее. Залил изначальную — опять медленее. Ну что ж, вполне неплохо, стробоскоп уже можно делать.
Небольшие копошения с исходниками примера с сайта под названием «USB клавиатура», и каждые 8 секунд на экране печатается символ пробела, а при замыкании GND с любым из входов на экране появляются два символа, обозначающи порт и номер ноги, например B1. Ток мизерный — 135мкА. Ещё удача.

Теория



Как же подключить 50 (а на обычных клавиатурах вдвое с лишним больше) клавиш к микроконтроллеру с 25 портами ввода-вывода, оставив несколько на такие вещи, как мышь?
Всё достаточно просто, нужно распределить клавиши по рядам и колонкам, сформировав матрицу. Подавая напряжение на колонку A, и сняв это напряжение с рядов 2 и 3, можно понять, что сейчас клавиши на пересечении этих рядов и этой колонки находятся в нажатом состоянии. Напряжение подаётся на колонки поочерёдно. Таким образом, грубо говоря, не нужно количество портов ввода-вывода равное количеству клавиш, а достаточно квадратного корня из этого количества, в моём случае — 8x7, то есть 8 выходов и 7 входов (или наоборот).

Однако, у этого метода есть один серьёзный недостаток, проявляющийся в блокировании и пропадании нажатий:

На этом рисунке видно, что при нажатых клавишах W, E и D, и при напряжении, поданном на колонку B, происходит ложное срабатывание клавиши S. Бороться с этим явлением и призваны диоды:


Более подробно об этом можно прочитать тут.

Вдобавок к этому, стандарт USB привносит серьёзное ограничение для подключаемых к нему устройств печатного ввода, в 6 одновременно нажатых (не-модифицирующих) клавиш. Некоторые производители обходят это ограничение, эмулируя подключение нескольких USB устройств. Честно говоря, сталкивался с этим ограничением только по юности, когда денег на MIDI клавиатуру не было, а хотелось сыграть жирный аккорд. Но так, на заметку.

Небольшая пауза на раздумье





Мне в разные моменты начинало казаться, что клавиш слишком много (да-да, как бы это смешно ни звучало при всего 50ти клавишах!). И когда я заказал всего 50 переключателей без всякого запаса, и когда пытался дотянуться мизинцами до крайних четырёх клавиш на макете, и когда начал думать о том, что седьмая колонка клавиш поведёт за собой необходимость тянуть между половинками клавиатуры дополнительный провод вдобавок к шлейфу. Вдобавок ко всему на этих изначально планируемых клавишах должны были расположиться Escape, Tab, Backspace и Enter, которые уже есть на клавишах под большие пальцы. Дублировать особого смысла нет. И если уже привыкать к новой клавиатуре, так сразу, без путей отступления.

Схема



Схема настолько проста, что даже нет особого смысла её рисовать.


Колонки и строки в матрице соответствуют клавишам, клавиши блока большого пальца — четвёртый ряд.
Подаём напряжение с колонки на все входящие ноги переключателей этой колонки. С выходящей ножки переключателя — на анод диода. Выходы с катодов всех переключателей в строке соединяем, и подключаем к входу строки.
Для правой половины клавиатуры требуется 6 выходов и 4 входа, на левой — ещё 6 выходов, а входы можно использовать те же. Получается матрица 12x4, итого аж 18 входов-выходов, что несколько неэкономично. Буду использовать матрицу 6 на 8, которую легко представить, как одну половину клавиатуры, расположенную не слева, а снизу от другой, итого получается 14 портов ввода-вывода.
Получается, что в левую половину клавиатуры нужно будет вести 10 жил. Купленные мной штырьковые разъёмы всего на 10 жил, и их ровно-ровно хватает.

Ножки на контроллере могут быть в двух режимах: вход или выход. Вход может быть открытым, в этом случае, если он не замкнут, он может шуметь, и лучше перевести его в режим с включённым встроенным подтягивающим резистором, чтобы в случае, если он не замкнут на землю, он всегда был в состоянии 1. Выходы ставим по умолчанию с состояние 5В, а во время чтения конкретной колонки опускаем до 0В, чтобы при его замыкании со входом последний переходил в состояние 0, означающее нажатие кнопки. Такой вариант подключения приводит к некому недоразумению в виде того, что ток «течёт» от входов в к выходам.
Существуют и другие варианты подключения, где всё более-менее логично, но они предусматривают дополнительные внешние элементы, такие как один на все выходы или несколько внешних резисторов (для экономии портов с чтением через АЦП), но мне кажется, что если есть контроллер с достаточным количеством портов, он и сам должен справляться с тем, как у него какую ножку куда замкнули, поэтому — самый простой вариант, хотя на первый взгляд и не самый понятный.
Ножки микроконтроллера на Teensy выведены не все, а те, что выведены — идут вразнобой. Из «цельных» портов есть только B. Частично выведенные — F (нет ножек F2, F3), D (две ножки на нижнем торце платы, не имеют собственно ножек, а ещё два совмещены с I2C, C (есть только ножки C6 и C7).

На микроконтроллере используем ножки PF0, PF1, PC6, PC7, PF4-PF7 используем под выходы, PB0-PB5 под входы (с подтягивающим резистором). Оставляем ножки PD0 и PD1 под I2C, который пригодится позже для подсоединения мыши/трекпоинта. Ножку PD6 не трогаем, потому что она соединена с размещённым на плате светодиодом, который может питаться током, поданным на эту ножку, и опускать напряжение с 5В до ~1.7В.

Железо



Плата



Текстолит предназначен для вытравливания на нём проводящих дорожек. Поскольку это в моём случае не нужно, фольгу с него придётся снять. Сделать это не так просто, так как она значительно толще и крепче той, которую мы все привыкли снимать с шоколадок. Трудно с самого начала — зацепить уголок этой фольги, далее, если снимать её толстыми полосами, усилие приходится применять большое, а если тонкими — норовит порваться, и приходится заново искать уголок. Мне удалось выявить достаточно простой способ: зацепить с угла, и полосой 1-1.5см вести по спирали к центру платы.

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


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

Сверление



Я сделал набросок того, как переключатели должны располагаться на плате (платах, ибо получается как минимум 4 куска, а для лучшей компоновки на текстолите аж 6 кусков). Для того, чтобы они на ней закрепились, плату нужно просверлить. Для каждого переключателя это 7 отверстий, два по 0.8мм, два по 1.2мм, два по 1.6мм, и одно, центральное 4мм.
Сверлить сразу по распечатке не слишком удобно, поэтому из старой алюминиевой задней крышки мобильника я сделал трафарет:


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



Увы, кулачковый патрон дрели предназначен для свёрел c хвостиком максимального диаметра 3.4мм, но сверло на 3.5мм вполне устойчиво закрепилось. Для высверливания им отверстия 4мм пришлось совершить несколько круговых движений. Не рекоммендую повторять такое.
Сверлил изначально на деревянной подложке, и где-то на сотом отверстии сверло 0.8мм сломалось под корень, из за того, что текстолит сдвинулся относительно подложки в тот момент, когда сверло было опущено. Позже сверлил так, что под тектолитом ничего не было.



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

Получилось вот что:


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

Несмотря на явную неровность линий отверстий с шагом 2.54мм, микроконтроллер и IDC разъём встали без усилий и плотно:




Опять диоды



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





Нарезка



Плат нужно аж целых 6 кусков. Теоретически можно было сделать и два, но 1) размер тектолитовых кусков не позволяет 2) даже если бы позволял, то получалось бы это не слишком экономично 3) есть возможность при сборке поиграть положением плат относительно друг друга.



Межплатные соединения



Для того, чтобы не пришлось тянуть провода между половинками клавиатуры, я использовал шлейфы, подобные тем, которые использовались для подключения накопителей на жёстких дисках к материнском платам, только с меньшим количеством жил, и разъёмы IDC/BH. Конечно, более правильно было бы использовать витую пару, но мне нужно больше, чем 8 проводов, а разъём 8P8C тоже не слишком компактен (а разьём 10P10C и 10жильную витую пару не так просто найти). Ещё вариант был бы использовать мультиплексор портов ввода вывода на шине I2C, но это усовершенствование я решил отложить.
К слову сказать, IDC разъёмы угловой и прямой мне достались совершенно разные. Прямой не паялся никак, и ножки из него вываливались при малейшем нагревании, а угловой паялся хорошо. Внешне не отличались ничем.


Пайка



О пайке могу сказать одно — это не мой конёк. Тяп-ляп, но работает.


Прошивка



Проба пера



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

К Teensy идёт некоторое количество примеров, в том числе USB HID (устройство интерфейса с человеком), в вариантах для клавиатуры и мыши. С первого из этих примеров и выросла прошивка.
В оригинальном примере идёт расчёт на то, что входы переключателями замыкаются на землю, а при матричном подключении всё немного по-другому, на часть ножек периодически подаётся напряжение, и в этот период состояние других ножек читается. Для того, чтобы ножки работали в качестве выходов, нужно их в этот режим перевести.
В общем приближении порядок такой: инициализируем порты и USB; в цикле поочерёдно подаём напряжение на выходы, читаем входы, если значение на входе соответствует нажатой клавише, а в предыдущем цикле чтения она не была нажата — посылаем код клавиши по USB.
Я не большой специалист в C, а уж когда речь доходит до копания в макросах, я слегка теряюсь, поэтому код может быть слегка неуклюж, но общий смысл должен доносить:
Да простит читатель мою привычку делать комментарии на английском.

Код прошивки
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "usb_keyboard.h"

#define CPU_PRESCALE(n)	(CLKPR = 0x80, CLKPR = (n))

uint8_t matrix[8][8]= {
/*B0*/  {KEY_TILDE, KEY_Q, 0, 0, KEY_W, KEY_E, KEY_R, KEY_T}, // Top row
/*B1*/  {KEY_SLASH, KEY_A, 0, 0, KEY_S, KEY_D, KEY_F, KEY_G}, // Home row
/*B2*/  {KEY_LEFT_BRACE, KEY_Z, 0, 0, KEY_X, KEY_C, KEY_V, KEY_B}, // Bottom row
/*B3*/  {0 /*Fn*/, KEY_ENTER, 0, 0,  KEY_TAB, KEY_ESC, KEY_SPACE},

/*B6*/  {KEY_Y, KEY_U, 0, 0, KEY_I, KEY_O, KEY_P, KEY_EQUAL}, // Top row
/*B5*/  {KEY_H, KEY_J, 0, 0, KEY_K, KEY_L, KEY_SEMICOLON, KEY_QUOTE}, // Home row
/*B4*/  {KEY_N, KEY_M, 0, 0, KEY_COMMA, KEY_PERIOD, KEY_SLASH, KEY_RIGHT_BRACE}, // Bottom row
/*D7*/  {KEY_SPACE, KEY_ESC, 0, 0,  KEY_TAB, KEY_ENTER, 0 /*Fn*/}
};

int main(void)
{
  uint8_t state=0, prev_state[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

  setup_pins_and_usb();

  while (1) {
    // B0
    PORTB = 0b11111110;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[0], matrix[0]);
    prev_state[0] = state;
    // B1
    PORTB = 0b11111101;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[1], matrix[1]);
    prev_state[1] = state;
    // B2
    PORTB = 0b11111011;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[2], matrix[2]);
    prev_state[2] = state;
    // B3
    PORTB = 0b11110111;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[3], matrix[3]);
    prev_state[3] = state;

    // B6
    PORTB = 0b10111111;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[4], matrix[4]);
    prev_state[4] = state;
    // B5
    PORTB = 0b11011111;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[5], matrix[5]);
    prev_state[5] = state;
    // B4
    PORTB = 0b11101111;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[6], matrix[6]);
    prev_state[6] = state;
    PORTB = 0b11111111;
    // D7
    PORTD = 0b00000000;
    _delay_ms(5);
    state = PINF;
    read_row(state, prev_state[7], matrix[7]);
    prev_state[7] = state;
    PORTD = 0b10000000;
  }
}

void read_row(uint8_t state, uint8_t prev_state, uint8_t keys[]) {
  uint8_t mask, i;

  mask = 1;
  for (i=0; i<8; i++) {
    if(((state & mask) >> i) == 0 && ((prev_state & mask) >> i) == 1 ) {
      usb_keyboard_press(keys[i], 0);
    }
    mask = mask << 1;
  }
}

void setup_pins_and_usb() {
  // set for 16 MHz clock
  CPU_PRESCALE(0);

  // Configure PB0-PB6, PD7 as outputs, high state
  DDRB = 0b01111111;
  DDRD = 0b10000000;
  PORTB = 0b01111111;
  PORTD = 0b10000000;

  // Configure PF0, PF1, PF4-PF7 as inputs, pullup enabled
  DDRF = 0x00;
  PORTF = 0xFF;

  // Initialize the USB, and then wait for the host to set configuration.
  // If the Teensy is powered without a PC connected to the USB port,
  // this will wait forever.
  usb_init();
  while (!usb_configured()) /* wait */ ;

  // Wait an extra second for the PC's operating system to load drivers
  // and do whatever it does to actually be ready for input
  _delay_ms(1000);
}



Проверил — работает. Удача.

«Фирмовая» прошивка



Можно продолжать городить огород и тут, но в прошивках кроется не меньше тонкостей, чем в железе. И мне пришла в голову мысль использовать готовую прошивку. Из имеющегося в сети наиболее заслуживающими внимания показались две:
Clavis. Использовалась в одном моде старой терминальной клавиатуры Wyse WY-85. В принципе, выглядит неплохо настраиваемой, но из коробки не хватает кое-каких возможностей, которые есть во второй прошивке.
TMK Keyboard. Очень матёрая прошивка, использующаяся в десятке (если не в десятках) клавиатурных модов и доморощенных клавиатур. Из коробки обладает следующими возможностями:
— многослойность раскладок (можно использовать один слой для дополнительных полезных символов, наподобие типографского дефиса и т.п.);
— эмуляция движений мыши с помощью клавиш;
— умеет посылать коды системных клавиш: Power Down, Sleep, Wake Up, Volume Down/Up, Mute, Next/Prev track, Play, Stop и других;
— передача множества одновременных нажатий (не ограничиваясь лимитом USB на 6 клавиш);
— настраиваема до мельчайших деталей;
— работает с клавиатурными «фокусами», а именно умеет те же физические клавиши использовать для разных назначений в зависимости от типа нажатия;
— консоль отладки прошивки.

Поначалу была проблема с залипанием клавиш, но к моменту, когда я всё дособрал, проблема уже была решена. Мой код можно найти тут.

Раскладка
#define KEYMAP( \
  K00,K01, K02,K03,K04,K05,        K40,K41,K42,K43, K44,K45, \
  K10,K11, K12,K13,K14,K15,        K50,K51,K52,K53, K54,K55, \
  K20,K21, K22,K23,K24,K25,        K60,K61,K62,K63, K64,K65, \
    T30,T31,T32,T33,T34,              T70,T71,T72,T73,T74   \
) { \
  {  KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05 },\
  {  KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15 },\
  {  KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25 },\
  {  KC_0,     KC_##T30, KC_##T31, KC_##T32, KC_##T33, KC_##T34 },\
\
  {  KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45 },\
  {  KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55 },\
  {  KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65 },\
  {  KC_##T70, KC_##T71, KC_##T72, KC_##T73, KC_##T74, KC_0     } \
}

static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/** Layer 0: (lowercase char)
 *
 *   ` q w e r t    y u i o p =
 *   \ a s d f g    h j k l ; '
 *   [ z x c v b    n m , . / ]
 */
 KEYMAP( \
    GRV,   Q,   W,   E,   R,   T,      Y,   U,   I,   O,   P, EQL, \
   SLSH,   A,   S,   D,   F,   G,      H,   J,   K,   L,SCLN,QUOT, \
   LBRC,   Z,   X,   C,   V,   B,      N,   M,COMM, DOT,BSLS,RBRC, \
      FN0, FN1, FN2, FN3, FN4,           FN9, FN8, FN7, FN6, FN5   ),

/** Layer 1: (symbols and navigation)
 *
 *     1 2 3 4 5    6 7 8 9 0 -
 *       ↰ ↑ ↳ ⤒    ← ↓ ↑ →  
 *       ← ↓ → ⤓    
 */
  KEYMAP( \
     NO,   1,   2,   3,   4,   5,      6,   7,   8,   9,   0,MINS, \
     NO,  NO,PGUP,  UP,PGDN,HOME,   LEFT,DOWN,  UP,RGHT,SCLN,QUOT, \
     NO,  NO,LEFT,DOWN,RGHT, END,     NO,  NO,  NO,  NO,  NO,  NO, \
      FN0, FN1, FN2, FN3, FN4,         FN9, FN8, FN7, FN6, FN5   )
};

/*
 * Fn action definition
 */
// TODO: use [1] = KEYMAP(...) to prevent from changing index of element?
static const uint16_t PROGMEM fn_actions[] = {
    ACTION_LAYER_TAP_KEY(1, KC_SPC),                 // FN0 = L1 symbols 
    ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPC),           // FN1 = Shift with tap Space
    ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),           // FN2 = Ctrl with tap Escape
    ACTION_MODS_TAP_KEY(MOD_LALT, KC_TAB),           // FN3 = Alt with tap Tab
    ACTION_MODS_TAP_KEY(MOD_LGUI, KC_DEL),           // FN4 = Meta with tap Del

    ACTION_LAYER_TAP_KEY(1, KC_ENT),                 // FN5 = L1 symbols 
    ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),           // FN6 = Shift with tap Enter
    ACTION_MODS_TAP_KEY(MOD_RCTL, KC_BSPC),          // FN7 = Ctrl with tap Backspace
    ACTION_MODS_TAP_KEY(MOD_RALT, KC_RALT),          // FN8 = Ctrl with tap Backspace
    ACTION_MODS_TAP_KEY(MOD_RGUI, KC_TAB)            // FN9 = Meta with tap Tab
};



Матрица
/* Column pin configuration
 * col: 0   1   2   3   4   5
 * pin: F0  F1  F4  F5  F6  F7
 */
static void  init_cols(void)
{
    DDRF = 0b00000000;
    PORTF = 0b11111111;
}

static matrix_row_t read_cols(void)
{
    return (PINF&(1<<0) ? 0 : (1<<0)) |
           (PINF&(1<<1) ? 0 : (1<<1)) |
           (PINF&(1<<4) ? 0 : (1<<2)) |
           (PINF&(1<<5) ? 0 : (1<<3)) |
           (PINF&(1<<6) ? 0 : (1<<4)) |
           (PINF&(1<<7) ? 0 : (1<<5));
}

/* Row pin configuration
 * row: 0   1   2   3   4   5   6   7
 * pin: B0  B1  B2  B3  B6  B5  B4  D7
 */
static void unselect_rows(void)
{
    // Hi-Z(DDR:0, PORT:0) to unselect
    DDRB = 0b01111111;
    DDRD = 0b10000000;
    PORTB = 0b01111111;
    PORTD = 0b10000000;
}

static void select_row(uint8_t row)
{
    // Output low(DDR:1, PORT:0) to select
    switch (row) {
        case 0: PORTB &= ~(1<<0); break;
        case 1: PORTB &= ~(1<<1); break;
        case 2: PORTB &= ~(1<<2); break;
        case 3: PORTB &= ~(1<<3); break;
        case 4: PORTB &= ~(1<<6); break;
        case 5: PORTB &= ~(1<<5); break;
        case 6: PORTB &= ~(1<<4); break;
        case 7: PORTD &= ~(1<<7); break;
    }
}



Ещё одна пауза на раздумьё



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

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


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


Корпус



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

Проба сгибания



Мне понадобилось: метр нихромовой проволоки, четыре шурупа, доска. Некоторые руководства в интернете говорят о том, что нихромовая проволока растягивается при нагреве, и крайне необходимо использовать растягивающую прожину. По моим скромным подсчётам по данным википедии, увеличение объёма нихрома составляет чуть менее миллиметра при нагреве на 200'C и длине проволоки в 30см.
Перед сгибанием очень важно не забыть снять с оргстекла защитную плёнку.


Попытки нагреть проволоку керамическим элементом паяльника провалились, равно как и универсальным блоком питания на 1А, включённом на 1.5В. Сопротивление участка провода длиной 30см около 1 Ом, и при токе в 1А получается мощность в 1Вт, что по поим расчётам может нагреть проволоку до 150'C за 500 секунд, и только при условии, что тот не будет остывать, а он будет.
Нужно что-то помощнее, и я взял старый блок питания AT, и подключил к концам провода землю и 5В. Эффект не заставил себя ждать, провод очень быстро нагрелся до температуры, когда капля воды на нём мнгновенно испарялась.


Проволока всё же растягивается, причём настолько сильно, что провисает на пару миллиметров, что делает линию сгиба неровной, а по бокам слегка лучше прилегает с сгибаемому листу, нагревает его больше, даже слегка оплавляя. Для пробы, конечно, пойдёт, и тех «растяжителей» в виде столярных дюбелей достаточно, но чтобы сделать красиво и ровно, нужно что-то более надёжное.



Конструкция получается крепкая, прогибается очень слабо, ноутбук сидит на ней как влитой.


Упор для запястий



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

Поскольку упор один, а половины у клавиатуры две, его придётся распилить пополам. А ещё лучше удалить все царапающие гладкие поверхности скобы.



И удобно подсоединить к конструкции.

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

Чтобы конструкция не скользила по столу, я купил специальные клеящиеся ножки.

Прорезание



Для того, чтобы переключатели встали на оргстекло, неоходимо сделать в нём прорези под них, и защёлкнуть. Прорези делаются на фирменном оборудовании, но делается это быстро и стоит не дорого.



В первой версии корпуса из оргстекла я сделал отверстия чуть большего размера, чем нужно, примерно на 0.3мм, и переключатели чуть заметно гуляли по горизонтали. Версия два дала мне возможность чуть поправить расположение клавиш под большие пальцы, не использовать гравировку (в месте гравировки материал становится тоньше аж на треть), и собственно уменьшить размер отверстий.
С версией два была следующая проблема. На нижней (вторая версия) переключатели не защёлкиваются (такие маленькие штучки сверху и снизу посередине каждого переключателя). Сначала я подумал, что слишком сильно уменьшил отверстия, но оказалось (!!!), что толщина акрилового листа 1.5мм может достигать 1.8мм, а что переключатели расчитаны на 1.5-1.68мм. Такой подставы я не ожидал, но мне повезло, что я заказал четыре «половинки» сразу, и две из них оказались нормальной толщины, и переключатели защёлкивались в них как нельзя лучше.



Смягчители



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


Я решил попробовать все, хотя и ограничен в количестве. Чёрные пошли на «домашнюю» строку, красные — наверх, синие — вниз. Цветным клавишам и крайним колонкам колечек не досталось.


Крепление контроллера



У меня были межплатные стойки SP3, и я попробовал просверлить отверстия в оргстекле, но как-то не слишком хорошо они входят в отверстие даже 5мм, а мой лимит на точное сверление — 3.5мм, так что я откусил у них защёлки-крепления, просверлил вдоль оси, и прикрепил контроллер вот таким незатейливым способом, пропустив жилы витой пары кругом.




Держится просто отлично.

Да, конечно пришлось почти всё перепаивать заново, но имея в этом деле уже какой-никакой опыт это уже немного легче и быстрее. Немного поменял назначение входов-выходов, чтобы проще было со шлейфами и IDC разъёмами (PF0, PF1, PF4-PF7 под выходы, PB0-PB3 под входы левой половины, PB4-PB6, PD7 под входы правой половины).



Сгибание



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




Надписи на клавиши



Несмотря на то, что с конкретной раскладкой я ещё не определился, использовать ли QWERTY, Colemak, Workman-P или что ещё, но шрифт для клавиш я уже выбрал, это Neuropol Nova от Typodermic. Выбран из за футуристичности, отличной проработки и возможности сделать трафарет. Ко всему прочему, автор любезно согласился на использование этого коммерческого шрифта в моих целях. Трафарет нарезан там же, где и оргстекло, и выглядит примерно так:


Раскладка



Раскладка на текущий момент:
` q w e r t y u i o p =

\ a s d f g h j k l ; '

[ z x c v b n m , . / ]


Русские буквы находятся на тех же клавишах, что и обычно. Расположение стандартное, только буква Х уехала влево вниз, слева от Я.

Ряд модификаторов (цветные) включает в себя как модифицирующие клавиши, так и обычные. Модифицирующие срабатывают при нажатии в комбинации, а при однократном нажатии — обычная.

Однократное:
Рыж Жлт Зел Роз Сир Сир Роз Зел Жлт Рыж

Spc Spc Esc Tab Del Tab AGr Bsp Ent Ent


Комбинация:
Lr1 Sft Ctl Alt Met Met AGr Ctl Sft Lr1


Второй слой, работает в комбинации с рыжими клавишами. Стрелок, на мой взгляд, их даже перебор. Два варианта, для фанатов Vim — справа (hjkl), и для фанатов WASD — слева (dxcv на самом деле).
1 2 3 4 5 6 7 8 9 0 -

↰ ↑ ↳ ⤒ ← ↓ ↑ →

← ↓ → ⤓


Итоги



Трудозатраты



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

Финансы



Деталь Цена
Микроконтроллер Teensy 2.0 с ножками 780
Переключатели Cherry MX MX1A-E1JW (голубые) 1110
Колпачки на переключатели 900
Оргстекло 150
Нарезка оргстекла 350


Итого: 3290 руб.

Не стал включать такие мелочи, как припой, провода, шлейф, разьёмы и диоды. Последние мне достались чрезвычайно недорого, несмотря на дорогую доставку, но если размазать по общей сумме заказанного, то получается что-то около 25 копеек за штуку при магазинной цене в 6 руб.
Мне досталась бесплатно подставка под запястья, можно её купить примерно за 20 долларов.
Довольно много потратил на инструменты, но это мне ещё не раз пригодится. Некоторые недорогие из них (пинцет с жароустойчивыми пластиковыми рычажками, которые сразу поплавились при 200'C, лупа, через которую ничего не видно, кусачки, которые не очень кусают), были дешёвыми, но служили очень недолго.

Впечатления



Пока печатал на этой клавиатуре не так много. Наверняка найду что улучшить в раскладке. В целом — удобно, даже очень.
Предвижу комментарии типа «а как же xxxx клавиша?». В моей модификации tmk_keyboard задействовано всего два слоя. Можно добавить ещё хоть 30 штук, и запихнуть туда все возможные клавиши.
На комментарии типа «а как вы будете нажимать сочетания клавиш xxx+yyy+zzz?» могу ответить, что специально выбирал себе программное обеспечение, чтобы не мучить пальцы (Linux, Awesome, Vim, Chromium+Vimium, Zathura). Самое сложное сочетание из тех, которыми я пользуюсь это Ctrl+Meta+[1-9], совмещение нескольких виртуальных рабочих столов на текущий. Сейчас работает нажатием оранжевой, зелёной, сиреневой и клавишей цифры на верхнем ряду, не слишком удобно, но определённо придумаю, как попроще это сделать.

Усовершенствования, которые я хочу сделать в версии 2



Нашёл замечательный расширитель портов ввода-вывода NXP PCF8574AP в корпусе DIP. Можно межплатный шлейф заменить на тонюсенький четырёхжильный провод. Пока не понимаю, стоит ли связываться с I2C, по слухам протокол очень небыстр, и много времени в работе прошивки тратится именно на него. Как вариант — использовать регистры сдвига 74HC164 и 74HC165.

Есть сильное желание заменить Teensy на голый AVR с количеством вводов и выводов достаточным для одной половины клавиатуры, а вторую половину доверить PCF'ам. Есть ещё вариант сделать на базе микроконтроллера от Microchip, PIC18F25K50, он ещё дешевле, а помимо прочего ему не нужен внешний кварц для работы с USB.

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

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

Попробовать прозрачные или красные (после вот этой заметки) переключатели Cherry MX.

Сделать корпус из фанеры 1.5мм вместо оргстекла. Не так красиво выглядит, но. Фанера легко поддаётся обработке, менее хрупка. При должной обработке достаточно долговечна и стойка к влажности. Её труднее сгибать, но при такой толщине должно быть не так уж и тяжело. Ко всему прочему можно сделать конструкцию из нескольких листов, сделав прорези и штыри, чтобы её можно было собирать-разбирать, по принципу лего. Есть уверенность, что толщина фанеры не гуляет по площади листа на +20% в отличии от оргстекла.

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

PS
И да, конечно, как я мог забыть!
Phil Pirozhkov @philpirj
карма
154,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (142)

  • +60
    настоящий geek porn
    • +4
      Но безусловно достоен восхищения. Браво!
  • +22
    Самый длинный пост за последнее время. Ждём буханку.
    • –33
      • +26
        Кажется вы не поняли, зачем именно её здесь ждут…
        • +5
          Чтобы заминусовать.
          • +4
            Понял. Просто проверил.
      • +4
        Отвечаю на вопрос «зачем?».

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

        Прочитав данный пост возник вопрос, быть может кто-либо имеет возможность/желание помочь в реализации клавиатуры под мою левую руку?
        • 0
          Обратитесь в Maltron, они делают клавиатуры любой конфигурации под заказ. Если деньги позволяют, конечно.
          • 0
            Спасибо за информацию! Буду иметь ввиду, но пока попробую контактировать с ниже отписавшимся ibnteo.
        • +3
          Напишите мне на ibnteo@gmail.com, у меня есть доступ к Fablab, и лишние Cherry MX Black (правда они тяжеловато нажимаются, по сравнению с теми же Red), можно будет сделать однорукую клавиатуру, расположенную вертикально.
          • +1
            Спасибо за отклик! Написал.
        • +1
          Возможно, вам что-то такое подойдет:



          www.handykey.com/

          Это аккордовая клавиатура, т.е. там нажимаются одновременно несколько кнопок.
          • 0
            Спасибо! Интересное решение, поищу реальные отзывы и пробы использования, если ею действительно удобно пользоваться, то, возможно, она стоит своих 200$.
      • –3
        Как обычно, самый правильный коммент заминусовали такие же задроты, как и автор поста.
        • +2
          Вам, «остроумнейший» вы наш, надо поискать другой петросяно-сайт, где все брызжут остроумием, обсирая в своё рабочее время чужие идеи и реальные дела. Не это ли настоящее задротство?

          П.С.: Хорошо, что такие недоразвитые личности на Хабре не задерживаются.
          • –6
            я вас, по-моему, не оскорблял
            почему вы меня оскорбляете?
            • +3
              Т.е. можно нагадить в чужом посте, обозвав автора поста задротом, и потом обижаться, что вас видишь ли оскорбляют?
              • –4
                Конечно, можно!
  • +1
    Привыкать к такой конструкции было долго?
    • +1
      Если автор вообще успел привыкнуть.)
    • +4
      Пока распечатал себе лист с раскладкой и вспоминаю десятипальцевую печать с помощью тренажёра. Десятипальцево печатать гораздо удобнее, чем на обычной клавиатуре. Печатать двумя пальцами — неудобно.
  • +4
    Вы атомный молодец.
    Но: забавно наблюдать, как разные клавиатуры (в том числе, проектируемые энтузиастами) не вбирают в себя все плюс других моделей. В частности, один из основных плюсов Кинезиса — разная высота клавиш. В вашей модели этого нет, увы, зато есть то, о чём мечтают кинезисты с geekhack — полностью раздельные половины клавиатуры.
    • 0
      + не хотите в правую половину, в верхний левый угол врезать трекбол?
      • +1
        Там уже контроллер стоит, для трекбола места маловато будет. Я сейчас вижу два варианта:
        — использовать возможность прошивки управлять курсором мыши с помощью клавиш;
        — приделывать трекпоинт. Покупной — дорого, и на него толком не найти колпачков. Есть вариант взять б/ушный, но их совсем не много продают. Ещё нужно будет программить его по I2C, что тоже не сахар.
        • +3
          Клавиатуры от ноутов, лучше IBM чем HP, т.к. в IBM трэкпоинт на отдельной жёсткой плате с отдельным шлейфом — 20..40$ на ебэе или алиэкспрессе. Или даже "готовый" вариант. Еще интересная штука есть в IBM'овской мышке под названием 31P7405. Удачи!
          • +1
            Есть один на Deskthority участник, говорит, что у него залежи новых клав для старых IBM'ных ноутов, предлагал отправить всем желающим бесплатно.
            А $20-40 — это перебор. Можно взять б/у IBM ноут за 500р. Только жалко вот их расковыривать и выкидывать.
            У меня куплен EasyPoint Joystick от AMS, там датчик на эффекте Холла и модуль джойстика, но он не наклонящийся, а сдвигающийся, как на Sony PSP. И колпачков на него не найти.
            По идее есть такие джойстики, которые могут работать в механических клавиатурах, с большой высотой клавиш, вот например.
            • 0
              20..40$ это с доставкой за новую, а доставка ноута это +50$ (я бы сам не отказался локально от старенького thinkpad'a в пределах 35$ с учетом доставки :))
              Не знаю, пробовал использовать и передерланый джой и собственно PSP для управления курсором — но ничего лучше классического трекпоинта ни по конструкции, ни по ощущениям, на мой взгляд нет. Думаю подыскивать беспроводную замену 55Y9003.
              • 0
                У нас в СПб можно съездить и забрать несколько ноутов IBM по 500р, специально смотрел.
          • 0
            А разве получится использовать трекпойнт из ноута? В тех, что снимают с десктопных клавиатур — обычный PS/2, а в ноутах — невесть что.
            • +1
              В топике про BlueCube подробно описано, посмотрите ссылку в начале топика.
              • 0
                Спасибо!
    • 0
      Вот здесь товарищ экспериментирует с высотами, но пока не особо успешно. Я ориентировался на BlueCube, там автор попробовал

      много вариантов, и остановился на более-менее плоском.

      Мне нравится идея разной высоты, по пока не чуствую в этом особой потребности. Можно увеличить-уменьшить высоту клавиш установкой сферических колпачков, или даже установкой медных прокладок.
    • 0
      Кстати, по поводу высоты, на фотографиях, где переключатели с колпачками вставлены в картон, у меня присутствуют касный, белый и тёмно-серый колпачки. Они из ряда F, и значительно выше остальных колпачков. Мне разница в высоте показалась несколько неудобной, скорее хотелось бы ниже для домашней строки, чем выше.
      • 0
        Разницы в высоте колпачков недостаточно; должна меняться высота посадки и наклон самого механизма, чтобы поверхности клавиш лежали не в плоскости, а в чаше.
  • +2
    А где купили такие дешёвые Cherry MX? Мне комплект кнопок и колпачков для одной клавиатуры в 60 кнопок обошёлся в 4000 рублей, покупал в wasdkeyboards.com/

    Я ведь тоже собрал свою клавиатуру, скоро соберу вторую версию, тогда и опубликую статью на Хабре. Прошивку делал сам, получилась уникальная штука, приспособленная под ввод нескольких языков (я использую два, но легко модифицировать и под 3-4), реализовал необычные функции: турбо автоповтор нажатой клавиши, переключение раскладок шифтами, и сделал необычные кнопки, например AltTab.
    • +1
      Групповые покупки на форумах Deskthority или Geekhack.
      У меня тоже раскладка необычно переключается — с помощью однократного нажатия AltGr.
      С нетерпением жду вашей статьи, удачи со второй версией.
      • +4
        Первая версия выглядит вот так:
        image

        Вторая будет в общем-то такая же, но вместо Cherry MX Black будут Cherry MX Blue и Red на клавишах модификаторах, и в прозрачном корпусе с цветовым обозначением текущей раскладки.
        • +2
          А, так это вы! Это клавиатуру я видел. Сразу подумал, что это за тенденция у владельцев X120e делать DIY клавиатуры.
          • 0
            Я тоже припоминаю вашу клавиатуру, на geekhack вроде бы видел.
  • +14
    Очень приятно видеть ещё одного не согласного со стандартными клавиатурами.
    Сам собрал своего монстра, чуть попроще конечно, и на стандартном контроллере.
    image
    Есть полный ворклог, но опубликовать пока не силёнок кармы не хватает.
    Буду рад поделиться опытом.
    • 0
      Интересно будет почитать.
      • +2
        За выходные подготовлю публикацию.

        Кстати, занятно, ваш проект по физической раскладке очень напоминает японский Tron
        image
        • +1
          Да, естественно. Когда я влился в чтение всего, связанного с клавиатурами, это почти стало образцом. В оригинальном документе, правда, указано, что это под среднестатистических японцев, а у меня длинные пальцы, так что я ориентировался, но не копировал один в один.
          А вот участник GH/DT obra/jesse сейчас делает нечто ещё более приближённое к Tron TK-1. Он же, кстати, подсказал мне использовать оргстекло.
        • 0
          А где такую клавиатуру можно купить? Или хотя бы где поглядеть характеристики?
          • 0
            Купить, наверное, нигде :(
            А характеристики можно попробовать найти тут (на японском, но гугл транслейт справляется)
            или в японской Wiki тут (естественно тоже на японском)
            • +1
              Как жаль… Наверное создание нормальных и правильных клавиатур — это удел энтузиастов…
  • +2
    OMG! Tо, что мне надо! Только я пока на этапе проектирования. Спасибо, буду читать, изучать… Хорошо б и сделать! :)
    • +2
      Проектируйте тщательнее, чтобы не пришлось многократно переделывать, как это было у меня. Специально не стал опускать момент с текстолитом в топике.
  • +2
    Интересно. А как распределили клавиши между русским/английским? Все ли влезло?
    • +2
      Русские буквы находятся на тех же клавишах, что и обычно. Расположение стандартное, только буква Х уехала влево вниз, слева от Я.

      Раскладка:
      ` q w e r t y u i o p =
      \ a s d f g h j k l ; '
      [ z x c v b n m , . / ]
  • 0
    а клавы на Cherry ML в нашем 5020 найти реально?
    по описанию выглядят примерно как то, что я очень хочу.
    • 0
      Вы уверены, что хотите их? Как-то не сильно их хвалят, уж больно короткоходные, а колпачки на них — уж больно плоские.
      • 0
        неуверен. надо смотреть. щупать. думать.
        мне старые эпловские нравились. тоже короткий ход.
        • 0
          Пощупайте Optimus maximus от Лебедева, она как раз на ML сделана.
  • 0
    Всё классно, но не вижу жизни без стрелок. Часто ими пользуюсь и выкидывать бы не стал.
    • 0
      Стрелки есть, работают в комбинации с рыжими клавишами (второй слой). На мой взгляд, их даже перебор. Два варианта, для фанатов Vim — справа (hjkl), и для фанатов WASD — слева (dxcv на самом деле).
      1 2 3 4 5 6 7 8 9 0 -
      ↰ ↑ ↳ ⤒ ← ↓ ↑ →
      ← ↓ → ⤓
  • +8
    На первой фотке с правой рукой, кольцо было на безымянном пальце. На второй фотке с правой рукой, оно уже на среднем. Успели подраться с женой, пока делали эту клавиатурку? :)
    • +11
      Нет, похудел на 10 кило. Я всё думал, заметит кто или нет.
      • +6
        >> похудел на 10 кило
        Неужели настолько тяжело делается клавиатура?
  • +1
    А мои клавиши так в картонке и торчат…
    Спасибо за глоток свежего воздуха!
    • 0
      Главное не спешить.
      • 0
        Остановила проблема с корпусом и нестандартными колпачками,
        основные успешно были изъяты от старой IBM 386 :)
  • +2
    Сделано очень круто. У вас ведь Gentoo, да?)

    Я пошел по простому пути: стёр надписи с wireless (комплект) клавиатуры и прибег к xmodmap (Super_R стала F20 и Mod2, Menu стала F21 и Mod3) и xbindkeys (+ 6 стаков хоткеев). Вместо awesome у меня i3. Скорость и удобство работы повысились. Особой необходимости переходить на колемак/диктор с qwerty/йцукен пока не ощущаю, но планирую.
    • +7
      Нет, у меня Arch. Если был Gentoo, я бы обязательно сделал печатную плату ЛУТ'ом, а колпачки сделал бы 3D печатью.

      По поводу раскладок планирую интересный пост.
      • +1
        Как жаль что у вас не LFS. Хабр лишился серии интереснейших статей по крафту. =)
  • +4
    «А вчера я пролил на неё кофе».
    • 0
      После того количества издевательств, которые уже выдержали эти переключатели во время пайки и многократных установок и демонтажей, вполне допускаю, что после кофе/пива клавиатуру достаточно будет помыть под краном и посушить.
  • 0
    Очень круто. Вы молодец. Единственный минус вашего решения — неуниверсальность (по крайней мере в моем понимании).
    Дома я сижу в интернете на mac — соответственно все комбинации клавиш через cmd (на стандартной клавиатуре там кнопка alt), а на работе у меня обычная клавиатура на рабочем ноутбуке (под Windows) + приходится иногда ходить к пользователям и работать на их клавиатуре (отличной от моего ноута)… И каждый раз это разные клавиатуры с разным backspace, enter, shift, /. И каждый раз путаешься в том где какие клавиши.
    Я просто боюсь, что собрав бесспорно офигенную клавиатуру для себя вы потом отвыкните от обычных клавиатур, и вам придется заново к ним привыкать.
    • +1
      Ну вы же не навсегда пересаживаетесь за обычные клавиатуры в гостях/у пользователей.
      Разово набрать хабрхабр можно на любой клавиатуре за вменяемое время.
    • +1
      А с другой стороны, это не повод, использовать всегда плохие инструменты только потому, что они есть у всех. Можно полноценно работать на своей клавиатуре, а на чужих и двумя пальцами не спеша набрать не страшно. Если работаешь на двух компьютерах, то нужны две одинаковые клавиатуры, или носить с собой одну, что конечно не очень удобно.
      • +1
        Согласен. Просто иметь дома и на работе разные клавиатуры не удобно. Надо сразу несколько комплектов делать.
        Это как работать на работе с планшетами wacom, а дома рисовать мышкой: можно, но не очень-то и удобно, да и непривычно.
        • +1
          Мне здесь повезло, у меня дом и работа это одно и то же место, и клавиатура там теперь одна.
    • +1
      Ну я решил для себя эту проблему организовав себе одинаковое рабочее место дома и на работе. В итоге за моим компом сейчас никто не сидит. Садятся. Смотрят, матерятся идут искать другую машину :)
  • –4
    1) Покупаем клаву за 200р, выдираем из нее клавиши
    2) Печатаем на 3D принтере корпус под свои руки
    3) Собираем (?????) электронику сами
    4) Profit…
    • +1
      плёночки тоже напечатаете? :)
      • –4
        Согласен, 3й пункт самый затратный, но 3-4к на переключатели меня крайне смущает.
        Должен быть вариант проще и дешевле.
        • +1
          Если бы он был, то никто не тратился бы на дорогие кнопки с позолоченными контактами, с ресурсом в десятки миллионов нажатий.
    • 0
      Увы, если вы посмотрите, сколько именно стоит самая недорогая механическая клавиатура, вы удивитесь. После покупки контроллера и печати корпуса у вас уже выйдет дороже, чем вышло у меня. Не забудьте, что паять тоже придётся, потому как стандартная плата не влезет в корпус под свои руки.
    • +1
      Клавиатуры за 200 рублей пленочные. Механическая готовая клавиатура будет стоить сравнимо сколько автор потратил на проект.
    • 0
      Вот пример переделки стандартной плёночной клавиатуры, где получилось переделать корпус, но застопорилось на этапе пересборки плёнок: steve-key.ucoz.ru/forum/2-1-1

  • 0
    А нельзя ли было использовать контроллер из заводской клавиатуры?
    • 0
      В стандартном контроллере не сделаны разные слои клавиатуры. Вот в этой клавиатуре habrahabr.ru/post/177347/#comment_6157181 как раз заводской стандартный контроллер, но там и нет Fn слоя. Да и развивать клавиатуру тогда будет не куда.
      • +1
        Всё верно, вот только FN стой там есть.
        Он несколько «ущербный» на уровне железа, но допиливатся дополнительным софтом.
        • 0
          Вот уж не знал этого, хотя и обсуждали в форуме её, тогда жду статью про создание этой клавиатуры.
    • +1
      Заводской контроллер уже имеет залитую прошивку, и, не имея её исходных кодов, модифицировать её будет проблематично. Зачастую необходимость в программировании заводских клавиатурных контроллеров приводит к необходимости замены контроллера (как это делают с Happy Hacking и Filco).
  • 0
    Вин.

    «и появившихся недавно неприятных ощущений в кистях после рабочего дня» — вы бы не забивали на это дело и сходили к врачу.

    На майкрософтовской клаве natural ergonomic keyboard снизу написан большой текст о проблеме костно-мышечных заболеваний и капсом выделено: НЕ ИГНОРИРУЙТЕ ЭТИ ТРЕВОЖНЫЕ СИМПТОМЫ. НЕМЕДЛЕННО ОБРАТИТЕСЬ К КВАЛИФИЦИРОВАННОМУ ВРАЧУ. А на usb кабеле красный ярлык «WARNING! Прочитайте что написано на обратной стороне клавиатуры, не снимайте этот ярлык».

    Они как бы намекают что если болезнь начала проявляться, то использование эргономичной клавиатуры не вылечит а только усугубит.
    • 0
      Про усугубит там ни слова, а вот удобные клавиатуры как раз помогают устранить подобные синдромы. Увы, кривой MS NEK к таким не относится. Там дополнительный изгиб ладони вверх, да ещё и левая кисть пуще прежнего сгибается влево.
      • +1
        Усугубит, почитайте опыт людей, перенесших туннельный синдром хотя бы средней тяжести.

        MS NEK FTW это у вас руки кривые.
        • +1
          С удовольствием почитаю, и буду рад ссылкам.

          По поводу MS NEK
          • +3
            С удовольствием почитаю, и буду рад ссылкам.
            Вот пример lionet.livejournal.com/71005.html

            Автор картинки чудак. t (е в русской раскладке) всегда и везде нажимается левым указательным пальцем.

            Чтобы нажимать нижний и верхний ряд со смещением по горизонтали не обязательно поворачивать кисть. Пальцы умеют смещаться независимо, можно также смещать(не поворачивать) всю кисть. Кстати tgbyhn['] на всех клавиатурах находятся в разных столбиках.

            В MS NEK очень много недостатков. -Неудобное(полностью стандартное) расположение клавиш это один из них. Намного неприятнее плохо нажимающийся пробел, большой ход клавиш, шумность. Для серьёзной профилактики RSI она явно не годится. Но это единственная клавиатура на рынке которая предлагает удобное правильное расположение запястий — кисть образует с рукой прямую линию. Работать можно, и намного удобнее чем на любой другой доступной клавиатуре.

            UPD: а, автор картинки предлагает нажимать правой рукой не t а 6. Наверное для кого-то это действительно проблема.
            • +4
              На картинке конечно нарисовали глупость с 6, даже на обычных клавиатурах 6 расположена немного ближе к левой руке, но на многих ноутбучных она уже располагается ровно посередине. Из-за этого существует две методики набора цифрового ряда.

              Но в данном случае идея в другом, показана абсурдность эргономики от MS, клавиатуру разделили, раздвинули ряды, а левая кисть всё равно должна изгибаться (правда чуть меньше). Чтобы избежать травм, на стандартных клавиатурах (включая все эти псевдоэргономические, навроде MS) нужно печатать, держа кисти рук на весу, и тогда эти противоестественные смещения рядов абсолютно не важны. Или нужно переучиваться печатать, как это предлагают в A4Tech (годится для любой стандартной клавиатуры, ведь у их клавиатур изменена лишь форма клавиш, но не их расположение):


              Но так как данный топик вообще про разработку своей клавиатуры, то лучше выбрать другой путь, сделать клавиатуру под свои руки, и забыть про проблемы со стандартными как о страшном сне. Если таких вот умельцев наберётся критическая масса, производители задумаются, и начнут выпускать недорогие эргономичные клавиатуры. И этот позорный этап в развитии компьютерной техники, когда эргономика страдает из-за привычек непрофессионалов, будет пройден. Всё больше людей в 21 веке работает на компьютере, незачем потакать привычкам, и использовать неэргономичные инструменты, которые к тому же могут покалечить.
          • +4
            По поводу MS 4000 чуваки с trulyergonomic сильно приврали. Тянуться к цифре 6 правой рукой в клавиатуре, где эта цифра заточена под левую руку будет только совсем упёртый человек.
    • +2
      И что врач сделает, скажет, чтобы меньше работал?

      К тому же, стандартные клавиатуры, включая и всякие гнутые MS, благодаря своему механическому наследству, и приводят к RSI, лучше бы писали, что в случае симптомов их нужно заменить на действительно эргономичные клавиатуры: Maltron, Kinesis.
      • 0
        За границей выдают специальные перчатки, которые удерживают отдельные мышцы в правильном положении. У жены начальница таким пользуется и довольна.
        • 0
          У нас тоже такие продаются, назвается, если я не ошибаюсь, «шина для фиксации кисти», приобрести можно в ортопедических магазинах, показана в периоды воспалений, стоит около 1500р за штуку.
  • +4
    Крутой проект! Недавно купил ms natural 4000, после того как попробовал colemak раскладку и понял что пальцы на обычной клаве просто не попадают по нужным клавишам потому что клавиши черт знает где и сдвинуты безумным образом. В 4000 не на много лушче, тоже сдвинуте ряды и клавиши просто неудобно нажимать правильными пальцами. Думал чтобы сделать что то подобное, может и собирусь пользуясь Вашим опытом. В общем то на мой взгляд если бы было что то серийное типа MS4000 только с ровными колонками и НЕ сдвинутими рядами (ну или левая часть должны бать сдвинута влево, а не вправо что вообще имхо бред, как на картинке выше видно) даже пусть без подгонки под длну пальцев, без number pad и со стрелками слева (я правша, приходится изза стрелок убирать руку с мыши и тащить ее щерез number pad 100500 раз в день) и для полного счастья тачпадом посредине вместо бесполезной непрограммируемой zoom, жизнь была бы гораздо проще в этом плане. Все что я видел — все какие то недоделки. Kinesis advantage — слишком навороченная, слишком много отличий, нет тач пада, и ценник страшный. Все остальные — или ряды сдвинуты, или кнопки сильно слишком перепутаны, тачпадов почти никогда нет, и при этом ценнк обычно тоже страшный.
    • 0
      посмотрел попнимательнее на truly ergonomic. Почти то что надо. бы цену пониже, а то их же 2 надо как минимум. Так же переосмысли эргономику обычной клавиатура под левую руку, спасибо за картинку выше. Получается учить новую раскладку на ней смысла нет.
  • 0
    Я вот заленился и банально купил Goldtouch у него похожая раскладка :)
    Но вообще более интересны аккордные клавиатуры. И если я буду собирать клавиатуру то буду смотреть в эту степь.
    • +1
      Я бы не сказал, что у GoldTouch похожая раскладка, в ней с этой общий лишь наклон поверхности, в остальном же это обычная клавиатура, разве что только разгружена немного правая рука за счёт переноса части кнопок на левую сторону.
  • +2
    Мои почтения автору. Казалось бы такая обычная нынче вещь как клавиатура, но взглянув на процесс ее изготовления начинаешь задумыватья а не тая она и простая эта клавиатура.
  • 0
    Вот всегда восхищался усидчивостью и целеустремлением таких людей, как автор. Нужно иметь много терпения, чтобы такое сделать. Да, может это удобно — но стоит ли игра свеч? За это автору респект: не поленился и нашёл столько времени + написал статью. Я лентяй, по сравнению с автором :) Честно.
  • +1
    Пост хоть и длинный но читал с большим упоением. Хвала и уважение автору ждем продолжения.
  • 0
    Коричневые Cherry MX не щелкают.
    • 0
      И не только они. Из всего десятка с лишним ряда Cherry MX кликают только голубые, зелёные, и белые имеют «лёгкий клик».
  • +1
    я б такую купил, запускайте в производство ;)
  • –2
    У 5-ти человек на хабре руки не из того места растут…
  • 0
    Вот кстати, все хотел спросить — а почему все делают клавиатуры с полным ходом клавиш?
    Я имею ввиду островные в качестве альтернативы. Лично у меня на островной получается быстрее печатать только потому что пальцы не тратят время на то что бы пройти все то расстояние которое нужно что бы нажать кнопку.
    + пальцы располагаются в таком случае на высоте намного меньшей чем на обычной клавиатуре из-за этого когда пересаживаюсь на обычную все время цепляю бока кнопок пальцами.
    • 0
      Наверное, потому что у длинноходной механики максимальный срок службы.
      На по-настоящему эргономичных длинный ход не ощущается, пальцы ничего не цепляют.
      • 0
        Насчет срок службы: моя apple slim aluminium keyboard была подарена мне в 2008 году. Пользуюсь до сих пор — все клавиши нажимаются отлично.
        Гоняю ее и в хвост и в гриву — фактически это моя единственная клавиатура так как я ее даже к ноутбуку подключаю.
    • +1
      Не обязательно нажимать клавишу до упора, чтобы сработал переключатель, вполне достаточно до середины. На кликающих момоент переключения ощущается физически.
    • 0
      Погуглил. Оказывается, есть люди, которые не выносят клавиши с коротким ходом:
      Hitting short-throw keys on a metal plate makes my joints hurt so much.

      Сказано это про apple slim aluminium keyboard, которую автор

      I hate these with a passion.
      • 0
        А некоторые, наоборот, с длинным ходом… В последние пару лет лично у меня после нескольких часов печати на длинноходных начинают болеть суставы крайних фаланг. Пробовал разные модели — варьируется только время, результат всегда один.
        За мягкой ноутбучной такого не наблюдается.
  • 0
    Меня восхитил дизайн автора — очень чисто и четко получилось. Но я бы себе не стал такую делать. По моему опыту боль в руках психологического происхождения — от какого-то внутреннего напряжения руки не расслабляются в промежутках между собственно работой. В эту сторону нужно прежде всего копать.
    Мне чаще приходится чередовать клавиатуру с мышкой, так что моя цель научиться печатать одной (левой рукой) а правую держать всегда на мыши. Так что в вопросе «иметь или быть?» (haben oder sein) я выбираю «быть», то-есть подправить себя, научить печатать 5 пальцами одной руки.
  • +2
    X120e?
    • +1
      Да, а что?
      • +1
        Хороший ноутбук. Был. Вам Gobi2000 не нужен случайно?
        • +1
          У меня уже есть, спасибо. Единственный мод, который я не рискнул совершить с ноутом — это замена экрана на экран от X201, ибо не уверен в совместимости разъёма подключения.
          • +1
            Ого. Я только модем и ссд вставил. Правда, модем так и не заработал под linux, а потом ноутбук залил апельсиновым соком.
      • +1
        Вот Вы про что, я не понял вашу заметку про X120e, не заметил, что у Вас такой же нетбук, как и у меня :)

        Тормозить недавно начал в новой Xubuntu, добавил 2 Гб памяти, теперь летает. Чтобы проверить работу памяти открыл все установленные программы и кучу сайтов, лишь на 70% смог заполнить эти 4 Гб. Так что не правы те, кто называет этот нетбук тормозным (на geekhack), надо просто правильно его использовать.
        • 0
          А у вас процессор был одноядерный или двухядерный? Я сдуру купил с E240, и он был не очень быстрый. Моим задачам не хватало.
          • 0
            $ cat /proc/cpuinfo
            processor: 0
            vendor_id: AuthenticAMD
            cpu family: 20
            model: 1
            model name: AMD E-240 Processor
            stepping: 0
            microcode: 0x5000028
            cpu MHz: 750.000
            cache size: 512 KB
            fpu: yes
            fpu_exception: yes
            cpuid level: 6
            wp: yes
            flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc up rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat hw_pstate npt lbrv svm_lock nrip_save pausefilter
            bogomips: 2993.60
            TLB size: 1024 4K pages
            clflush size: 64
            cache_alignment: 64
            address sizes: 36 bits physical, 48 bits virtual
            power management: ts ttp tm stc 100mhzsteps hwpstate

            Перекодирует видео конечно очень медленно, но даже во время этого процесса можно работать.
  • 0
    Посмотрев на первую картинку, прочитал заголовок как «Клавиатура своими руками под свои ноги».
  • +1
    Это фантастика! Сам фанат «нетрадиционных» устройств ввода, но это лучшее! Жаль, что нет такого коммерческого решения… А самому уже просто нет времени делать.
    • +3
      Я попробую довести клавиатуру до того, что она будет подходить «95% населения», как обычно пишут на офисных креслах, сделать более прочной, корпус сделать сборным-разборным, добавлю печатную плату и, если всё получится, и стоимость такого набора не будет превышать $100, запущу на Massdrop. Пока есть кое-какие вещи, которые самого смущают, такие как слишком размашистый блок под большие пальцы — сам с трудом достаю до сиреневых кнопок, небольшие прогибы при быстрой печати, приводящие к пропускам нажатий и недостаточная высота подставок под запястья. Всё решаемо, но требует некоторого времени.
      • 0
        Держите в курсе, лично мне проект очень по душе!
      • +2
        Подкину пару идей, которых сам буду реализовывать во втором проекте:
        image
        * оранжевым цветом показаны дополнительные контактные группы
        A — клавиши модификаторы под большие пальцы
        BCD — три основных ряда (обратный наклон ряда B показан схематически)
        E — четвёрный ряд. Нажимается движением пальца в горизонтальной плоскости, от себя. Не отнимает места, но позволяет использовать с большим комфортом цифры и F-блок

        Дополнительно под клавишами Shift и Ctrl расположены тактовые кнопки (с большим усилием нажатия)
        Под Shift ставим Ctrl и наоборот. Что позволяет приложим чуть большее усилии одним пальцем нажать сочетание Ctrl+Shift
        Данное свойство можно использовать как переключение раскладки, так и для более комфортной работы с выделением текста.
        • +1
          Испытать бы конечно идею с кнопками двойного усилия нажатия, с одной стороны идея выглядит красиво, с другой, тугую кнопку долго не сможешь удерживать, я потому то и делаю вторую клавиатуру, что на первой используются туговатые Cherry MX Black, но даже они не сравнятся с ещё более тугими микриками.
        • 0
          В принципе, как показала моя не слишком долгая практика, нажатия Ctrl-Shift-буква удобнее, чем на обычной клавиатуре, а вот Ctrl-Shift-цифра приводит к необходимости удержания четвёрной клавиши, рыжей, что не удобно. Попробую настроить так, чтобы удержание рыжей приводило к временному преключению слоя на цифровые, а нажатие — к переключению на этот второй слой, но это приведёт к необходимости переключать слой туда и потом обратно, что выливается в большее количество нажатий.
          До четвёртого ряда даже мои относительно длинные пальцы не дотягиваются, а нажатие ногтём удаются у меня слабо (сейчас попробовал на перевёрнутой к себе кнопками клавиатуре), всё время хочется вытянуть палец и нажать кончиком.

          Идея с двойной силой нажатия хороша, и в принципе тактовая кнопка отлично встанет под штырь MX'а.
          • 0
            Есть с двойными кнопками одна проблема, и финального решения у меня пока нет…
            Основная кнопка должна быть подвижной, как минимум на 1 мм по вертикальной оси. Из этого следует, что она становиться плохо закреплённой.
            Первый вариант поставить кнопку на «большую» тактовую и прикрепить намертво. Всю нагрузку будет нести именно тактовая, но ремонтопригодность падает до нуля.
            Второй вариант установить основную кнопку на подвижную раму (именно этот вариант на картинке, синим обозначены шарниры).

            Шарнир вместе с рычагом для ряда E позволяют с лёгкостью нажимать тугую тактовую кнопку даже лёгким касанием ногтя. Использовать в данном месте полно ходовую кнопку действительно будет не удобно.
            • 0
              По идее, есть тактовые кнопки, расчитанные на большую силу нажатия, чем даже самые тугие MX, вот, например, аж на 360 грамм против 70 грамм для MX.
              • +1
                Ого, 360 грамм усилие нажатия. Пожалуй это даже будет много. Я прикидывал перекрытие раза в полтора от основной кнопки, ну максимум в 2.
                • +1
                  Ну, есть и все промежуточные варианты тоже, 50, 60, 70, 80, 100, 110, 130, 160 грамм. Так что идея выглядит реализуемой. Вот конструкцию крепления я пока себе представляю плохо.
                  • 0
                    Cherry MX срабатывает где-то посередине, тактовую кнопку можно поставить рядом с кнопкой точно под колпачком, чтобы край колпачка нажимал на неё.
      • 0
        С удовольствием приму участие в покупке на Masssdrop.
        По цене в $100 вряд ли будет возможно уложится, ErgoDox это уже показал.
        Лично я готов участвовать на ~$300.

        Пожелания и идеи (многое — опционально):
        — самое главное: заранее предусмотреть вариант с трекпоинтом (а может, и с двумя)
        — варианты расположения трекпоинта — между JHMN или под большой палец
        — симметричный дизайн — это даст возможность расположить трекпоинт в любом из 4-х мест, кому как удобнее
        — добавить 4-й ряд кнопок
        — поднять 4-й ряд кнопок почти вертикально, как F-кнопки на Maltron и Kinesis Advantage
        — использовать такое же соединение половинок, как и ErgoDox (4-х жильный провод, легко вынимается)
        — у всех руки разные, потому угол между основным блоком и блоком для мизинца должен быть регулируемым
        — в поставку включать заглушающие колечки
        — добавить USB-hub и возможность втыкнуть 2-4 флешки или подобных девайсов
        — в свете предыдущего пункта — возможно, интегрировать с YubicoKey

        По корпусу: если посмотреть на вашу клавиатуру с торца, параллельно поверхности стола — корпус будет треугольником. Нижняя его сторона практически не нужна. Верхнюю и боковую можно сделать раздельными, чтоб боковая вставлялась в верхнюю (по углом около 90 градусов) примерно как язычок дверного замка входит в дверной проём. В таком случае боковую сторону можно сделать в нескольких вариантах, и таким образом регулировать высоту клавиатуры (поворот кисти). Если же боковую сторону сделать не в виде прямоугольника, а в виде трапеции (верхняя и нижняя грань не параллельны), то можно будет регулировать не только угол поворота, но и наклон кисти. Для достижения достаточной крепости такого корпуса вероятно (не уверен, но мне так кажется) нужно будет использовать более толстое оргстекло, но в случае установки кнопок на печатную плату это не должно быть проблемой.

        Более детально — прошу в личку.

        Как будет готов проект на Massdrop — обязательно хочу его увидеть! :)
  • 0
    интересно, а можно в габариты кнопки затолкать подобие RFID метки (вроде вики говорит что можно) и избавится от контактов к кнопкам, вопрос конечно в быстродействии,
    и тогда любой человек сможет под себя клавиатуру сделать )))
    • +1
      Такая клавиатура есть, можно расставить кнопки в любое место на специальную поверхность. Смысла большого нет, кроме прототипирования клавиатуры, и потом уже изготовления по этому макету. К тому же, ставятся кнопки на плоскость, а зачастую хочется расположить кнопки в трёхмерном пространстве.
    • 0
      И ещё вот такой дизайн-концепт есть.
  • +1
    Ежели кого заинтересует ErgoDox, то сейчас самое время — перезапущен первый тур на МассДропе: www.massdrop.com/buy/ergodox
    • +2
      Вот я и получил свою посылочку от Massdrop: ErgoDox + MX Clear + Keycaps, ну и прочая мелкая требуха.
      Unboxing сфотан, процесс сборки тоже будет документироваться, равно как и использование.
      Господа, желаете ли вы видеть топики по этим темам?
      Свои голоса направляйте в карму, ибо со своей текущей публиковать топики не могу.
      • 0
        За плюс к комменту спасибо, но увы он никак не влияет на мою возможность создавать топики в не-профильных хабах «Железо», «Гаджеты. Устройства для гиков», «DIY или Сделай Сам».
      • +1
        Поздравляю! Теперь осталось собрать, и научиться на ней работать. Я как раз недавно собрал CatBoard ][, сейчас готовлю статью для публикации, и коллега себе такую же собрал, сейчас как раз учится на ней работать, необходимо привыкнуть, ведь к стандартной привыкали годами. Карму уже давно плюсанул, больше одного раза не дают, как говорится, береги карму смолоду :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.