Pull to refresh

Подробная инструкция по изготовлению сплит клавиатуры на основе ATmega32U4. Аналог Iris / Jiran своими руками

Reading time13 min
Views49K

Моя самоделка


image

Перед изготовлением своей клавиатуры я наметил следующие цели:

  1. Максимально возможный тактильный комфорт.
  2. Добиться того, чтобы совершенно не было необходимости смотреть на клавиатуру при работе, чтобы она никоим образом не отвлекала внимание на себя, чтобы даже смотреть на нее было бессмысленно. Именно поэтому на моих колпачках нет надписей.
  3. Клавиатура — это мой рабочий инструмент, сосредотачиваемся на ее функционале и удобстве. Внешний вид совершенно неважен. Кто не может жить без RGB подсветки и внешней броской красоты – нам с вами не по пути, эта статья совсем про другое. В этой статье я вас научу как недорого и просто сделать себе удобный и функциональный инструмент для работы.
  4. Удобство перевозки. Сделать компактное и удобное для переноски устройство.

Получилось ли у меня этого добиться? Смотрите, в мой рюкзак помещается без проблем:

image

Предупреждение – 90 сжатых картинок: я постарался написать статью максимально «разжеванной» — понятной максимально широкому кругу лиц, в том числе — технически не подкованным и совершенно не разбирающимся в программировании. Поэтому я заранее извиняюсь, если у кого-то сложится впечатление, что в статье много воды или слишком много картинок.

Клавиатура с коротким HDMI кабелем:

image

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

image

На фото ниже — колпачок (кейкап) и резиновые кольца для них:

image

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


Муки выбора раскладки


Итак, поехали. Мы хотим сделать сплит-клавиатуру, гуглим «Iris keyboard», выглядит она примерно так:

image

Можно было бы такую и купить, но на ней отсутствуют кнопки «Х» и «Ъ» и переучиваться на новое их расположение у меня нет никакого желания. Так клавиатура неплоха, но нам она не подходит. Наш соотечественник придумал удобный вариант– «jian keyboard», смотрим:

image

Но и он не удобен, получился концепт, годный лишь для работы в текстовых редакторах. На мой взгляд, он тут перестарался, устранив верхний ряд цифровых клавиш. Есть доработанный вариант – «jiran keyboard»:

image

За этой работать будет уже комфортнее, в отличие от предыдущей. Мне при работе в Word клавиши курсора, F1-F12, блок «Delete, PgDown и т.д.» вполне комфортно нажимать через Fn клавишу. Правой руке намного меньше приходится тянуться к мышке – это огромнейший плюс, который начинаешь понимать, только прочувствовав его. На этой основе можно начинать разработку своего варианта. Первый мой прототип выглядел вот так:

image

Могу сразу сказать – пять клавиш под большой палец – это много. Палец достает с трудом до четвертой кнопки, а до пятой приходится тянуться. Это я тогда пожадничал. И, забегая вперед, скажу – очень не хватало курсорных клавиш. На нынешней раскладке у меня под большими пальцами по 4 кнопки, расположенные по дуге. Мне – удобно:

image

Переходим по ссылке: keyboard-layout-editor и в вкладке Presets выбираем Ergodox. Кнопки можно удалять, добавлять, поворачивать и двигать по своему усмотрению. Потренируйтесь, там нет ничего сложного.

image

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

Википедия: Пальцевый индекс

Какое это имеет значение? Возможно, вам придется подкорректировать расположение вертикальных рядов под свои индивидуальные особенности. Мне было проще, необходимости в корректировке не было:

image

Это может показаться вам малозначительным нюансом, но из таких вот маленьких деталей и складывается конструктор под названием «Моя идеальная клавиатура».

После многочисленных корректировок у меня получилось вот так:

image

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

Возможно, я приведу пример не самый удачный, но он показателен. Пилотам Формулы1 сиденья и спинки к ним ставят изготовленные по их слепку тела, а не так называемые «спортивные», выпускаемые на заводском конвейере. В самом деле, почему?

