Напиши расширение TurboWarp на JavaScript, названи... (Branch)

Créé le : 8 août 2026

Répondu en utilisant GPT-5.6 Thinking par Chat01

Question

Напиши расширение TurboWarp на JavaScript, название: "Макросы", цвет расширения: #058aa8 (в системе RGB). В перечислении блоков расширения все заголовки блоков между их перечислением также отображать в палитре блоков там, где они находятся в перечислении блоков. Пустые блоки между блоками в перечислении блоков - небольшое пространство между этими блоками в палитре блоков (если пустых строк несколько, умножать на количество пустых строк между перечислением блоков). Вот максимально подробный план расширения:
"()" - поле ввода текста; "{}" - поле ввода только числового/цифрового значения; "[]" - поле выбора варианта; "([])" - поле выбора варианта, куда можно вставлять блоки-переменные (все овальные блоки, не только переменные); "/" - отделение вариантов друг от друга в поле выбора варианта (не важно, можно ли туда вставлять овальные блоки-переменные или нет).
Блоки:
Заголовок "Симуляция нажатия"

  1. Блок "симулировать нажатие ([])" - варианты выбора: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  2. Блок "остановить симуляцию нажатия ([])" - варианты выбора: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  3. Блок-сенсор "([]) симулирует нажатие?" - варианты выбора: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  4. Блок "симулировать нажатие ()" - можно вписать любую клавишу/кнопку/скроллинг и она будет работать: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  5. Блок "остановить симуляцию нажатия ()" - можно вписать любую клавишу/кнопку/скроллинг и она будет работать: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  6. Блок-сенсор "() симулирует нажатие?" - можно вписать любую клавишу/кнопку/скроллинг и она будет работать: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  7. Блок-переменная "все симулируемые активы" - перечисление всех симулируемых клавиш/кнопок/скроллингов и т.д. в формате: "(название клавиши/кнопки/скриллинга); (название клавиши/кнопки/скриллинга); ....".

  8. Блок-переменная "количество симулируемых активов" - количество всех симулируемых клавиш, кнопок и скроллингов вместе взятых.

  9. Блок "установить тип симуляции нажатия клавиш-букв (["английские и русский" / "только английские" / "только русские"])" - если клавиша - буква, "английский и русские" - симулирует и английскую и русскую версию клавиши одновременно; "только английские" и "только русские" - понятно.

  10. Блок "установить тип симуляции нажатия клавиш-символов (["с Shift и без" / "только с Shift" / "только без Shift"])" - если клавиша-символ, симулировать все возможные варианты этой клавиши в соответствии с выбором в блоке.

  11. Блок "установить раскладку симуляции нажатия клавиш-символов (["английская и русская" / "только английская" / "только русская"])" - если клавиша-символ, симулировать все возможные варианты этой клавиши в соответствии с выбором в блоке.

  12. Блок-переменная "тип симуляции нажатия клавиш-букв"

  13. Блок-переменная "раскладка симуляции нажатия клавиш-символов"

  14. Блок-переменная "тип симуляции нажатия клавиш-символов" - ("с Shift и без" / "только с Shift" / "только без Shift").

Заголовок "Сенсоры нажатий"
15. Блок-сенсор "актив ([]) нажат?" - варианты выбора: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).
16. Блок-сенсор "актив () нажат?" - можно вписать любую клавишу/кнопку/скроллинг и она будет работать: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  1. Блок-переменная "все нажатие активы" - перечисление всех симулируемых клавиш/кнопок/скроллингов и т.д. в формате: "(название клавиши/кнопки/скриллинга); (название клавиши/кнопки/скриллинга); ....".

  2. Блок-переменная "количество нажатых активов" - количество всех нажатых клавиш, кнопок и скроллингов вместе взятых.

  3. Блок "установить тип считывания нажатых клавиш-букв (["английский и русский" / "только английский" / "только русский"])" - допустим есть блок-сенсор "клавиша (W) нажата?", с типом "английский и русский" и нажатие "Ц" и нажатие "W" будет засчитываться, с типом "только английский" будет засчитываться только нажатие "W", с "только "только русский" только нажатие "Ц".

  4. Блок "установить тип считывания нажатых клавиш-символов (["с Shift и без" / "только с Shift" / "только без Shift"])" - тоже самое что и прошлый (19) блок, только теперь с Shift и с клавишами-символами.

  5. Блок "установить раскладку считывания нажатых клавиш-символов (["английский и русский" / "только английский" / "только русский"])" - тоже самое, что и девятнадцатый (19) блок, только с клавишами-символами.

  6. Блок-переменная "тип считывания нажатий клавиш-букв" - "английский и русский" / "только английский" / "только русский" в зависимости от девятнадцатого (19) блока.

  7. Блок-переменная "тип считываний нажатий клавиш-символов" - "с Shift и без" / "только с Shift" / "только без Shift" в зависимости от двадцатого (20) блока.

  8. Блок-переменная "раскладка считывания нажатий клавиш-символов" - "английский и русский" / "только английский" / "только русский" в зависимости от двадцать первого (21) блока.

