doom2d.org

Главная база плоских морпехов
It is currently 28 Mar 2025, 02:09

All times are UTC + 3 hours




Post new topic Reply to topic  [ 17 posts ] 
Author Message
PostPosted: 31 Jul 2022, 01:51 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Сборка с SDL 1.2.15, Mac OS X 10.5.8, при запуске с русской раскладкой клавиатуры управление в игре не работает. Нужно менять раскладку на английскую и перезапускать игру.
Скорее всего баг sdl, решения пока не вижу. Менять на sdl 2 нельзя, там есть более странный и мерзкий баг.


Top
 Profile  
 
PostPosted: 01 Feb 2023, 00:22 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
На 10.4.11 не воспроизводится. А не воспроизводится потому что не используется новое апи имеющееся на 10.5 (из-за него кстати и не запускалось на 10.4 до фикса сборки либ сегодня).

Что происходит. СДЛ на старте создаёт таблицу для конвертации сканкодов в кейсим. На 10.5 задействуется апи которое смотрит в текущую раскладку(язык) и перестраивает кейсимы под неё. В итоге при старте с русскоязычной раскладкой приходят русские кнопки ВСГДА и хз ещё в какой кодировке. Получается SDLK_* тоже не пригодны для кроссплатформенного кода, лол. Сканкоды тоже не получится, т.к. они платформо/аппаратно зависимы, на них в сдл 1.2 нет фиксированных кодов.

SDL-1.2.15/src/video/quartz/SDL_QuartzEvents.m, строка 216 (функция QZ_InitOSKeymap)

Какие решения:
1) сделать костыль специально под аппле (биндить сканкоды от кварца или что-нибудь вроде насильного изменения input source перед инициализацией сдл)
2) форкнуть сдл и пропатчить (закоментить интернационализацию кейсимов)
3) выкинуть сдл и сделать нормально дёргая апи макос напрямую
4) если мерзкий баг с тиками на сдл2 не воспроизводится в renders_updated, то можно просто юзать сдл2 по дефолту


Top
 Profile  
 
PostPosted: 01 Feb 2023, 12:56 
Offline

Joined: 27 Apr 2020, 20:02
Posts: 537
Мне нравится 4 решение с переходом в секретное 5, где оно выглядит как: "Провести опрос среди игроков, выяснить, кто играет на такой платформе, и забить"


Top
 Profile  
 
PostPosted: 01 Feb 2023, 14:22 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
я играю на повермаке. этого достаточно что бы не забить. так-то мне четвертый вариант тоже нравится.


Top
 Profile  
 
PostPosted: 01 Feb 2023, 15:24 
Offline

Joined: 27 Apr 2020, 20:02
Posts: 537
Ок. Очевидно, решение не должно вызывать проблем на других платформах. 1 вариант не должен вызывать таких проблем, но это временное решение. 2 вариант может вызвать проблемы? 3 вариант превратит игру в эксклюзив для повермаков. 4 вариант наиболее простое решение, которое не требует телодвижений кроме того, что главной веткой станет та с новыми рендерами


Top
 Profile  
 
PostPosted: 01 Feb 2023, 22:10 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
70_JIET_A_MO3GA_HET» 2 вариант может вызвать проблемы?
если кто-то захочет сделать сам сборку с сдл 1.2, то для него будет сюрприз.

70_JIET_A_MO3GA_HET» 3 вариант превратит игру в эксклюзив для повермаков.
не превратит. по той же самой причине по которой бэкэнд сдл 1.2 не стал эксклюзивом для всех платформ.


Top
 Profile  
 
PostPosted: 02 Feb 2023, 13:50 
Offline

Joined: 27 Apr 2020, 20:02
Posts: 537
По факту ты можешь сделать как хочешь. Никто не играет на повермаке, кто может что-то исправить в коде. Какой вариант бы ты ни выбрал, тебе ничего не возразить.


Top
 Profile  
 
PostPosted: 02 Feb 2023, 18:17 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7836
Location: \\HULK
DeaDDooMER» 2) форкнуть сдл и пропатчить (закоментить интернационализацию кейсимов)
А в этом случае не пропадет возможность писать в чате, в консоли, в нике игрока на русском?

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 02 Feb 2023, 18:57 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Нет. Оно конвертирует в что-то типа ЙЦУКЕН с другими, нефиксироваными кодами кнопок, вместо QWERTY/DVORAK/AZERTY с фиксированными кодами кнопок, и это создаёт проблему. А для ввода текста используется механизм EnableUNICODE.
Проблема с кнопкой параграфа (и другими) не совсем напрямую зависит от этого. В sdl 1.2 нет стабильного кода кнопки параграфа. И в e_input тоже нету. В любом случае надо будет делать платформоспецифичный код.


