Клавиатура Ant-keyboard. Часть 2 — редизайн и переосмысление концепций





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

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

Содержание статьи:

Этапы редизайнаВ целом клавиатура претерпела три этапа редизайна, и на каждом в отдельности я остановлюсь:

Первый редизайн

Грубая, предварительная 3D модель:




Первое что бросается в глаза, так это то, что клавиатура теперь разделена на две половинки, в отличие от оригинального концепта.
Произошло это по двум причинам:
  1. Во первых я отказался от трекбола в центре клавиатуры.
  2. Во вторых, изначально передо мной стояла проблема угла между половинок относительно ширины плеч пользователя. Я хотел сделать половинки с изменяемым углом между ними, так как это сделано в клавиатуре Kinesis Maxim, чтобы пользователь мог настроить угол под свою ширину плеч, но потом понял что это на самом деле не нужно, и просто разделил половинки на отдельные части.
Также, в прошлой статье я писал о проблемах с горячими клавишами, стоящих передо мной, и этот редизайн был первой попыткой исправить их.

И первая идея, пришедшая мне в голову, и которая должна была помочь с решением этой проблемы, была идея использовать концепцию двойных клавиш.
Суть идеи проста: двойные клавиши, это клавиши, которые в одном случае работают как ctrl, например, когда их нажмёшь в сочетании с другой клавишей, например клавишей «C», а в другом случае работают как enter, в случае если её нажали одну.

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

Но так или иначе оставил эту концепцию, но уже в качестве опциональной «фишки», а не обязательной особенности клавиатуры.

Так что проблему с различными сочетаниями хоткеев я исправил перелопатив блоки клавиш под большие пальцы, и добавив дополнительно 6 клавиш в центр клавиатуры.

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

Последнее что я сделал: добавил F(n) ряд. В предыдущей моей задумке он был спрятан в fn-слой, но конкретно опять-же горячие клавиши, специализированные приложения и игры заставили меня пересмотреть эту точку зрения, и я скрипя зубами таки вернул F(n) ряд на место.

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



Второй редизайн

Кликабельно






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

Рассказывать что это я не буду, просто покажу картинкой:


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

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

Ну и плюс у кнопок я сделал различную высоту и форму относительно ряда в котором они находятся. Сделано это для их большей доступности относительно их положения:




Третий редизайн

Ну и наконец последний на данный момент редизайн, третий по счёту.

В целом, о внешних изменениях вы можете судить из рендеров 3D модели:

Рендеры:
Кликабельно
























Примеч.: Для моделирования и рендеринга использовались Blender 2.69 + Cycles Render.

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

Также в очередной раз я перелопатил все клавиши под большие пальцы, в частности убрав клавишу meta (altGR), и заменив её на сочетание ctrl+shift. Сделано это как не сложно догадаться опять-же для более быстрого и удобного управления хоткеями. А также потому, что на самом деле во втором альте нет особо сильной нужды. Но его легко можно вернуть на место. Как это можно будет сделать я расскажу чуть позже.

Super тоже переименовал в Win, дабы не вызывать непонимания у пользователей ОС Windows. А пользователям Linux и так будет понятно что это Super. Конечно есть ещё и Mac OS, и у неё есть также свои обозначения и названия, но это совершенно другая история.

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



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

Клавиши, базовая позицияНа расположении базовых клавиш можно особо не заостряться, просто потому что в предыдущей статье я детально рассказал почему я выбрал именно такое расположение клавиш модификаторов, почему кнопки под мизинцы расположены на ряд ниже и так далее. Но тем не менее, выложу резюмированную версию своих изысканий:
  1. Клавиши модификаторы, и системные клавиши смещены к большим пальцам. Причина: мизинец и большой палец в стандартных клавиатурах нагружены не сообразно их силе.
  2. Колонки под мизинцы смещены на ряд вниз в связи с длиной самих мизинцев.
  3. Добавлен F(n) ряд, и 6 системных клавиш в центр клавиатуры. Выше, в описании редизайнов были сказаны причины этого.
  4. Вместо пяти клавиш под большие пальцы я оставил 4. Причины: мне кажется неудобной концепция расположений клавиш под большие пальцы в два ряда.


РаскладкиРаскладки не особо отличаются от стандартной клавиатуры, и в этом легко можно убедиться:

Базовая латинская:


Базовая кириллическая:


Серым отмечены клавиши стартовых позиций.

Также нужно сказать что в клавиатуре 74 клавиши, но она полностью эмулирует стандартную 100+ кнопочную клавиатуру.
Единственные различия в базовой конфигурации заключаются в отсутствии кнопок caps lock, num lock, scroll lock, altGR и menu, но их легко можно будет вернуть по надобности.