Почему я реализовал отдельным блоком клавиши курсора помимо тех, которые нажимаются через модификатор МО(2)? Я проектировал клавиатуру универсальной, на которой можно еще и поиграть. Попробуйте поиграть в «X3 terran conflict»/«X3 albion prelude» с курсорами через модификатор и вы взвоете. Переназначить кнопки можно, я даже делал четвертый слой именно под игру, но получалось не очень удобно. В этой игре практически вся клавиатура задействована, кто играл – тот знает.

Мы можем узнать получившееся количество кнопок:

image

Приступаем к покупкам


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

МЕХАНИЧЕСКИЕ ПЕРЕКЛЮЧАТЕЛИ

А после прочтения я настоятельно рекомендую вам прошвырнуться по магазинам, где продаются клавиатуры с механическими переключателями и собственными пальцами ощутить разницу между синими, коричневыми и остальными свитчами. Меня полностью устроили коричневые Gateron, их я и купил. Но только не у наших барыг с наценкой 300%-500% и еще выше. На Алиэкспрессе есть все, нужно лишь хорошо постараться поискать.

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

Переключатели Gateron на Али, которые купил я:
Gateron
Существуют следующие типы колпачков для кнопок:
Все, что нужно знать при выборе профиля кейкапов

image

Я пробовал разные, но остановился на самых низких DSA, на них мне удобнее всего! Помните, у вас может и скорее всего будет иначе. Помните? Идем в магазин и пробуем, пробуем. Это важный кирпичик удобства вашей клавиатуры. Брал тут, качество хорошее:
PBT DSA

Следующее, что нам нужно, ATmega32U4 5Вольт 16 МГц. Их много модификаций есть:
Atmega32U4

Мне же достаточно будет этого с головой:
Pro Micro ATmega32U4 5V 16 МГц
Диоды. Я не заморачивался с беготней по радиомагазинам, заказал тоже на Али:
100 шт 1N4148 DO-35

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


Я по наводке приобрел эту смазку, жалеть не пришлось: Смазка.

Резиновые колечки для колпачков.

image

Нужны для уменьшения шума от печати, брал белые 9х4х2.5, нареканий нет:
Резиновые колечки

Кабель Micro USB для подключения платы к компьютеру. Так-то у меня их полно, но нужен был именно угловой, с ним намного удобнее (смотри фото в начале статьи):
Кабель Micro USB

Клавиатуру я сделал разделенной на два блока. Эти блоки нужно было соединить проводами. Поначалу я соединил блоки шлейфом от компьютерного СD привода.

image

Временное решение, для постоянного использования не советую. Лучше сделать съемный соединительный кабель, проще будет в дальнейшем. Хорошо подошел кабель HDMI, у него 19 жил при нужных 12 (5 строк + 7 столбцов). Резать кабель мне очень не хотелось, и я приобрел разъемы для него:
разъем HDMI 19 Pin
Вопрос: можно ли использовать длинный кабель HDMI? Можно, и даже — нужно! Просто посмотрите на фото:

image

Клавиатура не сползает с подлокотников. Запястья рук лежат на подставках под ладони. Каждая подставка двумя магнитами держится за свой блок клавиатуры. Провод HDMI ногам не мешает совершенно. Ничего никуда не уползает, получилось просто круто.
Вам, возможно, пригодятся такие переходники:
HDMI кабель-переходник 270 180 90 градусов

image

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

image

Это я давненько сфоткал. Тот пост уже вряд ли существует, так что только в таком качестве.
Сложим мои расходы, получилось ~38,5$:

image

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

Делаем верхнюю панель и корпус клавиатуры


Возвращаемся к нашему онлайн-конструктору. Надо ввести данные, какой тип свитча мы используем:

image

И следующая картинка:

image

Сейчас нам понадобится вот эта вкладка:

image

Комбинацией Ctrl+A выделяем весь текст и копируем его в буфер обмена Ctrl+C. Открываем ссылку:
Plate & Case Builder

image

И получаем вот такое:

image

Не повезло, изображение расползлось. Не беда, поправим в Photoshop:

image

Отправляем печатать это на принтер. Измеряем линейкой размеры квадратов на бумаге – везде должны быть 14 мм. А расстояние между квадратными отверстиями должно быть не менее 5 мм, иначе колпачки будут задевать друг друга. У меня сохранились распечатки промежуточных результатов:

image

