
(Если кто-то хоть разок пытался программно поморгать индикаторами хотя бы на паре клавиатур, тот уже знает, что самым быстрым и лёгким способом можно моргать либо индикаторами всех клавиатур одновременно, либо индикаторами только основной клавиатуры. Изначально, стандартные средства WinAPI не предоставляют возможности независимого управления несколькими клавиатурами, так как Windows - однопользовательская. Что уже местами работает на пользу чисто «спортивного интереса» на слабо…)
«Глазурь» - консольный проект для управления индикаторами на нескольких клавиатурах, количество которых может достигать 9 штук, что в сумме может составлять всего 27 индикаторов NumLock/CapsLock/ScrollLock. Не важно, какие это клавиатуры - usb, ps/2 или ps/2 через usb-переходники. Так же не важно, исправные они или вместо корпуса остались только платки с контроллером. Главное, чтобы система их распознавала и их индикаторы исправно управлялись.
Для управления индикаторами «лишних» клавиатур необходимо верно указать их логическую последовательность в системе, либо просто физически конструктивно правильно расположить…
«Глазурь» - утилита, которая имеет несколько режимов работы.
В псевдо-автоматическом режиме ей можно «скормить» файл с текстовым вариантом любой трекерной композиции, которую можно достаточно легко в ModPlug Tracker'е манипуляциями copy-paste перенести в Блокнот текстом и сохранить. В этом случае «Глазурь» откроет этот текстовый файл, отыщет окно самого ModPlug Tracker'а и пошлёт ему команду «Play» для организации практически синхронного проигрывания композиции как трекером аккустически, так и собственным парсером с визуальным перемигиванием индикаторами всех заранее заданных клавиатур. Естественно, этот режим мало подходит для полноценной эффективной организации иллюминации на клавиатурах.
Для автоматического режима утилитой открывается файл нужного сценария, написанного на специально разработанном для этого скрипте. Посредством «глазурь-скрипта» предоставляется практически полный контроль над всей индикацией клавиатур.
В режиме ручного управления в окне консоли можно отрабатывать отдельные фрагменты эффектов. В основном, только через copy-paste, так как с клавиатуры нет прямой возможности набирать многие из операторов, в силу синтаксической особенности скриптового языка.
Так как в области управления индикаторами клавиатур сценарией интернет никак не может помочь и здесь утилита является уникальным инструментом, пришлось с чистого листа пытаться разработать общую модель «глазурь-языка». Первоначально планировалось использовать стандартные ключевые слова, как «repeat», «clear», «show». А переключения индикаторов описывать восьмиричным кодом… Однако, такой способ оказался и громоздким, и сложным для восприятия из-за трудностей перевода воображаемой картины эффекта в очередь восьмиричного представления…

Очень скоро мною вспомнился справочник по языку АПЛ, где основной отличной особенностью языка от остальных ЯВУ был набор специфических символов, требующих наличия терминала со специализированной расширенной клавиатурной раскладкой. Тем самым, обратившись к Unicode-наборам в интернете, было замечено, что набор брайля почти идеально подходит для визуального представления переключающихся индикаторов. Не «побрезговав» и остальными символиками, их я отобрал и включил в поддержку своим парсером…

Интерактивное окно консоли мало подходит для непосредственного набора в ней специфических символов Unicode-набора. Отображение знаков так же сильно ограниченно и многое отображается знаками вопроса. А многочисленные поиски в интернете не дали существенного результата, так как требуется наличие шрифта, поддерживающего растровое отображение всех нужных символов в консоли.
Однако, метод copy-paste хорошо работает и функция чтения строки «широких символов» исправно всё передаёт парсеру на разбор. Тем самым, можно просто вставлять фрагменты сценария в консоль и наблюдать за результатом…

