Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Фикс отваливания кнопок общения при коннекте с русской раскладкой. #12763

Merged
merged 3 commits into from
Feb 18, 2024

Conversation

ZVee
Copy link
Contributor

@ZVee ZVee commented Jan 23, 2024

Описание изменений

Вероятно closes #12754
closes #8319
closes #9871
Потыкайте в тесте, оно ли?

Вся эта тема хорошо поломала мне мозг, но если коротко (на форуме бъенда это уже обсуждалось) то система макросов через winset на рантайме по какой-то причине не может добавить макрос в скин на кнопках букв когда у пользователя включена кириллица.

Однако, у вас фактически вся система хоткиейв работает без использования winset для исполнения комманд по кнопкам но по какой-то причине забыли внести код для кнопок комуникации для которых были 4 строки (?костылем?).

В коде можно было обойтись без переноса и ренейма проков с созданием дополнительных врапперов под оок и лоок прописав в датумы кийбиндов winset с вызовом команды, но я подумал пусть и эти последние 4 команды для хоткией станут проками.

Я там оторвал линку по которой кликаешь чтобы сделать резет макросов, если проблема была только с этими 4мя кнопками, то может она и не нужна, но само сообщение оставил. Если что по коду еще убрать/вернуть - напишите.

Почему и что этот ПР улучшит

Авторство

Чеинжлог

@TauKitty
Copy link
Contributor

Changelog status: 🔘 No changelog

@LudwigVonChesterfield LudwigVonChesterfield added the Test Merge Candidate ПР с этим лэйблом будет или уже находится с тест мерже label Jan 23, 2024
@KIBORG04
Copy link
Member

#8319
#9871

Еще вот два ишуя есть, фиксятся?

Co-authored-by: KIBORG04 <bossmira4@gmail.com>
@ZVee
Copy link
Contributor Author

ZVee commented Jan 23, 2024

Еще вот два ишуя есть, фиксятся?

Завтра посмотрю.


Там проснулся внезапно Люмокс, что-то выдрал из кода и выпустил 1628 бету, я почекал и оно похоже оно тоже фиксит эту проблему с winset() теперь)).
С одной стороны можно откатить изменения обратно на винсеты, а с другой стороны у вас датумы хоткеев как бы получаются сидят на системе хоткеев и на макро бъенда для этих 4х кнопок. Т.к основная тема "костыля" который был, это не назначенные keydown проки под нажатия этих кнопок.

@ZVee
Copy link
Contributor Author

ZVee commented Jan 24, 2024

Еще вот два ишуя есть, фиксятся?

Чувствую пост будет большеват :)

Потыкал немного и судя по всему фиксит но скорее как побочка удаления винсетов из update_special_keybinds прока. Как и упоминалось в ишуе - когда стираешь кнопку для любой из комманд комуникации, в системе она становится none (где точно сидит none в ассоциации датумов или еще где не разбирался), записывается через винсет в макро "скина" как none вызови например say и начинает липнуть к модификаторам контрол, шифт или альт.

Как только кому-нибудь надо будет добавить обратно винсеты в update_special_keybinds проблема вернется назад. Но по идее мне кажется этот прок может не нужен вообще т.к система макросов биндов не нужна с системой хоткеев на датумах, если разобраться зачем там еще 4 строки типа if("North") movement_keys[key] = NORTH и может их как-то переписать или воткнуть куда-то еще (ну или оставить эти 4 переименовав прок и почистив комменты к нему).
Другим вариантом возможно будет none блочить в коде этого прока как одним из решений.

Вообще винсеты для макро (не считая действительно нужных которые собственно и делают возможным всю систему хоткеев больше наверно выглядит как фолбек на случай если по какой-то причине инпуты умрут, но это выглядит нереальным. Ну или для бинда там бъендовских фич типа скриншота (хотя и это можно на систему датумов хоткеев воткнуть наверно если оно не уже там).

Теперь то что я нашел помимо:
Взаимодействия с UI ребиндом кнопок вне зависимости какую кнопку мы трогаем и без разницы назначаем новую или чистим эскейпом каждый раз у нас вызывается set_macros() прок который ребиндит вот этот вот весь список:

macro key: Any, command: "KeyDown [[*]]"
macro key: Any+UP, command: "KeyUp [[*]]"
macro key: Back, command: ".winset \"input.text=\"\"\""
macro key: Tab, command: ".winset \"input.focus=true?map.focus=true input.background-color=#f0f0f0:input.focus=true input.background-color=#d3b5b5\""
macro key: Escape, command: Reset-Held-Keys
Say: macro key: F3
Say: macro key: T
OOC: macro key: F2
OOC: macro key: O
LOOC: macro key: L
ME: macro key: F4
ME: macro key: M

А помимо ребинда всех этих кнопок set_macros() у нас еще вызывает erase_all_macros для стирания макросов с последующим добавлением всего выше обратно.

Ну на самом деле из списка можно удалить все начиная с Say: macro key: F3 если мы берем в расчет этот ПР, но если в будущем кто-то зачем-то захочет винсеты применять добавляя что-то в update_special_keybinds, то получается такая картина.

@ZVee
Copy link
Contributor Author

ZVee commented Jan 24, 2024

А и еще момент, из-за того что при взаимодействии с UI ребинда кнопок у нас вызывается set_macros() то например на версии бъенда ниже 1628 и без этого ПРа при включенной русской раскладкой можно заметить как у нас тотчас лезет сообщение Пожалуйста, переключитесь на английскую раскладку и кликните сюда, чтобы исправить хоткеи коммуникаций., и учитывая что у нас каждый раз идет попытка перезаписывания макросов с нуля то с русской раскладкой все те символы которые не принимаются соответственно у нас бонусом еще и отваливается что-то. А казалось бы, мы можем в UI даже не касаться конкретно этих кнопок а ребиндить какую-нибудь не входящую в выше список из соседнего сообщения.

@volas volas requested a review from KIBORG04 January 29, 2024 04:37
@volas
Copy link
Member

volas commented Jan 29, 2024

@KIBORG04 что думаешь, с учетом фикса https://www.byond.com/forum/post/2694120

@arygal
Copy link
Contributor

arygal commented Jan 29, 2024

Фикс как то не особо работает на 514. Зашёл, потыкал X чтобы поменять руки, "Как минять руки" - ушёл делать fix keybindings.

@volas
Copy link
Member

volas commented Feb 10, 2024

У нас есть несколько людей, кто разбирался с кейбиндами лучше меня. Почему вы оставляете этот ПР на меня 😫

@KIBORG04
Copy link
Member

Ох, точно, но вроде люммокс пофиксил, а ТМы показал себя нормально

@volas volas merged commit a8eff8e into TauCetiStation:master Feb 18, 2024
12 checks passed
@ZVee ZVee deleted the fix_comm_hotkeys branch February 18, 2024 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Test Merge Candidate ПР с этим лэйблом будет или уже находится с тест мерже
Projects
None yet
6 participants