Это мы только что распечатали трафарет, с помощью которого будет удобно делать разметку для отверстий под клавиши. Далее вы должны выбрать материал верхней панели вашей будущей клавиатуры: алюминий, стеклотекстолит, оргстекло, акрил, поликарбонат… Материалов очень много всяких разных, я же выбрал оргстекло. Используйте материал толщиной не более 2 мм, иначе кнопки не будут держаться на пластине – защелки не смогут зацепиться.

image

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

image

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

image

image

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

image

Это верхние пластины первого варианта, в которые вставляются кнопки. Нижние пластины точно такие же по размерам, только без отверстий под свитчи. Осталось только придумать способ крепления верхних пластин к нижним. Я реализовал крепление на стойках, как материнские платы в компьютерных корпусах. В нижних пластинах просверлил отверстия такого диаметра, чтобы в отверстия помещалась гайка М3.

image

И вклеиваем в эти отверстия наши гайки с помощью суперклея.

image

В гайки вкручиваем стойки.

image

Стойки я выбрал по высоте такие, чтобы впритык хватало высоты для свисающих с верхней пластины свитчей.

image

Чем меньше получится высота нашей клавиатуры, тем лучше для наших рук! Высота корпуса моей клавиатуры с резиновыми ножками менее 12 мм:

image

Полностью высота составляет 25 мм:

image

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

Вариант 2 до обтягивания пленкой:

image

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

image

Объяснять, как клеить пленку — не вижу необходимости. Все что требовалось от этой пленки – не отвлекать на себя внимание при работе. И эту задачу она отлично выполняет. Куплена была на Али года четыре назад.

image

Материал, который пошел на подставки под ладони. Как называется, не имею ни малейшего понятия. Вспененное что-то там. Обернул скотчем, а сверху наклеил пленку.

image

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

image

Теперь подставки под ладони никуда не денутся от клавиатуры – магниты очень хорошо держат. И при необходимости убрать подставки совсем не сложно – притяжение магнитов перебороть вы точно сможете. Очень советую вам также с магнитами сделать, не пожалеете.

Переходим к изготовлению прошивки


Возвращаемся к онлайн-редактору, нам нужна вот эта вкладка:

image

Комбинацией Ctrl+A выделяем весь текст и копируем его в буфер обмена Ctrl+C. С помощью скопированного текста мы можем увидеть, как примерно будет выглядеть наша будущая клавиатура. Переходим по ссылке:
Keyboard Layout 3D Viewer

image

Можно повращать камеру мышкой и поиграться с зумом. В общем, разберетесь.
Следующий этап, открываем в новой вкладке браузера ссылку онлайн-конструктора нашей прошивки для ардуины:
Keyboard Firmware Builder

Вставляем скопированное, как на скриншоте:

image

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

image

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

image

Заново открываем вкладку Keyboard Firmware Builder и вставляем скопированное:

image

Результат отличный:

image

То, что нужно. Вы должны добиться подобной разводки и у себя. Далее переходим к вкладке PINS, в ней мы укажем, какими контактами ардуины будем пользоваться. Смотрите внимательно, если вы купили такую же плату, как у меня, то у вас в наличии будут только такие контакты как на рисунке ниже:

image

Исходя из того, что мы имеем, выставляем в столбцах ROWS и COLUMNS пины, которые есть в наличии. Ниже на скриншоте пример расстановки:

image

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

Переходим к вкладке KEYMAP, в ней мы зададим поведение кнопок:

image

Частично конструктор присвоил значения кнопкам за нас, доделаем остальное. Тут очень интересно, можно столько всего напридумывать! Начнем с элементарного:

image

И следом жмем:

image

И кнопке присваивается значение «3». Далее аналогично присваиваем значения остальным кнопкам. Вот пример, как сделать правую или левую клавиши «Windows»:

image

Это все у нас была основная раскладка (слой ноль) по умолчанию, давайте теперь сделаем второй слой.

image

Как пользоваться этой МО(1)? Она работает аналогично клавише SHIFT. Только клавиатурой выдаваться будет то, что мы запрограммируем на слое 1. Начинаем наполнять слой1:

image

Сделаем клавишу DELETE:

image