«Глазурь-скрипт - синтаксис»
Синтаксис языка достаточно прост и имеет несколько правил:
Строка считается комментарием и игнорируется, если она открывается любым печатаемым символом:
Code: Select all
«Глазурь-скрипт» приветствует Вас!
Code: Select all
«Глазурь-скрипт» приветствует Вас!
⇥ 250㎳ 100㎐⇥ Интервалом задержки устанавливаем темп исполнения сценария и задаём частоту регенерации индикаторов
Code: Select all
«Глазурь-скрипт» приветствует Вас!
⇥ 250㎳ 100㎐⇥ Интервалом задержки устанавливаем темп исполнения сценария и задаём частоту регенерации индикаторов
⇥ ⎙4⏱⎚⇥ ⇥ Печатаем «строку форматирования», ждём 4 интервала (1 сек.) и удаляем строку с печати
Code: Select all
«Глазурь-скрипт» приветствует Вас!
⇥ 250㎳ 100㎐⇥ Интервалом задержки устанавливаем темп исполнения сценария и задаём частоту регенерации индикаторов
⇥ ⎙4⏱⎚⇥ ⇥ Печатаем «строку форматирования», ждём 4 интервала (1 сек.) и удаляем строку с печати
§1
Code: Select all
«Глазурь-скрипт» приветствует Вас!
⇥ 250㎳ 100㎐⇥ Интервалом задержки устанавливаем темп исполнения сценария и задаём частоту регенерации индикаторов
⇥ ⎙4⏱⎚⇥ ⇥ Печатаем «строку форматирования», ждём 4 интервала (1 сек.) и удаляем строку с печати
§1
⇥ 0㎳⤵⇥ ⇥ Сброс локальных коэффициентов параграфа и отделение комментария табуляцией
Это - параграф №1
⇥ ⎙⏱⎚⏱⇥ Пауза в 1 интервал темпа исполнения с печатью и очисткой
Code: Select all
«Глазурь-скрипт» приветствует Вас!
⇥ 250㎳ 100㎐⇥ Интервалом задержки устанавливаем темп исполнения сценария и задаём частоту регенерации индикаторов
⇥ ⎙4⏱⎚⇥ ⇥ Печатаем «строку форматирования», ждём 4 интервала (1 сек.) и удаляем строку с печати
§1
⇥ 0㎳⤵⇥ ⇥ Сброс локальных коэффициентов параграфа и отделение комментария табуляцией
Это - параграф №1
⇥ ⎙⏱⎚⏱⇥ Пауза в 1 интервал темпа исполнения с печатью и очисткой
⇥ §1 3(↝)⇥ ⇥ Циклическое построчное выполнение 3 раза параграфа №1
Любые операции, экранированные скобками с любым числовым индексом будут выполнятся заданное число раз.
Если же цикл определяется дробным числом, то после целого количества циклов будут дополнительно исполнены те операции цикла, которые не выходят за пределы его дроби, определяемой символом «;» (точки с запятой):
Code: Select all
⇥ 3½(«эта часть выполняется 4 раза»; «эта часть выполняется 3 раза»)
⇥ 2⅔(«эта часть выполняется 3 раза»; «эта часть выполняется 3 раза»; «эта часть выполняется 2 раза»)
На страничке проекта можно найти общее описание сигнатур операторов.
Спроектировать собственный сценарий и посмотреть симуляцию на экране можно с помощью «Глазуриста» - онлайн js-инструмента…
(Спроектировав сценарий в браузере и скопировав текст в консоль, я убеждаюсь в корректности и практически полном совпадении его «воспроизведения» как на экране, так и индикаторами физических клавиатур, так как js-скрипт был практически весь вручную портирован с исходного консольного Си-проекта и потому местами выглядит крайне странно…)
Первый вариант пробной работы утилиты с восьмиричным управлением индикаторами можно увидеть на видео:
P.S.: Предварительный черновой рабочий вариант можно скачать этой ссылкой.
После распаковки, в папке «Glazeur» откройте файл Glazeur.exe (VirusTotal-анализ)…
Раньше консоль была более гибкой, но на данный момент рекомендую лишь несколько стабильных опций:
Введите «:» (двоеточие) для запуска сохранённого скрипта текущей сессии (по-умолчанию - сессия #1 и папка /session_00000001/);
Введите «.» (точку), чтобы завершить текущую сессию;
Жмите ESC во время исполнения сценария для его прерывания…
Был несколько обновлён и доработан также Глазурист. Практически всё, на что способна оригинальная консольная программа, доступно и в рамках «Глазуриста»…
Тем самым, скопировав с окна Глазуриста свой собственный глазурный сценарий в буфер обмена, его можно вставить в окно консоли правым кликом, после чего начнётся его немедленное исполнение. В папке текущей сессии файл сценария также обновится.
Как пользоваться: Что в окне консоли, что в поле ввода страницы Глазуриста, можно нажимать клавиши 0-9 левой части клавиатуры, клавиши 0-9 правой части клавиатуры, а также клавиши A-Z. Что будет переключать исполнение сценария на соответствующую метку непосредственно в режиме реального времени. Если метка определена в сценарии, нажатие клавиши, закреплённой за ней, переключит исполнение на ту метку…
(В Глазуристе достаточно полный набор токенов-значков с всплывающими подсказками, удобными для интуитивного изучения)
Естественно, в каждом сценарии свой собственный набор «интерактивных меток» со своими эффектами…
Можете здесь обязательно сообщать о багах…
Возможно Ваша клавиатура не будет мигать, так как она единственная. В этом случае нужно перезадать свою очередь клавиатур в сценарии…
P.P.S.: Критикам моего бесполезного «произведения» я сразу скажу похожим рекламным лозунгом:
«Вы это ещё не делали? Тогда я сделаю это за Вас!»…
