Вокруг нас есть множество полезных компьютерных устройств, которые при правильном приложении сил могут существенно помочь нам в решении типовых рутинных задач. И, к сожалению, немногие об этом знают и умеют применить такие вещи на практике. Сегодня я хочу рассказать вам о любопытном применении 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 и ПО, т.к. используются крайне редко.
Теперь подробнее о некоторых клавишах.
— это кнопки управления слоями, они производят временный перехода на уровень L1 и уровень L2. Уровень L0 задан по умолчанию. L3 на данный момент не использую, так как 192 комбинации мне хватает.
Далее про физически выделенный блок управления редактором скриншотов (в моем случае это Snagit Editor).
Первый ряд сверху — дополнительные профили снятия скриншота.
- расшарить скриншот без обработки через гугл драйв (использую, когда надо очень быстро создать ссылку и скинуть в чат, или когда не надо обрабатывать изображение);
- создать видеозапись и отправить ее в редактор;
- создать скриншот, и без обработки и вопросов сохранить на жесткий диск;
- создать скриншот, и скопировать его в буфер обмена;
Из кнопок управления инструментами:
- стрелка;
- линия;
- подсвеченная область;
- вставка текста;
- сглаживание слоев;
- вставка маркеров;
- redo и undo, они же при нажатии на кнопку уровня L1 уменьшаютувеличивают шрифт в текстовой вставке;
- основная кнопка снятия скриншотов (отправляет изображение в редактор);
- кнопка ESC, на случай, если надо изменить область захвата;
Отдельно отмечу кнопку сохранения.
— это макрос нажатия клавиш такого вида:
Ctrl+S ⇒ пауза 1,2s (что бы успело отобразится окно сохранения) ⇒ Enter
Позволяет одним нажатием сохранить отредактированный скрин на жесткий диск.
Этот блок кнопок в моей работе самый используемый, по этому находится в самом удобном месте.
Все остальные клавиши работают через программу для создания макросов нажатия клавиш, которая и выполняет все действия. Это позволяет легко изменять конфигурацию и переназначать кнопки без ограничений физических макро-клавиш в 42 символа. Также это позволяет выполнять и другие действия, не возможные в только “железном” исполнении. Как пример: запуск программ, запись макросов нажатий без ограничения, открытие URL, вставка заранее подготовленного текста, управление окнами, различные действия с системой и мн. другое.
— открывает журнал менеджер буфера обмена. При переходе на слой L1 эта же кнопка открывает раздел “избранное”;
— Поиск текста из буфера обмена в Гугле. Тут используется такой макрос нажатий:
Win+R ⇒ (пауза 0.3с) ⇒ “www.google.com/search?as_q=(Ctrl+V)” ⇒ Enter
— открывает url, который находится в буфере обмена. Макрос:
Win+R ⇒ (пауза 0.3с) ⇒ “(Ctrl+V) ⇒ Enter”
Ссылка открывается в браузере по умолчанию.
— различные варианты запуска ADB при помощи BAT файлов:
- обычный запуск консоли:
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
— кнопка при помощи bat файла открывает рабочую папку:
explorer.exe F:Dropboxwork_doc
— открывают гугл-доки с чек-листами и спецификацией по текущему проекту в Chrome (по дефолту в системе стоит FF, но Chrome с гугл-доками работает лучше);
Текст команды:
start Chrome.exe https://docs.google.com/document/d/1OYBf….
— включает/отключает настольную лампу при помощи USB HID реле, которое управляется через консоль;
Также приведу пример одной из разовых задач, которую я выполнял буквально пару дней назад.
Задача:
— проверить счетчик, который сортирует людей по списку их партийной принадлежности, всего 7 партий.
— что бы дойти до выбора партии, надо ответить на 50 вопросов; все вопросы каждый раз хаотически перемешиваются.
— в тесте есть ловушки, которые бракуют не честных ответчиков, такие как: защита от линейных ответов, сравнивание ответов на однотипные вопросы, вопросы-ловушки и т.п.
Дано:
Список правильных ответов, которые проходят все валидации сервера в txt файле.
Решение:
Проект маленький и короткий. Времени на проверку — час-два, а сама задача — разовая. Можно конечно просто ходить по списку, и находить правильные ответы в текстовом файл, но это вредно для нервов. Я за минуту на свободной клавише сделал макрос, который выполняет такую последовательность нажатий клавиш:
Ctrl+F ⇒ Ctrl + V ⇒ Enter ⇒ Esc
После этого процесс проверки выглядел так:
- открываем веб-форму со списком вопросов;
- копируем вопрос в буфер обмена (я использую для этого доп. клавиши на мышке);
- переводим фокус в Notepad++;
- жмем на макро клавишу, которая находит текст вопроса и прячет окно поиска, оставляя подсвеченным текст вопроса с правильным ответом в диапазоне от -3 до 3;
- кликаем в веб-форме на правильный ответ и тд.;
Результат: пройдено около 600 вопросов с вполне приемлемым уровнем комфорта, нервы спасены, заказчик рад.
После этого пришла мысль о том, что надо несколько неиспользуемых кнопок обозначить цветными фигурами, что бы можно было использовать их для разовых/временных задач.
Остальные кнопки ничем особенным не выделяются. И о их назначении, в большинстве случаев, можно догадаться по картинкам.
Пару слов о производителях POS-клавиатур
На практике я использовал клавиатуры только одного бренда. Но, общий принцип и возможности у всех примерно схожи. Разнятся они в основном только внешним оформлением и количеством кнопок, которое бывает от 4 до 128 шт.
Их можно найти и в интернет магазинах, и в конторах по установку торгового оборудования. Так же есть такие клавиатуры на aliexpress и ebay. Они сейчас не сильно пользуются спросом, и проблем с приобретением за невысокую стоимость возникать не должно.
Отдельно хочу отметить вот этого производителя — X-keys. Как я понял, у них упор сделан на аудиторию геймеров, по этому внешне их клавиатуры выглядят куда лучше, чем модели для торгового оборудования. Плюс у них есть клавиатуры с очень интересными конфигурациями. Вот несколько примеров:
Что внутри?
Вот несколько фотографий в разобранном состоянии (картинки кликабельные):
Кстати, как и многие другие POS клавиатуры она защищена от попадания жидкости и грязи на клавиатуру.
Заключение
Статья получилась большая, но, надеюсь, она кому-то поможет в реализации своих идей. Буду рад вопросам и предложениям в комментариях.
И на последок, фото моей первой клавиатуры. Не пугайтесь. Она пережила много изменений, и покамест временно отправлена на заслуженный отдых.