![](https://habrastorage.org/files/faf/c16/fd5/fafc16fd50c44a2e82f321b00924bff1.jpg)
Вокруг нас есть множество полезных компьютерных устройств, которые при правильном приложении сил могут существенно помочь нам в решении типовых рутинных задач. И, к сожалению, немногие об этом знают и умеют применить такие вещи на практике. Сегодня я хочу рассказать вам о любопытном применении POS-клавиатуры для существенной помощи в работе QA-инженера. Это всего лишь одно из многих применений такого класса устройств для задач, где необходимо производить заданные последовательности одинаковых действий.
Что такое POS-клавиатура?
Из Википедии:
Существуют два главных отличия POS-клавиатуры от клавиатуры стандартной. Во-первых, программируемая клавиатура используется не столько для введения символьной информации, сколько для управления кассовыми операциями. Во-вторых, клавиши программируемой клавиатуры изначально не имеют привязки к кодовым последовательностям (или макросам). Их прописывает технический специалист, когда устанавливает периферийное оборудование. Функциональность выбранной клавиатуры зависит от количества потенциальных комбинаций макрокоманд.
Как я к этому пришел
Я работаю QA-инженером в аутсорс компании. И так исторически сложилось, что почти все проекты — распределенные клиент-серверные приложения с мобильными клиентами. Первый проект был не исключением. Я сразу попал на активную фазу разработки. На проекте было 7 программистов (Android, iOS, Back-End, Front-End) и я. В самые горячие месяцы заводил по 150 баг-репортов, плюс задачи\баги со стороны заказчика, задачи от ПМ-а и, естественно, работа с уже открытыми/переоткрытыми задачами. Каждый день по несколько обновлений клиентов, работа с тестовой документацией и многое другое. Было интересно и весело! Но, многие действия по большей части связанны с рутиной, и она весьма заметно снижала производительность, оставляя меньше времени на куда более нужные активности на проекте.
Что я пытался использовать перед этим?
Программы для создания макросов нажатия, менеджеры буфера обмена, всевозможные тулбары и пр. Что-то вызывалось горячими клавишами, где-то были всплывающие тулбары. Основная проблема была в том, что появилось слишком много комбинаций клавиш. Самые частые и популярные запоминались, менее популярные за неделю-две успевали “вылететь” из головы. Плюс, комбинации были не сложные, и часто возникал конфликт локальных и глобальных комбинаций клавиш. Этот вариант у меня в итоге не прижился, и я начал смотреть с сторону hardware решения.
Поиск hardware решений
Итак, я начал искать hardware решения. Первые варианты были безумны:
- использовать кнопки различных игровых джойстиков и переназначать кнопки;
- поиск функциональных мультимедийных клавиатур с последующим извлечением внутренностей и подключением к механической клавиатуре;
- и многие другие;
В процессе поисков я наткнулся на POS-клавиатуры. Почитал описание, и понял, что это как раз то, что надо. Зашел в интернет-магазин торгового оборудования, глянул на ценники… 100-300уе. Для зарплаты Junior QA это было многовато. Решил поискать на бесплатных досках объявлений. И, о чудо, POS-клавиатура на 96 кнопок за 13 долларов. Пару дней ожидания, и она у меня в руках.
Устанавливаем клавиатуру и драйвера на ПК
Итак, в руки мне попала клавиатура POSUA LPOS-II-096 с интерфейсом PS/2. Её изображение и ттх:
![](https://habrastorage.org/files/c16/3bb/207/c163bb20729140dab6710c4c0f0f07db.png)
- Программируемых клавиш: 96
- Уровни раскладок: 4
- Тип клавиш: Cherry MX1A cross gold contacts (Germany)
- Ресурс нажатий: > 50'000'000
- Диапазон рабочих температур: 0 °C...+70 °C
- Напряжение питания: 4.5-5.6 V
Установка не сложная, опишу ее по шагам:
- заходим на сайт производителя, качаем драйвер клавиатуры PS/2 “Win7_64drv” (он нужен для программирования клавиш) и программу конфигурации “MPOS-Master”;
- по совету производителя для установки не подписанного драйвера (у меня Win7, x64) включаем тестовый режим в Windows;
- Устанавливаем драйвер и программу конфигурации;
Клавиатура готова к использованию. Для версии клавиатуры с USB интерфейсом достаточно просто установить программу конфигурации.
Программирование клавиш
- запускаем ранее установленную программу MPOSMaster;
- создаем новый проект, и указываем наш тип оборудования (на данный момент я использую USB версию на 64 копки, купленную все так-же на доске объявлений);
![](https://habrastorage.org/files/dd6/52f/eb0/dd652feb0f304c2c90dac3123f847f8c.png)
- в новом проекте мы видим еще не назначенные клавиши;
![](https://habrastorage.org/files/bf4/f38/f13/bf4f38f139674306bb5b05fdb7fa54b2.png)
- не забываем задать количество слоев клавиатуры в разделе “Клавиатура” -> “Параметры USB интерфейса”, если их планируется использовать больше одного уровня, иначе при программировании программа выдаст ошибку: «Данный уровень не существует»;
![](https://habrastorage.org/files/ac7/951/afb/ac7951afb73f4b73808469ed047b440d.png)
Далее разберем более подробно функции клавиш. Для этого делаем двойной клик по не назначенной клавише, и видим ее параметры конфигурации:
![](https://habrastorage.org/files/b0d/247/311/b0d247311ee0461ebd3747aa6c2586ec.png)
В этом меню мы можем выбрать режим “Макро клавиша”, или выбрать временный или постоянный переход на уровень от 0 до 3. Для каждого уровня можно назначить свой уникальный макрос, т.е. в итоге получаем 64*4=256 уникальных макросов. Возможности макрос клавиши:
![](https://habrastorage.org/files/1c0/3ab/a03/1c03aba03b6c48799f285e8b78002841.png)
![](https://habrastorage.org/files/55c/c07/2b0/55cc072b018b4e189a49476dc4d8f676.png)
- мы можем задать любую последовательность или комбинацию символов для 4-х слоев, но не более 42 символов в одном слое (ограничение памяти контроллера);
- задать макрос можно или вводом с клавиатуры при помощи окна “захвата”, или вставляя коды нажатия, отпускания или клика клавиши вручную. При помощи ручного ввода есть возможность задать комбинации клавиш такого вида Ctrl+Alt+Shift+Win+”x”;
- также есть возможность в любом месте макроса вставить паузу от 0,1s до 1,6s. Если нужна большая пауза или не стандартная, можно вставлять несколько пауз подряд;
- мы можем задать звуковой сигнал нажатия: короткий, средний или длинный;
- мы можем включить “Автоповтор” для клавиши. Если он отключен, макрос выполняется только один раз, вне зависимости от того, как долго мы держим клавишу;
Несколько примеров из моей практики
Вот так выглядит мой второй вариант клавиатуры на 64 кнопки с USB интерфейсом:
![](https://habrastorage.org/files/a86/f2c/490/a86f2c49039346ed9306176ff387e0ae.jpg)
Все иконки я делал в графическом редакторе размером 103*103 пикселя и распечатывал на цветном принтере. Картинки, естественно, выбирал на свой вкус и цвет.
Почти на все кнопки назначена уникальная комбинация клавиш. Я использовал комбинации вида: Ctrl+Alt+Shift+’клавиши 0-9, A-Z, вкл. символьные’. Если комбинаций не хватает, добавляю к ним еще и кнопку “Win”. Комбинации из 4-5 кнопок обычно не приводят к конфликтам с Windows и ПО, т.к. используются крайне редко.
Теперь подробнее о некоторых клавишах.
![](https://habrastorage.org/files/47c/504/1f6/47c5041f6a5249ee9c94f51afc0e9131.png)
Далее про физически выделенный блок управления редактором скриншотов (в моем случае это Snagit Editor).
![](https://habrastorage.org/files/375/5bc/59f/3755bc59f2c549a6a546d9a46c5215ba.png)
Первый ряд сверху — дополнительные профили снятия скриншота.
- расшарить скриншот без обработки через гугл драйв (использую, когда надо очень быстро создать ссылку и скинуть в чат, или когда не надо обрабатывать изображение);
- создать видеозапись и отправить ее в редактор;
- создать скриншот, и без обработки и вопросов сохранить на жесткий диск;
- создать скриншот, и скопировать его в буфер обмена;
- стрелка;
- линия;
- подсвеченная область;
- вставка текста;
- сглаживание слоев;
- вставка маркеров;
- redo и undo, они же при нажатии на кнопку уровня L1 уменьшают\увеличивают шрифт в текстовой вставке;
- основная кнопка снятия скриншотов (отправляет изображение в редактор);
- кнопка ESC, на случай, если надо изменить область захвата;
Отдельно отмечу кнопку сохранения.
![](https://habrastorage.org/files/014/351/dbe/014351dbed7945c4a7607a997602fc86.png)
Ctrl+S ? пауза 1,2s (что бы успело отобразится окно сохранения) ? Enter
Позволяет одним нажатием сохранить отредактированный скрин на жесткий диск.
Этот блок кнопок в моей работе самый используемый, по этому находится в самом удобном месте.
Все остальные клавиши работают через программу для создания макросов нажатия клавиш, которая и выполняет все действия. Это позволяет легко изменять конфигурацию и переназначать кнопки без ограничений физических макро-клавиш в 42 символа. Также это позволяет выполнять и другие действия, не возможные в только “железном” исполнении. Как пример: запуск программ, запись макросов нажатий без ограничения, открытие URL, вставка заранее подготовленного текста, управление окнами, различные действия с системой и мн. другое.
![](https://habrastorage.org/files/15b/f16/02d/15bf1602d2e84a2b8ebd1cc24ff57acc.png)
![](https://habrastorage.org/files/7ca/7dc/160/7ca7dc1600c94603a4a025906a0d66d9.png)
Win+R ? (пауза 0.3с) ? “www.google.com/search?as_q=(Ctrl+V)” ? Enter
![](https://habrastorage.org/files/d79/d5d/348/d79d5d3489ac40fea8b1bd172677692d.png)
Win+R ? (пауза 0.3с) ? “(Ctrl+V) ? Enter”
Ссылка открывается в браузере по умолчанию.
![](https://habrastorage.org/files/9ea/3fa/f12/9ea3faf124654372bb90c36304dbe9e3.png)
- обычный запуск консоли:
ADB “adb logcat -s mLog:D”
- L1 + кнопка ADB — запуск с удалением данных из буфера обмена (что бы не подтягивать старые логи);
Прописываем в bat:
adb logcat -c adb logcat -s mLog:D
- Все логи с ADB сохраняем в текстовый файл с таким форматом имени: ADB_logs_"%hour%"."%minute%"."%sec%_%day%.%month%.%year%.txt
Прописываем в bat:
rem @echo off set dd=%DATE% set tt=%TIME% set /a ddd=%dd:~0,2% IF %ddd% LSS 10 ( SET day=0%ddd%) else ( SET day=%ddd%) set month=%dd:~3,2% set year=%dd:~6,4% set /a ttt=%tt:~0,2% IF %ttt% LSS 10 ( SET hour=0%ttt%) else ( SET hour=%ttt%) SET minute=%tt:~3,2% SET sec=%tt:~6,2% adb logcat -s mLog:D > C:\ADB\"ADB_logs_"%hour%"."%minute%"."%sec%_%day%.%month%.%year%.txt
![](https://habrastorage.org/files/bce/9bf/1f6/bce9bf1f6e464c479e9b4c8921f1736b.png)
Личная, рабочая и две тестовых. В них используются два слоя:
- Первый открывает url вида: mail.google.com/mail/u/0/#inbox
- L1 + кнопка открывает форму нового письма: mail.google.com/mail/u/0/#inbox?compose=new
![](https://habrastorage.org/files/221/986/b15/221986b150fe4ce2afa1459b6c78d79d.png)
explorer.exe F:\Dropbox\work_doc
![](https://habrastorage.org/files/029/5c5/283/0295c5283b7c4346b6dd83c11b51aaa2.png)
Текст команды:
start Chrome.exe https://docs.google.com/document/d/1OYBf….
![](https://habrastorage.org/files/a1b/87a/c12/a1b87ac12a6844779ce4e5638bd03c3d.png)
Также приведу пример одной из разовых задач, которую я выполнял буквально пару дней назад.
Задача:
— проверить счетчик, который сортирует людей по списку их партийной принадлежности, всего 7 партий.
— что бы дойти до выбора партии, надо ответить на 50 вопросов; все вопросы каждый раз хаотически перемешиваются.
— в тесте есть ловушки, которые бракуют не честных ответчиков, такие как: защита от линейных ответов, сравнивание ответов на однотипные вопросы, вопросы-ловушки и т.п.
Дано:
Список правильных ответов, которые проходят все валидации сервера в txt файле.
Решение:
Проект маленький и короткий. Времени на проверку — час-два, а сама задача — разовая. Можно конечно просто ходить по списку, и находить правильные ответы в текстовом файл, но это вредно для нервов. Я за минуту на свободной клавише сделал макрос, который выполняет такую последовательность нажатий клавиш:
Ctrl+F ? Ctrl + V ? Enter ? Esc
После этого процесс проверки выглядел так:
- открываем веб-форму со списком вопросов;
- копируем вопрос в буфер обмена (я использую для этого доп. клавиши на мышке);
- переводим фокус в Notepad++;
- жмем на макро клавишу, которая находит текст вопроса и прячет окно поиска, оставляя подсвеченным текст вопроса с правильным ответом в диапазоне от -3 до 3;
- кликаем в веб-форме на правильный ответ и тд.;
Результат: пройдено около 600 вопросов с вполне приемлемым уровнем комфорта, нервы спасены, заказчик рад.
После этого пришла мысль о том, что надо несколько неиспользуемых кнопок обозначить цветными фигурами, что бы можно было использовать их для разовых/временных задач.
Остальные кнопки ничем особенным не выделяются. И о их назначении, в большинстве случаев, можно догадаться по картинкам.
Пару слов о производителях POS-клавиатур
На практике я использовал клавиатуры только одного бренда. Но, общий принцип и возможности у всех примерно схожи. Разнятся они в основном только внешним оформлением и количеством кнопок, которое бывает от 4 до 128 шт.
Их можно найти и в интернет магазинах, и в конторах по установку торгового оборудования. Так же есть такие клавиатуры на aliexpress и ebay. Они сейчас не сильно пользуются спросом, и проблем с приобретением за невысокую стоимость возникать не должно.
Отдельно хочу отметить вот этого производителя — X-keys. Как я понял, у них упор сделан на аудиторию геймеров, по этому внешне их клавиатуры выглядят куда лучше, чем модели для торгового оборудования. Плюс у них есть клавиатуры с очень интересными конфигурациями. Вот несколько примеров:
![](https://habrastorage.org/files/f8e/860/547/f8e860547d64439183c71f1314d5fee0.png)
Что внутри?
Вот несколько фотографий в разобранном состоянии (картинки кликабельные):
![](https://habrastorage.org/files/71d/5c7/2e2/71d5c72e274a48cb9fc83048ee1e6a7e.jpg)
![](https://habrastorage.org/files/7c4/cf3/3c4/7c4cf33c4b7145d4b8276b729a562db2.jpg)
![](https://habrastorage.org/files/d2f/04a/ddd/d2f04addd6ed45888759d7f954c77021.jpg)
![](https://habrastorage.org/files/847/d35/dec/847d35decd2240eda9f3b7f7f629a9e8.jpg)
Кстати, как и многие другие POS клавиатуры она защищена от попадания жидкости и грязи на клавиатуру.
Заключение
Статья получилась большая, но, надеюсь, она кому-то поможет в реализации своих идей. Буду рад вопросам и предложениям в комментариях.
И на последок, фото моей первой клавиатуры. Не пугайтесь. Она пережила много изменений, и покамест временно отправлена на заслуженный отдых.
![](https://habrastorage.org/files/f65/baa/04f/f65baa04f6344cf79ec22c7fbc525249.png)