Также функции навигации и numpad спрятаны в fn-слой. Причина такого решения проста: я хотел сделать клавиатуру в которой не нужно будет смещать руки при работе. Но, если вы часто пользуетесь numpad'ом, то fn-слой можно временно заблокировать, дважды нажав (к примеру) fn клавишу. То же самое справедливо и для shift.

Сам по себе fn-слой выглядит так (не хватает только мультимедиа кнопок на функциональном ряду):
Fn слой:


Ещё одна важная ремарка: как мы видим, в навигационном блоке 6 стрелок, и две из них, которые находятся на клавишах 'W' и 'R', действуют как стрелки влево и вправо с зажатым ctrl. То бишь при навигации они перемещаются в тексте не посимвольно, а пословно.



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


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



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

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

От тензометрического датчика я, под влиянием philpirj отказался в пользу датчика на эффекте холла.

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

Но недостатки тоже имеют место: готовых трекпоинтов я так и не нашёл, так что судя по всему мне придётся «изобретать» трекпоинт на эффекте холла самостоятельно, используя к примеру модуль EasyPoint N40P107. Eщё недостатки заключаются в том, что состоять такой трекпоинт будет из двух компонентов, он не наклоняется, а смещается в стороны. Так-же стоимость данного модуля достаточно велика.

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

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

А если подробнее то картина выглядит так:


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

Далее, левый джойстик в качестве кнопки имитирует левый клик мыши, правый имитирует правый клик. Нажатые кнопки одновременно имитируют средний клик мыши.

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



ПерепрограммируемостьОдной из новых фишек клавиатуры является полная её перепрограммируемость, и пользователь сможет назначить на различные кнопки различные команды. Причём программирование подразумевает не только смена назначения клавиш, но и создание макросов, создание дополнительных слоёв, помимо (или взамен) слоёв ctrl, shift, fn ну и так далее.

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

Задаются все параметры в специальной программе-конфигураторе. Люди которые пользовались геймерскими мышами и клавиатурами с макрокнопками знают что имеется ввиду.



Примеры пользовательских раскладок

И пока мы далеко не ушли, вот вам примеры раскладок которые пользователь может создать для себя:

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

Пример раскладки для игры StarCraft II:


Немного пояснений по данной раскладке:
Цифры отвечают за контрольные группы, F(n) клавиши отвечают за внутриигровые меню.

То что отмечено фиолетовым, это кнопки Q W E R, предполагается что на них будут расположены все основные «абилки» в раскладке хоткеев. По крайней мере в моей раскладке хоткеев это так, то бишь мне не приходится тянуться в левую часть клавиатуры.

Слева кнопки «WG», «army» и «worker».
«WG» означает WarpGate, которая выбирает все варпгейты, а кнопки «army» и «worker» всю армию и бездействующего рабочего соответственно.

Справа кнопки передвижений а-ля атака, удерж. позицию и т.д.

Снизу кнопки под большие пальцы, а именно: tab и shift+tab (одна кнопка которая нажимает две).

В самом низу находятся две кнопки, которые как раз и демонстрируют пример работы двойственной ф-ии кнопок, о которой я рассказывал в самом начале.
И если их нажать один раз, без сочетания с другими кнопками, то они будут работать как space и backspace, а если их нажать вместе с другими кнопками из основного ряда, то они будут работать как shift и ctrl.

И да, если кто любопытствует: я играю за зергов

, хотя намерен «свичнуться» за рандом.
Пример раскладки для игры Counter Strike:


Тут думаю особо ничего пояснять не нужно, но тем не менее: «WASD» — перемещение, «E» — использовать, «R» — перезарядка, «O» и «B» — меню покупок, ну и так далее.

В самом низу, на кнопках под большие пальцы: ctrl, то бишь «присесть», ctrl+space, то бишь «прыжок пригнувшись», space — обычный прыжок, и shift — неслышная ходьба.

Тут же возникает вопрос: мы перепрограммируем нашу клавиатуру в кейпад, и выходит так что мы не сможем печатать на ней пока играем? А печатать в SCII, CS или в WoW и других онлайн играх приходится, ибо это всё-же социальные онлайн игры, где общаться с другими игроками необходимо.
Проблема разрешается очень просто, и для переключения кейпада обратно в клавиатуру можно «забиндить» какое-либо сочетание клавиш. Или-же поступить ещё проще: пока мы находимся в игровом режиме нажать enter, и до тех пор пока мы снова не нажмём enter, наш кейпад будет функционировать как обычная клавиатура.

Типографский слой:
Ещё один пример раскладки не столь глобальный как предыдущие два, но может оказаться весьма полезным дизайнерам. Имеется ввиду типографский слой придуманный Ильёй Бирманом:


