
Вокруг нас есть множество полезных компьютерных устройств, которые при правильном приложении сил могут существенно помочь нам в решении типовых рутинных задач. И, к сожалению, немногие об этом знают и умеют применить такие вещи на практике. Сегодня я хочу рассказать вам о любопытном применении 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. Её изображение и ттх:

- Программируемых клавиш: 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 копки, купленную все так-же на доске объявлений);

- в новом проекте мы видим еще не назначенные клавиши;

- не забываем задать количество слоев клавиатуры в разделе “Клавиатура” -> “Параметры USB интерфейса”, если их планируется использовать больше одного уровня, иначе при программировании программа выдаст ошибку: «Данный уровень не существует»;

Далее разберем более подробно функции клавиш. Для этого делаем двойной клик по не назначенной клавише, и видим ее параметры конфигурации:

В этом меню мы можем выбрать режим “Макро клавиша”, или выбрать временный или постоянный переход на уровень от 0 до 3. Для каждого уровня можно назначить свой уникальный макрос, т.е. в итоге получаем 64*4=256 уникальных макросов. Возможности макрос клавиши:


- мы можем задать любую последовательность или комбинацию символов для 4-х слоев, но не более 42 символов в одном слое (ограничение памяти контроллера);
- задать макрос можно или вводом с клавиатуры при помощи окна “захвата”, или вставляя коды нажатия, отпускания или клика клавиши вручную. При помощи ручного ввода есть возможность задать комбинации клавиш такого вида Ctrl+Alt+Shift+Win+”x”;
- также есть возможность в любом месте макроса вставить паузу от 0,1s до 1,6s. Если нужна большая пауза или не стандартная, можно вставлять несколько пауз подряд;
- мы можем задать звуковой сигнал нажатия: короткий, средний или длинный;
- мы можем включить “Автоповтор” для клавиши. Если он отключен, макрос выполняется только один раз, вне зависимости от того, как долго мы держим клавишу;
Несколько примеров из моей практики
Вот так выглядит мой второй вариант клавиатуры на 64 кнопки с USB интерфейсом:

Все иконки я делал в графическом редакторе размером 103*103 пикселя и распечатывал на цветном принтере. Картинки, естественно, выбирал на свой вкус и цвет.
Почти на все кнопки назначена уникальная комбинация клавиш. Я использовал комбинации вида: Ctrl+Alt+Shift+’клавиши 0-9, A-Z, вкл. символьные’. Если комбинаций не хватает, добавляю к ним еще и кнопку “Win”. Комбинации из 4-5 кнопок обычно не приводят к конфликтам с Windows и ПО, т.к. используются крайне редко.
Теперь подробнее о некоторых клавишах.

Далее про физически выделенный блок управления редактором скриншотов (в моем случае это Snagit Editor).

Первый ряд сверху — дополнительные профили снятия скриншота.
- расшарить скриншот без обработки через гугл драйв (использую, когда надо очень быстро создать ссылку и скинуть в чат, или когда не надо обрабатывать изображение);
- создать видеозапись и отправить ее в редактор;
- создать скриншот, и без обработки и вопросов сохранить на жесткий диск;
- создать скриншот, и скопировать его в буфер обмена;
- стрелка;
- линия;
- подсвеченная область;
- вставка текста;
- сглаживание слоев;
- вставка маркеров;
- redo и undo, они же при нажатии на кнопку уровня L1 уменьшают\увеличивают шрифт в текстовой вставке;
- основная кнопка снятия скриншотов (отправляет изображение в редактор);
- кнопка ESC, на случай, если надо изменить область захвата;
Отдельно отмечу кнопку сохранения.

Ctrl+S ⇒ пауза 1,2s (что бы успело отобразится окно сохранения) ⇒ Enter
Позволяет одним нажатием сохранить отредактированный скрин на жесткий диск.
Этот блок кнопок в моей работе самый используемый, по этому находится в самом удобном месте.
Все остальные клавиши работают через программу для создания макросов нажатия клавиш, которая и выполняет все действия. Это позволяет легко изменять конфигурацию и переназначать кнопки без ограничений физических макро-клавиш в 42 символа. Также это позволяет выполнять и другие действия, не возможные в только “железном” исполнении. Как пример: запуск программ, запись макросов нажатий без ограничения, открытие URL, вставка заранее подготовленного текста, управление окнами, различные действия с системой и мн. другое.


