Привет!

В своём новогоднем посте я хвастался своим новым игровым ПК. Но, к сожалению, к играм прилагается ещё Windows, которую надо хотя бы как-нибудь настроить, чтобы не тошнило. Вопреки расхожему мнению, Windows 11 мне лично сильно удобнее «десятки», однако и здесь есть пара моментов, которые пришлось кастомизировать.

Переключение раскладки по CapsLock

Это моя вечная головная боль на Винде. Для тех, кто не в курсе — уже больше 10 лет я переключаю раскладку клавиатуры (Ru/En) исключительно по капсу, это позволяет мне печатать предложения вида «Нажмите кнопку Enter для ввода, а Escape для отмены» не меняя положения рук и очень быстро. В Linux возможность переключения раскладки по CapsLock буквально из коробки, в macOS тоже, но там есть ощутимая задержка при переключении, из-за чего пришлось нагородить небольшой костыль (пишите в комментариях, если интересно), а вот в Windows никак. Ну вообще никак. Раньше я выходил из положения путём создания кастомной англо-русской раскладки, «нижний» ряд клавиш — это английские буквы, а «верхний» — русские. И CapsLock работал нативно. Утилита для создания такой кастомной клавиатуры называется kbdasm, но она не заработала у меня в Windows 11, хотя автор утверждает обратное. Да и не очень удобно, потому что иногда Windows по своей прихоти добавляет в систему то оригинальную русскую, то оригинальную английскую раскладку, помимо моей двойной.

И тут недавно я вспомнил про Microsoft PowerToys — собственный Microsoft-овский набор утилит для «продвинутых юзеров» типа меня. Там вообще много чего интересного, но нас интересует одна конкретная тулза под названием “Keyboard Manager utility”. А дальше всё максимально просто: указываем, что нажатие CapsLock имитирует сочетание Win+Space и вуаля! Да, исходная функция капса пропадает, но я не гордый, могу и Shift зажать, если надо. Ну и в играх тоже кое-где используется CapsLock, его надо просто переназначить.

Запись видео из игр

Я довольно часто записываю забавные моменты в Helldivers 2 и других играх. Записывалка из Steam мне не нравится — работает нестабильно, крашится, и непонятно как работает. Для сохранения надо нажать кучу клавиш и не всегда результат сбрасывается на диск как мне надо. На 99% уверен, что это я криворукий и всё там нормально, но в целом насрать, ведь есть проверенный годами оверлей от Nvidia (ещё его называют Shadowplay).

До покупки ПК я играл на ноутбуке и во всех играх ставил разрешение 1920x1080, соответственно, записи из игр сохранялись в том же разрешении и весили мало. Далее я открывал LosslessCut, за минуту вырезал из пятиминутного буфера последние N секунд, сохранял в небольшой (20-40 Мб) файл и кидал друзьям. Теперь же я играю в разрешении 2560x1440, что в 1.78 раз больше предыдущего. Записи стали весить по 100+ мегабайт, что уже не так прикольно ни для меня (больше хранить), ни для друзей (дольше скачивать). Вишенкой на этом торте из говна стал тот факт, что Telegram — а именно туда я скидываю записанные клипы — далеко не всегда нормально воспринимает видео с кодеком AV1. Особенно часто проблемы возникают на iOS, но и на Android тоже бывало, пусть и реже.

Идея №1: настроить Shadowplay для записи сразу в 1080p и, возможно, с пониженным битрейтом. Такое меня не устраивает: хочется иметь исходник в большом качестве для возможной заливки на YouTube.

Идея №2: написать скрипт, который будет конвертировать видео из 1440p в 1080p локально на ПК, а дальше заливать куда надо. Но программировать так впадлу, особенно зная, что надо сперва ещё найти подходящую комбинацию флагов для ffmpeg. Вот бы существовал сайт, куда можно сделать запрос на естественном языке и получить пример кода…

Короче, я пошёл в Gemini.

