Вы наверняка слышали про эту клавиатуру. IBM Model M называют «лучшей клавиатурой для набора текста», «легендарной неубиваемой клавиатурой», непременно добавляя «таких больше не делают». К постам на Reddit об обретении Model M часто добавляют к поздравлениям пожелание «наслаждаться этой клавиатурой в течение последующих десятилетий». Чем же всё-таки так хороша IBM Model M, чем плоха, и как её улучшить?
История
Немного теории. IBM Model M, в наиболее известной своей модификации под названием IBM Enhanced Keyboard производилась с 1985 по 1999 годы, и в слегка модернизированном виде (USB, Win-клавиши, позднее — уменьшенный корпус) продолжает выпускаться по сей день небольшой компанией Unicomp.
Главная изюминка — механизм buckilng spring («изгибающаяся пружина»), которому мы обязаны тактильностью и звенящим щелчком. Если вас интересуют подробности, особенности конструкции и перечень модификаций, то стоит почитать статью в англоязычной Википедии (надо бы перевести её) и в энциклопедии Deskthority.
Блеск и нищета IBM Model M
Сначала о хорошем. Вот, за что любят IBM Model M:
- Сам механизм buckilng spring. Та самая правильная тактильность, милая сердцу любого любителя механических клавиатур. Резкое изменение усилия нажатия, происходящее в момент изгиба пружины, точно соответствует моменту срабатывания. Кликающие переключатели Cherry MX blue и их клоны чем-то похожи, но отличаются точкой срабатывания, buckilng spring ни с чем не перепутаешь.
- Долговечность. Даже немного упрощённые клавиатуры четвёртого поколения и произведённые на изношенном оборудовании Unicomp обладают прочным корпусом, такой клавиатурой можно отбиваться в случае зомби-апокалипса. Корпус и клавиши сделаны из PBT-пластика, который, в отличие от ABS, практически не желтеет и не изнашивается со временем (затёртые до глянца клавиши для многих неприятны на ощупь). Впрочем, эти прочность и долговечность являются относительными, об этом я подробнее расскажу ниже.
- Ещё немного о клавишах. Клавиши расположены на изогнутой поверхности для облегчения доступа к верхним рядам. В клавиатурах с модульными переключателями такую изогнутость приходится имитировать, делая клавиши разного профиля. Model M использует клавиши одного профиля, как следствие — их можно легко менять местами в случае перехода на альтернативные раскладки (например, Dvorak или Colemak для латиницы). Вдобавок ко всем в большинстве Model M можно не вытаскивать клавишу целиком, а снять лишь верхнюю часть. Надписи на клавишах выполнены методом термосублимации, при котором краситель пропитывает пластик на глубину в несколько десятых миллиметра. С учётом высокой износоустойчивости PBT-пластика надписи получаются практически вечными, надёжнее только двойное литьё (doubleshot), применяемое, в основном, для ABS-пластика.
- Вес. Вряд ли вы будете регулярно перемещать эту клавиатуру, габариты не те. Для стационарного использования большой вес является плюсом — клавиатуру весом 2,5 кг сложно сдвинуть случайным движением.
- Сочетание винтажности и массового выпуска. Два десятилетия производства сделали своё дело. Несмотря на то, что многие Model M закончили свою жизнь на свалке или в центре по переработке, хватит их ещё надолго для всех нуждающихся. Работоспособность уцелевших экземпляров, как и поголовье новоделов продолжает поддерживать Unicomp, выпускающий запчасти практически для всех поколений IBM Enhanced Keyboard.
Идеальных клавиатур не бывает. Вот, что плохо в IBM Model M:
- Шум. В 1970-е в США (у нас этот процесс затянулся) люди пересаживались за компьютерные клавиатуры с печатающих машинок, и громкости работы клавиатур не хватало. В некоторых клавиатурах стоял соленоид, производивший дополнительное клацанье при срабатывании клавиши. Со временем всё изменилось, и в большинстве случаев ваши коллеги по офису или родные в квартире не обрадуются обретению вами «аудио-тактильной обратной связи». Вибрацию пружин можно погасить, сделав так называемый floss mod — в пружины вставляется кусочек зубной нити, звон пружин практически полностью исчезает, но при этом снизижается тактильность.
Dental floss mod. Снижение шума IBM Model M путём установки отрезков зубной нити в пружины. Автор — Chris Satterfield (Deskthority wiki, publick domain). Источник.
- Отсутствие модульности. «Бутерброд» из стальной пластины, резиновой прокладки, мембран, молоточков с пружинами и пластиковой панели с «колодцами» функционирует, как единое целое. Клавиатуры с отдельными механическими переключателями (Alps, Cherry и совместимых) в этом плане гораздо удобнее: неработающий переключатель можно перепаять за минуту, видов переключателей (тактильные, с кликом, линейные) доступны десятки на любой вкус, располагать их можно на клавиатуре как угодно. В случае с buckling spring ремонт занимает уйму времени, а модификация раскладки становится крайне сложной задачей.
- Прочность и долговечность относительны. Стоит вспомнить, что появление Model M было продиктовано необходимостью радикально удешевить производство в сравнении с предшественницей — Model F. Вкратце: в IBM Model F тоже используется механизм buckling spring, но вместо мембраны применена изогнутая печатная плата с емкостными датчиками. Предшественница поддерживала NKRO (см. ниже), отличалась большей прочностью, а емкостные датчики обеспечивали большую долговечность.
Мембрана в Model M совсем не похожа на мембрану в дешёвых 1000-рублёвых клавиатурах, никаких «пупырышков» с графитовым слоем. Она состоит из двух листов пластика с контактными площадками и разделяющего их пустого листа с отверстиями на месте контактных площадок. При изгибании пружины присоединённый к ней молоточек бьет по контактной площадке верхнего листа мембраны через тонкую резиновую прокладку, и площадка замыкается на нижний лист. Я ни разу не сталкивался с убитой мембраной ни в одной Model M, но у неё есть уязвимое место — контактный шлейф, дорожки можно повредить, сильно согнув шлейф по неосторожности. Паять эти дорожки практически бесполезно, особенно в местах изгиба. Остаётся только токопроводящий маркер или самоклеящаяся медная лента, но в большинстве случаев лучше заказать новую мембрану в Unicomp.
Расслоение сборки из-за лопнувшей заклёпки. Автор — Ripster. Источник.
Ахиллесова пята IBM Model M — крепление «бутерброда» с пластиной и мембранами. Верхняя пластиковая панель имеет многочисленные штырьки, которые после при сборке на заводе просто заплавляются, образуя своеобразную пластиковую заклёпку. Очевидно, что такая конструкция сильно затрудняет ремонт Заклёпок этих очень много, но со временем, по мере старения пластика и под воздействием вибрации (особенно, если владелец клавиатуры в порыве гнева начинает со всей силы лупить по клавишам), эти заклёпки начинают разрушаться. «Бутерброд» расслаивается, некоторые клавиши начинают плохо срабатывать, приводя к необходимости сильного нажатия, отчего соседние заклёпки тоже начинают разрушаться. На устранение этой беды как раз и уходит основная масса времени при ремонте IBM Model M.
- Главный недостаток мембранной конструкции — отсутствие NKRO (No key rollover), то есть способности воспринимать одновременное нажатие большого количества клавиш. При обычном наборе текста это не мешает, а вот в играх могут возникнуть проблемы. Дорожки от каждой клавиши на мембране не проведешь, они должны быть достаточно широкими. Диоды для построения классической клавиатурной матрицы к мембране тоже не припаять, так что клавиатуры Model M поддерживают только 2KRO, то есть воспринимают одновременное нажатие минимум двух любых клавиш. Я не зря выделил слово «минимум» — на самом деле не всё так плохо, так как топология строк и столбцов мембраны не соответствует физическому расположению клавиш. Например, можно нажать одновременно W, A, D и R (4 клавиши), но W+S блокирует почти все клавиши среднего ряда.
- Интерфейс. Даже если в вашем компьютере есть разъём PS/2, то клавиатура IBM Model M в нём скорее всего не заработает из-за аномально высокого потребления питания. Большая часть недорогих переходников не помогут. Или вам мог достаться терминальный вариант, с разъёмом RJ-45. Эту проблему легко устранить. При помощи недорогой микроконтроллерной платы с готовой прошивкой IBM Model M получит интерфейс USB и все прелести современных программируемых клавиатур в виде нескольких слоёв и макросов.
Ремонт
С достоинствами и недостатками разобрались. Если вы взвесили все за и против, подумали и купили IBM Model M, то, скорее всего, достанется в неидеальном состоянии — производство этих клавиатур было прекращено в 1999 году. Если вы не хотите заниматься ремонтом, винтажность техники не имеет никакого значения, но вам обязательна нужна механическая клавиатура с buckling spring, то лучше взять новую Unicomp. Классическая Unicomp с говорящим названием Classic (есть даже Classic 101, почти как две капли воды похожая на 101-кнопочную IBM Enhanced Keyboard за исключением шильдика) или чуть менее громоздкая Ultra Classic обойдётся всего в $84. Даже с учётом доставки (около $40) это будет недорого на фоне современного ренессанса механических клавиатур. Разница в качестве будет (слегка кривая печать на некоторых клавишах, не так аккуратно выглядящий корпус), но ничего фатального.
Если вам нужна именно «та самая», то стоит внимательно осмотреть клавиатуру при покупке. Практически любую убитую «самую неубиваемую клавиатуру в мире» можно восстановить, но это стоит времени и денег.
- Желательно получить целый корпус, без трещин и сколов. Новый корпус от Unicomp будет отличаться от IBM’овского, с учётом стоимости доставки проще целиком Unicomp и купить.
- Клавиши. Отсутствующие клавиши (целиком или верхние колпачки) — небольшая беда, но может привести к дополнительным денежным затратам. У продавцов IBM’овских клавиш на Ebay может не оказаться нужной, а минимальная стоимость доставки у Unicomp составляет почти $15.
- Работоспособность клавиатуры сразу определить можно далеко не всегда по причине отсутствия на месте порта PS/2 (даже и наличие его не гарантирует успеха). Не таскать же с собой внешний переходник. Постарайтесь хотя бы на ощупь оценить работу клавиш. Все должны срабатывать с примерно одинаковым кликом. Отсутствие клика может говорить о повреждении пружины/молоточка, но скорее всего дело в оторвавшихся пластиковых «заклёпках». С заказом пружин та же история, что и с клавишами — мелочь с возможно дорогой доставкой, а вот насчёт расслоения переживать не стоит.
- Если подключить клавиатуру при покупке не удалось и у неё оказался мёртвым контроллер, то это тоже можно исправить. Просто вам придётся спаять не конвертер, а контроллер целиком, раздобыв разъёмы для подключения шлейфа с мембраны (или использовав существующие).
Собственно, для ремонта вам понадобится следующее:
- Торцевой ключ на 5,5 м (7/32 дюйма), чтобы отвернуть четыре самореза, которые держат корпус клавиатуры. Дюймовые торцевые ключи в каждом хозмаге не лежат, но, как и многое сейчас, этот ключ проще заказать на Алиэкспрессе. Если вы не занимаетесь ремонтом Model M и Unicomp более-менее регулярно, то можно сэкономить, сделав ключ из … шариковой ручки! Нужно расплавить конец подходящей пластиковой ручки зажигалкой и быстро приложить его к головке болта.
- Винты M2×8 и гайки — 58 штук. Мелкие винты тоже могут быть проблемой, обычно в хозмагах можно встретить M3 и больше. На Алиэкспрессе мне их удалось найти от 200 штук, но вам для одиночного ремонта это может показаться излишним.
- Запчасти от Unicomp. Клавиши, молоточки+пружины (Pivot Plate & Spring Assembly), фторопластовые вставки-стабилизаторы (Stabilizer Insert), мембраны. У них есть даже наклейки на окошко со светодиодами (соответствующая классической IBM называется «Pebble LEDs on Bottom»). Для справки — цвет серых клавиш IBM (модификаторы, стрелки, Escape и др.) у Unicomp называется pebble. Сразу кидаться что-то заказывать до полной диагностики не стоит из-за дорогой заморской доставки.
- Teensy 2.0 или Arduino Pro Micro. На той и на другой можно запустить TMK или Soarer’s converter. Pro Micro дешевле, но немного сложнее прошивается и к нему не идёт в комплекте провод USB. Гоняться за оригиналами не стоит, китайские с Aliexpress сейчас работают без проблем, во всяком случае для этих целей.
- Разъём USB Type C с платой. Такой или вот такой. Крупную плату проще закрепить в корпусе. Не забудьте два резистора по 5,1 кОм.
Почему не использовать разъём микроконтроллера или не сделать несъёмный провод? Конечно, так сделать можно, что приведёт к существенной экономии, но mini-USB в Teensy или micro-USB в Pro Micro хлипковаты, а несъёмный кабель не всегда удобен и не так эстетично смотрится, а мы тут вроде как на совесть делаем, для себя, детей и внуков. Если всё же хочется сэкономить и лень возиться с распайкой Type C, то можно поставить старый добрый USB Type B, но аккуратно поставить его в Model M последнего поколения, имевшие несъёмный кабель, не получится из-за габаритов. Можно сделать внешний конвертер, но смысла в этом я не вижу, так как большая часть Model M музейной ценности не представляет, это всё-таки не Space-cadet какой-нибудь. Впрочем, при наличии регулярной необходимости проверки Model M и других клавиатур с интерфейсом PS/2 дополнительный внешний конвертер будет очень полезен.
- Канцелярский нож или скребок для керамических плит, чтобы срезать пластиковые заклёпки.
- Дремель или другой инструмент со сверлом 2 мм. Желательно ещё и шлифовальную насадку (со шкуркой или шарошку) для спиливания остатков заклёпок с пластиковой панели, так как ножом их срезать неудобно.
- Паяльник.
- Пружинные струбцины, четыре штуки. Можно заменить на большие канцелярские зажимы. Сильно упрощают процедуру сборки.
- Грунт и краска по металлу, если на клавиатуру когда-либо проливали жидкость.
Пример
Мой пациент для этой статьи — IBM Model M с партномером 51G8572, выпущенная почти 25 лет назад, 21 мая 1993 года. Съёмный витой кабель SDL–DIN, серый логотип, надписи на клавишах Alt зелёного цвета, правый Control имеет маркировку Ctrl/Act. Внутри установлен динамик, то есть, скорее всего, эта клавиатура была предназначена для работы с IBM RS/6000. Клавиатура в целом работает, но сверху на ней толстый слой грязи, а клавиши нампада какие-то ватные, срабатывают нечётко. Стоит её немного потрясти, чтобы услышать пересыпающиеся внутри корпуса оторвавшиеся головки пластиковых заклёпок. Задача: отмыть, сделать bolt mod, убедиться в работоспособности всех клавиш, спаять переходник на USB, разместить разъём USB Type C.
Начать стоит с мытья клавиш и корпуса. Выкручиваем четыре самореза, аккуратно приподнимаем и снимаем верхнюю часть корпуса — теперь снимать клавиши будет гораздо удобнее. Если снаружи просто грязно, то здесь просто ужас: пыль, волосы, крошки, скрепки, колония муравьёв-листорезов и крысиные трупы.
Клавиши можно снимать специальным инструментом (можно сделать его из проволоки), но в Model M гораздо быстрее будет просто подцеплять их снизу, только не отвёрткой, а чем-нибудь мягким, например, деревянной палочкой для еды. Пробел снабжён проволочным стабилизатором. Под другими длинными клавишами (шифты, Enter, Backspace и длинные нампадные) вы увидите фторопластовые вставки-стабилизаторы. Ломаться в них нечему, обычно их достаточно протереть спиртом. Отправляем клавиши в стирку, отделив верхние колпачки от собственно клавиш. В большинстве случаев достаточно тёплой воды с жидкостью для мытья посуды или стиральным порошком и нескольких часов для отмокания грязи. В тяжёлых случаях я использую ультразвуковую ванну, но иногда даже это не помогает и клавиши приходится оттирать вручную.
Отсоединяем контроллер. Открутите от пластины болт, держащий наконечник сурового заземляющего провода. Отсоединяем небольшой шлейф от дочерней платы со светодиодами.
Если у вас Model M последнего поколения или Unicomp, то внутренности будут выглядеть немного по-другому — небольшая плата контроллера вместе со светодиодами будет справа; в терминальных клавиатурах не будет светодиодов, при желании их можно будет добавить. Далее можно аккуратно приподнять «бутерброд» (сборку из металлической пластины, мембран, прокладки и верхней пластиковой панели, далее я буду называть её просто бутербродом), вытащить контроллер и отсоединить (аккуратно!) шлейфы. Перед мытьём корпуса стоит защитить «свидетельство о рождении» слоем малярного скотча, сверху дополнительно приклеив обычный.
Приступаем к разборке бутерброда. Даже если все пластиковые заклепки остались на месте и все клавиши работают, то для разборки и bolt mod’а всё равно есть две причины. Во-первых, делаем мы клавиатуру на совесть — для себя и будущих поколений (даже если через 20 лет появится какой-нибудь телепатический нейроинтерфейс, и клавиатуры начнут вымирать, то любители ретрокомпьютинга всё равно останутся). Если эти пластиковые штуковины чудом не отвалились, то, возможно, клавиатурой мало пользовались и стоит предотвратить эту напасть. Переходить на тёмную сторону и заклеивать места оторвавшихся заклёпок эпоксидной смолой стоит только в том случае, если вы бессовестный барыга и варвар. Эпоксидка продержится какое-то время, но скорее всего отвалится.
Последствия ремонта клавиатуры эпоксидной смолой. Автор — Ripster. Источник.
Разбирать «отремонтированную» таким способом клавиатуру будет сложнее. По той же причине сомнительной долговечности не стоит использовать вместо винтов саморезы. Во-вторых, разборка бутерброда сильно упрощает чистку пластиковой панели, весь налипший ужас можно будет смыть водой из-под крана, а не выковыривать его ватными палочками.
При наличии неработающих клавиш и/или оторванных заклёпок выбор очевиден — надо резать. Помните, что после снятия клавиш из «колодцев» теперь торчат ничем не защищённые пружины, так что бутерброд нужно положить на соответствующую подставку. Подойдёт обувная коробка. Срезаем оставшиеся заклёпки ножом, скребком для плиты или другим подходящим инструментом. Соблюдайте технику безопасности, пластик достаточно прочный, режьте от себя. Одна–две заклёпки могут оказаться под бумажной наклейкой. Перед снятием пластины края всех заклёпок должны быть полностью срезаны, пластина должна выниматься без особенных усилий. Тянуть пластиковую панель за края или углы, а тем более использовать отвёртку ни в коем случае нельзя — треснет. Снимаем пластину и три мембранных слоя. Если на клавиатуру проливали жидкость, то вы сразу это заметите по тёмным разводам на контактах мембраны и ржавчине на металлической пластине. В каких-то случаях поможет протирка изопропилом, в случае сильного окисления придётся менять мембрану. Под мембранами будет тонкий резиновый коврик, обращайтесь с ним аккуратно, чтобы не порвать. Наконец, в самом низу останется лишь пластиковая панель с пружинами/молоточками. Их можно просто аккуратно вытряхнуть или перенести их на полоски малярного скотча, чтобы потом не тратить много времени на установку. Пружины нужно внимательно осмотреть на предмет ржавчины. Помните про хрупкость пластиковой панели! Она снабжена канавками, «линиями сгиба», но может треснуть и поперёк при неосторожном обращении.
В моём экземпляре трещина в пластиковой панели и так образовалась — от левого торца и по «линии сгиба». Сначала оторвалась пара заклёпок в районе нампада и одна—две клавиши стали «ватными». Пользователь начал нажимать на клавиши сильнее, отвалилось ещё несколько заклёпок и так далее, пока по клавиатуре не пришлось уже долбить, чтобы добиться срабатывания клавиш. С bolt mod’ом подобная трещина не опасна, но торец стоит заклеить. На панели по-прежнему остались штырьки заклёпок. Их можно сточить полностью, оставив несколько штук для удобства точной укладки мембраны, но нужно по крайней мере срезать утолщения сверху.
Устанавливаем металлическую пластину обратно, зажимаем её пружинными струбцинами. Перед сверлением желательно наметить отверстия. В Model M первого поколения для вертикальных клавиш применялись проволочные стабилизаторы, которым могут помешать головки соответствующих винтов, придётся искать винты с плоской головкой.
Проволочный стабилизатор вертикальных 2U-клавиш в ранних IBM Model M. Автор — Sandy (Deskthority wiki, publick domain). Источник.
Я использовал алмазную конусную насадку, но можно это сделать и паяльником с тонким жалом. Самый нижний ряд сверлить не нужно — этот край панели прижмётся выступами на дне корпуса. После зачистки и сверления будет куча наэлектризованной пластиковой стружки и опилок. Не пожалейте времени, чтобы хорошо промыть и высушить панель (помните, что трясти её нельзя!).
Собираем бутерброд обратно. Панель на подставке, вставки стабилизаторов, молоточки (убедитесь, что все лежат ровно), не забываем, что не во все посадочные места устанавливаются молоточки. Затем остаются коврик, мембраны (их невозможно положить не той стороной, главное — положить ровно) и пластина сверху.
Зажимаем по краям четырьмя струбцинами или канцелярскими зажимами, переворачиваем, вставляем винты, крутим гайки. Сильно затягивать не нужно, винты должны выступать на 1–2 нитки резьбы. Ставим обратно клавиши и проверяем их работу. Если что-то не щёлкает как надо, то нужно попробовать немного ослабить затяжку винтов вокруг проблеммной клавиши.
С механикой закончили, займёмся электроникой. Разъём SDL на контроллере будет мешать, нужно от него избавиться. Отпаять его, не отслоив дорожки, сложно, во всяком случае для меня, поэтому я просто аккуратно разломал кусачками пластиковый корпус разъёма и выпаял контакты по одному. Цоколёвка интерфейса PS/2 на освободившихся отверстиях выглядит так:
В качестве конвертера я использовал Teensy 2.0 (китайский клон) с прошивкой Soarer’s converter. Добрый человек под ником Soarer разместил пять лет назад на Geekhack и Deskthority прошивки, позволяющие подключить клавиатуры XT, AT, PS/2 и терминальные IBM по USB со следующим функционалом:
- Переназначение клавиш, слои и макросы.
- Обновляемая конфигурация. В отличие от TMK/QMK, где конфигурация является частью прошивки, и при любом изменении приходится компилировать прошивку и перешивать контроллер, SC позволяет подгрузить небольшой конфигурационный файл в EEPROM.
- Поддержка NKRO (если его поддерживает исходная клавиатура).
- Пять дополнительно подключаемых к микроконтроллеру клавиш — педаль или клавиши, добавленные при модификации клавиатуры.
- Подключение светодиодов (NumLock, CapsLock, ScrollLock). Полезно для терминальных клавиатур IBM и ранних Model M для IBM PC XT, где своих светодиодов нет.
К сожалению, Soarer пропал с клавиатурных форумов в 2014 году, о судьбе его ничего не известно, исходных кодов он не оставил, но были попытки дизассемблирования. Существует примерно аналогичный, за исключением обновления конфигурации проект TMK от не менее легендарного Hasu.
Итак, заливаем Soarer_at2usb_v1.12_atmega32u4.hex в Teensy 2.0 при помощи Teensy loader (как я уже упоминал, можно использовать Arduino Pro Micro, но там появляется возня с драйверами и утилитами) и припаиваем его к контроллеру клавиатуры: Data к PD0, Clock к PD1 и землю с питанием. Можно сразу подключать к компьютеру и проверить все клавиши через Switch Hitter.
Остаётся лишь всё красиво оформить и поместить клавиатуру в корпус. Я выбрал прочный и современный USB Type C, но, как упоминалось выше, можно сэкономить, заменив его на Type B или вообще сделать кабель несъёмным. Цоколёвка разъёма Type C выглядит так:
Для наших целей нужны питание (A4, B9, B4, A9), земля (A1, A12, B1, B12 и корпус разъёма), пара для передачи данных — D+ (A6, B6) и D− (A7, B7). CC1 и CC2 нужно подключить к земле через резисторы сопротивлением 5,1 кОм. Подключаем к огрызку идущего в комплекте с Teensy USB-кабеля: чёрный — земля, красный — питание, зелёный — D+, белый — D−. Немного пластика, суперклея, изоленты — и разъём готов. Закрепим стяжкой и клавиатура готова.
Воспользуемся функционалом конвертера. Я взял за основу layer example.sc, простую конфигурацию, назначающую CapsLock в качестве модификатора FN1 и FN1+I/J/K/L в качестве стрелок. Можно добавить ещё несколько клавиш (PageUp/PageDown рядом с этиими дополнительными клавишами, Win-клавиша, CapsLock и несколько мультимедийных на F5–F11):
Стоит лишь сказать scwr конфигурация.sc
— она скомпилируется в бинарную и зальётся в клавиатуру.
Вот и всё, удачного всем сверления и клацанья. Огромная благодарность клавиатурным гикам Soarer, Hasu и Ripster за их неоценимый вклад в клавиатуроведение.
Источник