И при нажатии, например, alt+c будет введён в текст символ копирайта, то бишь "©".



Сниппеты и макросы

Есть возможность создавать сниппеты и макросы, активирующиеся по желанию пользователя.

Смысл макросов очень простой: есть некий повторяющийся текст, который нужно изменить в нескольких местах. И макросы добавляют (и/или заменяют) в этом тексте что-либо по условию или без. Заменяемый или добавляемый текст тоже может меняться по условию.

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

Со сниппетами всё обстоит ещё проще: написали слово «if», нажали кнопочку tab, и автоматически в текст вставилась конструкция такого вида:
if ()     {     } else     {     } 
Плюс текстовый курсор будет переведён внутрь круглых скобочек, чтобы можно было сразу начать писать проверочное условие.



Quasi-режимы

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

Смысл её прост: для того чтобы нажать ctrl+shift+alt+f1, к примеру, нам не придётся выкручивать руку в немыслимой позе, а просто и последовательно нажимаем сначала кнопку quasi, затем не отпуская эту кнопку нажимаем и отпускаем кнопку 'C', которая после нажатия quasi превратилась в ctrl, затем, после того как отпустили 'C', нажимаем 'S', которая последовала примеру клавише 'C' и на момент нажатия клавиши quasi превратилась в shift. Ну и так далее, пока не нажали полную комбинацию из желаемых кнопок. После отпускаем quasi, и вуаля — желаемая комбинация отправлена в компьютер.

Данная концепция в теории выглядит весьма интересной, и чисто гипотетически позволяет уменьшить количество кнопок вообще до абсолютного минимума: до 30-35 кнопок и даже меньше, с сохранением всех функций стандартной клавиатуры. Это как-раз и есть то самое «кардинальное изменение подхода к проектированию клавиатуры», о котором я рассказал чуть раньше.

Единственное только что мне не нравится, так это то, что горячие клавиши вводятся теперь комбинациями, а не сочетаниями, но я думаю что емаксистам эта идея понравится.

Подробнее про quasi режим можно прочитать у моего друга в блоге: ibnteo.klava.org/keyboard/quasi

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

И тут же возникает вопрос: почему бы мне на самом деле не сделать клавиатуру с этой идеей? Ответ прост: я боюсь что данное нововведение может отпугнуть потенциальных покупателей тем, что клавиатура станет чрезмерно нестандартной, а посему я пока решил начать с клавиатуры, которая максимально близко расположена к стандарту. Но естественно мы с ibnteo постараемся реализовать подобную клавиатуру, ибо… не пропадать же хорошим идеям?



В качестве заключения по данному блоку:

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



Мои собственные раскладки букв и символовВ прошлой статье я брался не только за создание самой клавиатуры, но и за создание раскладок клавиатуры, причём не только букв, но и символов.
И сразу скажу что я отказался от раскладок представленных в предыдущей статье. Ибо как правильно выявил cubuanic, раскладки были неоптимальными, и он же дал ссылку на статью по разработке раскладки workman, которая помогла мне «встать на путь истинный».

И я перевычислил раскладки для русского и английского языков, и итогом стали новые раскладки, которые заткнули за пояс и dvorak, и colemak, и даже workman, принципы которого я использовал при вычислении.
Пруфлинк: patorjk.com/keyboard-layout-analyzer/#/load/vpgT2Gpl
Там она значится под именем «Another Method NON» со своим отзеркаленным аналогом.

Но конечно данные эти относительны, и результаты тестирования будут варьироваться от текста к тексту.

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

Английская:


Русская:


И тут же, адаптация этих раскладок под стандартные клавиатуры:

Английская:


Русская:


Если вам любопытно: данная статья целиком и полностью написана на этих раскладках, то бишь как я и обещал в предыдущей статье — я выучил новые раскладки достаточно быстро.

Тут же возникает вопрос следующего содержания: на рендерах явно видно что там обозначены стандартные раскладки, а не раскладки указанные здесь, так почему я вообще вычислял их, рассказываю о них, вообще как они относятся к проекту клавиатуры?
Дело в том что эти клавиатуры идут на массовый выпуск, а они, как мы можем лицезреть — достаточно нестандартны, что может вызывать различного рода опасения у возможных покупателей (основное опасение касается переобучения и перепривыкания, мол слишком много времени уйдёт на это, что на самом деле не так), а если ещё и раскладки будут нестандартными, так вообще кошмар!!!

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



ЗаключениеВ целом по отчёту о редизайне и по прояснению текущего состояния проекта у меня всё. Остались последние подготовки для прототипа, далее идёт возня с 3D печатью, пайкой и сборкой, и можно уже приступать к первым практическим тестам клавиатуры.

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

Источник: habrahabr.ru/post/218157/