Идея простая: нужен скрипт, который будет доступен в контекстном меню по правой кнопке мыши, чтобы я просто кликал по видео и выбирал пункт в меню, а дальше скрипт создавал бы сам нужное видео при помощи ffmpeg в том же каталоге. Сам ffmpeg качать не надо — он уже поставляется вместе с LosslessCut.

В общем, нейронка мне нагенерировала следующий код (комментарии от Gemini):

@echo off
:: Проверка, перетащили ли файл на скрипт
if "%~1"=="" goto :eof

:: Path to FFmpeg
set FFMPEG="C:\Users\Alex\Documents\LosslessCut-win-x64\resources\ffmpeg.exe"

:loop
echo Конвертирую "%~n1" в 1080p...

:: Запуск конвертации
:: Мы берем файл (%1), сжимаем видеокартой (-c:v hevc_nvenc), меняем размер (-vf scale), копируем звук (-c:a copy)
:: И сохраняем рядом с оригиналом с припиской _1080p

%FFMPEG% -i "%~1" -c:v hevc_nvenc -rc:v vbr -cq 23 -preset p7 -vf scale=1920:-1:flags=lanczos -c:a copy "%~dp1%~n1_1080p.mp4"

shift
if not "%~1"=="" goto :loop

pause

В первоначальной версии сохранились пояснения по поводу выбора флагов, приведу и их тоже:

:: Команда конвертации
:: -c:v hevc_nvenc (используем видеокарту Nvidia и кодек H.265)
:: -vf scale=1920:-1:flags=lanczos (ресайз до 1080p с фильтром Ланцоша для четкости)
:: -cq 23 (качество, аналог RF в Handbrake. Меньше = лучше качество, больше размер)
:: -preset p7 (максимальное качество кодирования NVENC)
:: -c:a copy (копируем звук без изменений)

Про фильтр Ланцоша ещё такое примечание:

В FFmpeg я добавила флаг flags=lanczos. Фильтр Lanczos делает картинку чуть более резкой при уменьшении, что компенсирует потерю разрешения. Это делает 1080p видео визуально очень четким (“crisp”).

Файл сохранил как convert_to_1080p.bat.

Следующий этап — добавление скрипта в контекстное меню. Gemini сгенерировала REG-файл:

Windows Registry Editor Version 5.00

; Название пункта в меню
[HKEY_CLASSES_ROOT\*\shell\ConvertTo1080]
@="Compress to 1080p (NVENC)"
"Icon"="imageres.dll,-102"

; Команда запуска. %1 передает путь к файлу в батник
[HKEY_CLASSES_ROOT\*\shell\ConvertTo1080\command]
@="\"C:\\Users\\Alex\\path\\to\\convert_to_1080p.bat\" \"%1\""

Изначально я пробовал указать имя на русском, но текст отображался кракозябрами, поэтому исправил на английский вариант, это не принципиально (сама система у меня на английском).

Тут возникла проблема: по умолчанию по нажатию правой кнопки мыши Windows 11 показывает короткое контекстное меню, куда нельзя просто так добавить запись. Мой же скрипт виден только после нажатия “Show more options”, это лишний клик, а я нетерпеливый. Решение — отключить нахрен короткое контекстное меню и сразу показывать полное. Gemini написала мне и такой REG-файл тоже:

Windows Registry Editor Version 5.00

; Возвращаем классическое меню Windows 10 как дефолтное в Windows 11
[HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32]
@=""

Перезапустил процесс explorer.exe и получил красивое:

Да, новая команда показывается для любого типа файлов, но, если честно, мне на это совершенно плевать, ведь я же не дурак и знаю, что скрипт нужен только для видео :)

Итог

Стоил ли этот пердолинг того? Однозначно да. Учитывая, как часто я переключаю раскладку на лету и как регулярно обрезаю и отправляю видео, вышеописанные решения в перспективе сэкономят мне много человекочасов. И поддерживать никак не надо: работает — не трогай.

Спасибо за внимание! Призываю вас поделиться своими лайфхаками в комментариях к этому посту в Telegram.