Заголовок "Макросы"
25. Блок "начать запись макроса (особое значение-название макроса, для отделения его от других)" - возможность записывать несколько макросов, засчитывает нажатие всех клавиш/кнопок/скроллингов и т.д., с возможностью воспроизвести их потом.
26. Блок "остановить запись макроса (особое значение-название макроса, для отделения его от других)" - возможность записывать несколько макросов, засчитывает нажатие всех клавиш/кнопок/скроллингов и т.д., с возможностью воспроизвести их потом.
27. Блок "продолжить/приостановить запись макроса (особое значение-название макроса, для отделения его от других)" - возможность записывать несколько макросов, засчитывает нажатие всех клавиш/кнопок/скроллингов и т.д., с возможностью воспроизвести их потом.
28. Блок "очистить макрос (особое значение-название макроса, для отделения его от других)" - возможность записывать несколько макросов, засчитывает нажатие всех клавиш/кнопок/скроллингов и т.д., с возможностью воспроизвести их потом.

  1. Блок "воспроизвести/приостановить макрос (особое значение-название макроса, для отделения его от других)" - возможность записывать несколько макросов, засчитывает нажатие всех клавиш/кнопок/скроллингов и т.д., с возможностью воспроизвести их потом.

  2. Блок-сенсор "макрос (особое значение-название макроса, для отделения его от других) существует?" - если макрос с таким особым значением-названием не записывался или был очищен (сброшен), выдавать значение "false".

  3. Блок-сенсор "макрос (особое значение-название макроса, для отделения его от других) содержит ([])" - варианты выбора: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  4. Блок-сенсор "макрос (особое значение-название макроса, для отделения его от других) содержит ()" - можно вписать любую клавишу/кнопку/скроллинг и она будет работать: все клавиши, доступные на клавиатуре (включая F1 - F12, Win и все кнопки Нум Пада), все кнопки мыши: "ПКМ" / "СКМ" / "ЛКМ" / "Дополнительный кнопки мыши" - (под "Дополнительные кнопки мыши" подразумевается симуляция нажатие всех дополнительных кнопок мыши одновременно, даже если их нет на мышки пользователя), а также: "Скроллинг вверх" / "Скроллинг вниз" (симулировать скроллинг колёсика мыши вверх или вниз, в зависимости от выбора).

  5. Блок-переменная "длина макроса (особое значение-название макроса, для отделения его от других)"

  6. Блок-переменная "количество записанных макросов"

Должен быть ОДИН скрипт на JavaScript (.js), без дополнительных скриптов, ТОЛЬКО JAVASCRIPT. Если что-либо (и всё связанное с этим, по желанию) никак реализовать - не реализовывай и пропускай!

Réflexion

Validated macro extension functionality and file presence

Worked for 5m 20s

Réponse

Готово. Создан один JavaScript-файл, без дополнительных скриптов:

Скачать macros_turbowarp.js

В нём:

  • название расширения «Макросы», цвет #058aa8 = RGB (5, 138, 168);
  • ровно 34 блока в указанном порядке;
  • заголовки «Симуляция нажатия», «Сенсоры нажатий», «Макросы» отображаются в палитре через поддерживаемый TurboWarp тип LABEL; (GitHub)
  • пустые строки представлены разделителями ---;
  • меню содержит английские/русские буквы, цифры, символы, F1–F12, Win, основные служебные клавиши, NumPad, ЛКМ/СКМ/ПКМ, дополнительные кнопки мыши и скроллинг;
  • меню вида ([]) разрешают вставлять овальные reporter-блоки;
  • реализованы режимы английской/русской раскладки и Shift;
  • реализованы физические сенсоры клавиатуры, мыши и колеса;
  • реализована внутренняя симуляция клавиатуры/мыши через I/O TurboWarp VM — VM действительно предоставляет postIOData() для передачи данных виртуальным устройствам. (GitHub)
  • реализована одновременная запись нескольких именованных макросов, пауза/продолжение, очистка, воспроизведение/пауза, проверка содержимого и длина;
  • длина макроса возвращается в миллисекундах;
  • синтаксис проверен через node --check, дополнительно прошёл функциональный smoke-test.

Расширение нужно загружать как unsandboxed Custom Extension, так как доступ к внутренней VM и глобальным событиям ввода требует режима без песочницы. TurboWarp официально описывает unsandboxed-расширения как выполняющиеся в основном окне с доступом к дополнительным возможностям. (docs.turbowarp.org)

Настоящие системные нажатия клавиш в Windows/других программах из браузерного JavaScript не выполняются: симуляция предназначена для TurboWarp и сенсоров самого расширения.

Partager cette Q&R