По умолчанию эта кнопка работает, как BACKSPACE. Но теперь, если мы ее нажмем, удерживая нажатой МО(1), то кнопка будет работать как DELETE. Вот так все просто. Аналогично присваиваем значения остальным кнопкам. Причем необязательно всем. Если мы не присвоили кнопке значение на слое 1, то она будет давать значение слоя ноль (который по умолчанию). Давайте сделаем мультимедийные клавиши управления громкостью.

image

VOLD, VOLU – это регулировка громкости. Управление плеером, например Foobar2000: PLAY, STOP, PREV, NEXT. И это все – глобальные клавиши, которые будут управлять плеером даже если вы при этом будете работать в WORD либо играть в какую-то игру.

Далее будет волшебство, недоступное обычным клавиатурам. Вспомните, как часто вам приходилось убирать руку с клавиатуры к мышке, чтобы прокрутить (проскроллить) колесиком мышки документ в WORD или страничку в браузере. Часто, наверное? Открываем ссылку:
Mouse Keys

Сейчас мы научим клавиатуру вести себя как компьютерная мышь.

image

image

Смотрите, что я могу сделать одной левой рукой! Я могу двигать курсором мыши (если честно, этим почти не пользуюсь), могу нажимать левую и правую кнопки мыши (периодически клацаю правую), кручу колесо мыши (использую все время, даже привыкать не пришлось!) и управляю плеером Foobar2000 и громкостью. Ладонь при этом ни на миллиметр не смещается в сторону.

image

С этим, я думаю, всем должно быть все понятно. А давайте сделаем, чтобы комбинация Ctrl+Alt+Del нажималась одной кнопкой! Не то чтобы очень надо, но знать, как делается – полезно.

image

Следующая операция:

image

Снова модификатор:

image

Следующая операция:

image

Наконец-то уже сама кнопка:

image

Должно получиться вот так:

image

И подобных комбинаций можно придумать множество.

Давайте сделаем слой МО(2):

image

В слое МО(2) я у себя расставил клавиши F1 – F12, клавиши курсора и PgDn/ PgUp/ Home/ End. Insert, как и Caps Lock, я счел ненужной клавишей и не стал вводить ее у себя.

image

Таким образом, я могу с помощью этого слоя, вообще никак не перемещая правую ладонь, пользоваться клавишами курсора и блоком PgDn/ PgUp/ Home/ End. Уж поверьте, это удобно! После этого смотреть на обычные стандартные клавиатуры даже не хочется.

Все мы играем в компьютерные игры, одна из моих любимых – NFS Underground. Давайте создадим слой кнопок, предназначенный только для этой игры! Естественно, удерживать во время игры все время нажатой кнопку МО(3), чтобы рулить клавишами курсора — будет очень неудобно. Вместо него используем модификатор TG(3) — он аналогичен принципу работы клавиши Caps Lock. Нажали клавишу TG(3) и отпустили – клавиатура остается в режиме работы слоя TG(3). Нажали и отпустили эту клавишу еще раз – клавиатура вернется в режим работы слоя по умолчанию. Вот так все просто. Для примера давайте представим себе, что игра не позволяет изменять клавиши, а нам хочется настроить под себя поудобнее.

image

Я сделал себе вот так:

image

Для удобства я замылил на скриншоте неиспользуемые кнопки. На обеих половинках клавиатуры сделал клавиши курсора – на случай если рука затечет и захочется дать ей отдохнуть. Не забыл в этом слое реализовать клавишу TG(3) – чтобы можно было вернуться из этого слоя в слой по умолчанию. Сделал также в слое 3 клавишу МО(1) – для управления мультимедийными кнопками. Ну а остальное в принципе и так понятно. Очевидно, с таким слоем кнопок играть точно будет комфортнее.

Идем далее. Всего слоев можно сделать 15 штук. Мне сложно представить, как их можно все задействовать. И еще тяжелее представить, как их всех запомнить. Я сейчас использую только 4 слоя и пока их достаточно.

Я вам рассказал лишь про малую часть способов кастомизации прошивки. Но того, что рассказал – уже достаточно для вас, чтобы начали эффективнее работать с клавиатурой. Хотите «нафаршировать» свою клавиатуру больше – смотрите там:
Коды клавиш
Как сохранить свои наработки, чтобы в следующий раз не начинать все заново:

image

И вот теперь мы можем забрать готовую прошивку с этой вкладки:

image

Теперь нам нужно залить прошивку в нашу ардуину. Проще некуда. Переходим по ссылке:
QMK Toolbox

image

А теперь качаем последнюю версию программы:

image

Инсталлируем программу, на всякий случай перезагружаем компьютер и с потрясением смотрим как вовремя нашей Windows10 приспичило обновиться.
Сейчас вам нужно будет взять в руки паяльник и припаять двумя проводками кнопку к ардуине к контактам GND и RESET.

image

Подключаем кабелем micro usb к компьютеру нашу плату – на ней должен загореться светодиод. Запускаем программу QMK Toolbox. Выбираем файл прошивки *.hex, который мы недавно скачали.

image

Жмем на кнопку, которую мы перед этим подпаяли к ардуине, и ждем появления желтой строки на темном фоне программы. Как только она появилась, не тормозим и быстренько нажимаем на кнопку FLASH:

image

Если вы все же протормозили и появилась вторая желтая строка – кнопка FLASH не начнет прошивку платы. Начинайте заново: нажимаем припаянную кнопку и т.д.

Переходим к пайке деталей


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

image

Смотрите, что из себя представляет левая часть клавиатуры:

image

А теперь посмотрите на фото ниже:

image

Верхний ряд клавиш ESCAPE,1,2,3,4,5 мы соединили диодами. Диоды мы спаяли друг с дружкой катодами, а сами диоды припаяли к контактам кнопок анодами. Точно так же мы поступаем со строкой кнопок TAB,Q,W,E,R,T. Это второй ряд кнопок сверху. Диоды спаиваем между собой катодами, в общем, точно так же, как и верхний ряд кнопок. Остальные ряды спаиваем диодами точно так же. Следом распаиваем проволочки как на фото ниже.

image

Я специально паял разноцветными проводками от кабеля витой пары, чтобы можно было легко разобраться. Внимательно посмотрите на правый край фото. Я соединил синей проволокой свободные контакты ВЕРТИКАЛЬНОГО РЯДА клавиш: ESCAPE,TAB,ALT,CTRL,TG(3). С остальными вертикальными рядами поступаем совершенно точно также.

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

image

И сравниваем ее с этой картинкой:

image

Проволоку, соединяющую вертикальный ряд клавиш ESCAPE,TAB,ALT,CTRL,TG(3) соединяем проводом к контакту ардуины С6. Проволоку, соединяющую вертикальный ряд клавиш 1,Q,A,Z, TG(4) соединяем проводом к контакту ардуины D7. Проволоку, соединяющую вертикальный ряд клавиш 2,W,S,X,LShift соединяем проводом к контакту ардуины E6. Далее действуем по аналогии. Переходим к строкам. Спаянные между собой катоды диодов строки ESCAPE,1,2,3,4,5 подключаем к контакту ардуины D3. Спаянные между собой катоды диодов строки TAB,Q,W,E,R,T подключаем к контакту ардуины D2. Катоды диодов строки Alt,A,S,D,F,G подключаем к контакту D1. И далее аналогично. Правая половина клавиатуры готовится аналогично левой.

image

Если б не клавиши курсора, фото ниже не было бы таким запутанным:

image

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

Спаянные между собой катоды диодов строки UP,6,7,8,9,0,] — подключаем к контакту ардуины D3. Спаянные между собой катоды диодов строки DOWN,Y,U,I,O,P,[ — подключаем к контакту ардуины D2. И так далее. Проволоку, соединяющую вертикальный ряд клавиш UP,DOWN,LEFT,RIGHT соединяем проводом к контакту ардуины B2. Проволоку, соединяющую вертикальный ряд клавиш 6,Y,H,N, МО(1) соединяем проводом к контакту ардуины B3. И снова далее по аналогии.

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

image

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

P.S. Если вы решитесь сделать свою клавиатуру, не стесняйтесь — делитесь своими наработками! Мне всегда очень интересно посмотреть на новые идеи. Возможно, благодаря вам я смогу добавить к своей клавиатуре что-то новое и классное.
Tags:
Hubs:
+79
Comments75

Articles

Change theme settings