Win+R ⇒ (пауза 0.3с) ⇒ “www.google.com/search?as_q=(Ctrl+V)” ⇒ Enter

Win+R ⇒ (пауза 0.3с) ⇒ “(Ctrl+V) ⇒ Enter”
Ссылка открывается в браузере по умолчанию.

- обычный запуск консоли:
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

Личная, рабочая и две тестовых. В них используются два слоя:
- Первый открывает url вида: mail.google.com/mail/u/0/#inbox
- L1 + кнопка открывает форму нового письма: mail.google.com/mail/u/0/#inbox?compose=new

explorer.exe F:\Dropbox\work_doc

Текст команды:
start Chrome.exe https://docs.google.com/document/d/1OYBf….

Также приведу пример одной из разовых задач, которую я выполнял буквально пару дней назад.
Задача:
— проверить счетчик, который сортирует людей по списку их партийной принадлежности, всего 7 партий.
— что бы дойти до выбора партии, надо ответить на 50 вопросов; все вопросы каждый раз хаотически перемешиваются.
— в тесте есть ловушки, которые бракуют не честных ответчиков, такие как: защита от линейных ответов, сравнивание ответов на однотипные вопросы, вопросы-ловушки и т.п.
Дано:
Список правильных ответов, которые проходят все валидации сервера в txt файле.
Решение:
Проект маленький и короткий. Времени на проверку — час-два, а сама задача — разовая. Можно конечно просто ходить по списку, и находить правильные ответы в текстовом файл, но это вредно для нервов. Я за минуту на свободной клавише сделал макрос, который выполняет такую последовательность нажатий клавиш:
Ctrl+F ⇒ Ctrl + V ⇒ Enter ⇒ Esc
После этого процесс проверки выглядел так:
- открываем веб-форму со списком вопросов;
- копируем вопрос в буфер обмена (я использую для этого доп. клавиши на мышке);
- переводим фокус в Notepad++;
- жмем на макро клавишу, которая находит текст вопроса и прячет окно поиска, оставляя подсвеченным текст вопроса с правильным ответом в диапазоне от -3 до 3;
- кликаем в веб-форме на правильный ответ и тд.;
Результат: пройдено около 600 вопросов с вполне приемлемым уровнем комфорта, нервы спасены, заказчик рад.
После этого пришла мысль о том, что надо несколько неиспользуемых кнопок обозначить цветными фигурами, что бы можно было использовать их для разовых/временных задач.
Остальные кнопки ничем особенным не выделяются. И о их назначении, в большинстве случаев, можно догадаться по картинкам.
Пару слов о производителях POS-клавиатур
На практике я использовал клавиатуры только одного бренда. Но, общий принцип и возможности у всех примерно схожи. Разнятся они в основном только внешним оформлением и количеством кнопок, которое бывает от 4 до 128 шт.
Их можно найти и в интернет магазинах, и в конторах по установку торгового оборудования. Так же есть такие клавиатуры на aliexpress и ebay. Они сейчас не сильно пользуются спросом, и проблем с приобретением за невысокую стоимость возникать не должно.
Отдельно хочу отметить вот этого производителя — X-keys. Как я понял, у них упор сделан на аудиторию геймеров, по этому внешне их клавиатуры выглядят куда лучше, чем модели для торгового оборудования. Плюс у них есть клавиатуры с очень интересными конфигурациями. Вот несколько примеров:

Что внутри?
Вот несколько фотографий в разобранном состоянии (картинки кликабельные):




Кстати, как и многие другие POS клавиатуры она защищена от попадания жидкости и грязи на клавиатуру.
Заключение
Статья получилась большая, но, надеюсь, она кому-то поможет в реализации своих идей. Буду рад вопросам и предложениям в комментариях.
И на последок, фото моей первой клавиатуры. Не пугайтесь. Она пережила много изменений, и покамест временно отправлена на заслуженный отдых.