Top
 Profile  
 
PostPosted: 02 Feb 2023, 22:43 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Сделал обработку сканкодов вручную для osx. За основу взял код из сдл2. Теперь нету зависимости от выбранного языка перед запуском. А еще сдл2 зачем-то меняет местами GRAVE(тильду) и NONUSBACKSLASH(параграф) для ISO клавиатур, мне это поведение не нравится, но оставил.
https://repo.or.cz/d2df-sdl.git/commit/c7142be1c73501f5ca7fff57c6b1af1891ed83d0


Top
 Profile  
 
PostPosted: 03 Feb 2023, 02:23 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7836
Location: \\HULK
Можно затестить?

DeaDDooMER wrote:
А еще сдл2 зачем-то меняет местами GRAVE(тильду) и NONUSBACKSLASH(параграф) для ISO клавиатур, мне это поведение не нравится, но оставил.
это именно то, на что я ругался

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 03 Feb 2023, 04:22 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7836
Location: \\HULK
Поиграл с мака:

- Консоль работает как должна.
- Левый шифт биндится как А.
- Забиндить кнопку тильды, которая у шифта, нельзя
- Писать на русском в чате все равно нельзя
...
неплохо бы обновить game.wad и franken.dfz
...
- с мака играть довольно комфортно, его быстродействия (1.2Ггц/1.2Гб/Radeon 9200SE) хватает с большим запасом
- музыка на Кастльвании на маке более звучная и эффектная, но на многих других картах музыка или какие-то звуки не грузятся и не срабатывают.
- bind k "r_scale 0.5" "r_scale 1" позволяет на равных биться с 1024х768 против 1920х1080

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 06 Feb 2023, 04:19 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Jabberwock» - Левый шифт биндится как А.
Jabberwock» - Забиндить кнопку тильды, которая у шифта, нельзя
Надо не забыть перепроверить

Jabberwock» - Писать на русском в чате все равно нельзя
В чате говорил, но тут тоже повторю. Системные хоткеи игнорятся, как это исправить - хз. А так язык можно переключить мышкой в трее. Перепроверю еще на 10.4, мало ли какие-то ещё эффекты.

Jabberwock» неплохо бы обновить game.wad
Чтокудазачем? Сборка автоматическая, ресурсы такие же как и на других платформах.

Jabberwock» - музыка на Кастльвании на маке более звучная и эффектная, но на многих других картах музыка или какие-то звуки не грузятся и не срабатывают.
Речь о миди или о цифровом звуке? аппловский синтезатор можно выключить командой
sdl_native_music 0
и перезагрузить игру (будет использоваться тимидити, к нему надо еще сэмплы добавить).


Top
 Profile  
 
PostPosted: 06 Feb 2023, 08:19 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7212
Location: Владивосток
DeaDDooMER wrote:
А еще сдл2 зачем-то меняет местами GRAVE(тильду) и NONUSBACKSLASH(параграф) для ISO клавиатур, мне это поведение не нравится, но оставил.
А это точно не баг самого SDL2?

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 06 Feb 2023, 17:19 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Черный Думер» А это точно не баг самого SDL2?
Это делают специально. https://github.com/libsdl-org/SDL/blob/main/src/video/cocoa/SDL_cocoakeyboard.m#L383-L386
Если это убрать, то тильда будет возвращаться по кнопке с тильдой (на аппловской исо-клаве кнопка тильды рядом с левым шифтом, а не над табом)


Top
 Profile  
 
PostPosted: 06 Feb 2023, 17:52 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Jabberwock» - Левый шифт биндится как А.
Исправил. https://repo.or.cz/d2df-sdl.git/commit/e2b934c614ee1cc235e632a368576804f8c4f2b4
Модификаторы в сдл обрабатываются отдельно, поэтому для них всегда возвращалась A (код 0).
До кучи можно отключить обработку сканкодов и использовать старый метод. Поведение контроллируется переменной sdl_use_scancodes.

Jabberwock» - Забиндить кнопку тильды, которая у шифта, нельзя
У меня работает. Действия выполняются, в конфиг сохраняется и всё удачно загружается взад. Проверял после патча выше на 10.5.8.
UPD: на 10.4.11 тоже работает


Top
 Profile  
 
PostPosted: 06 Feb 2023, 22:42 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7836
Location: \\HULK
Да, левый шифт починился, и забиндить ту кнопку теперь тоже можно. Мб я делал что-то не так.
Про гейм.вад посмотрю подробно потом. На маке как минимум лого старой версии, мб и еще что-то. А мб и на ПК официальном лого старой версии.

Надо бы придумать, как быть с переключением раскладки во время игры в фулскрине. Чтобы не мышкой.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 17 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
doom2d.org, since 2007