doom2d.org

Главная база плоских морпехов
It is currently 09 Feb 2023, 08:03

All times are UTC + 3 hours




Post new topic Reply to topic  [ 17 posts ] 
Author Message
PostPosted: 31 Jul 2022, 01:51 
Offline
User avatar

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


Top
 Profile  
 
PostPosted: 01 Feb 2023, 00:22 
Offline
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 473
Location: Equestria
На 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: 30 Dec 2022, 00:46
Posts: 16
Мне нравится 4 решение с переходом в секретное 5, где оно выглядит как: "Провести опрос среди игроков, выяснить, кто играет на такой платформе, и забить"


Top
 Profile  
 
PostPosted: 01 Feb 2023, 14:22 
Offline
User avatar

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


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

Joined: 30 Dec 2022, 00:46
Posts: 16
Ок. Очевидно, решение не должно вызывать проблем на других платформах. 1 вариант не должен вызывать таких проблем, но это временное решение. 2 вариант может вызвать проблемы? 3 вариант превратит игру в эксклюзив для повермаков. 4 вариант наиболее простое решение, которое не требует телодвижений кроме того, что главной веткой станет та с новыми рендерами


Top
 Profile  
 
PostPosted: 01 Feb 2023, 22:10 
Offline
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 473
Location: Equestria
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: 30 Dec 2022, 00:46
Posts: 16
По факту ты можешь сделать как хочешь. Никто не играет на повермаке, кто может что-то исправить в коде. Какой вариант бы ты ни выбрал, тебе ничего не возразить.


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

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

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


Top
 Profile  
 
PostPosted: 02 Feb 2023, 18:57 
Offline
User avatar

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


Top
 Profile  
 
PostPosted: 02 Feb 2023, 22:43 
Offline
User avatar

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


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

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

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: 6867
Location: \\NEGRO
Поиграл с мака:

- Консоль работает как должна.
- Левый шифт биндится как А.
- Забиндить кнопку тильды, которая у шифта, нельзя
- Писать на русском в чате все равно нельзя
...
неплохо бы обновить 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
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 473
Location: Equestria
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: 6013
Location: Владивосток
DeaDDooMER wrote:
А еще сдл2 зачем-то меняет местами GRAVE(тильду) и NONUSBACKSLASH(параграф) для ISO клавиатур, мне это поведение не нравится, но оставил.
А это точно не баг самого SDL2?

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


Top
 Profile  
 
PostPosted: 06 Feb 2023, 17:19 
Offline
User avatar

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


Top
 Profile  
 
PostPosted: 06 Feb 2023, 17:52 
Offline
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 473
Location: Equestria
Jabberwock» - Левый шифт биндится как А.
Исправил.https://repo.or.cz/d2df-sdl.git/commit/ ... 04f8c4f2b4
Модификаторы в сдл обрабатываются отдельно, поэтому для них всегда возвращалась 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: 6867
Location: \\NEGRO
Да, левый шифт починился, и забиндить ту кнопку теперь тоже можно. Мб я делал что-то не так.
Про гейм.вад посмотрю подробно потом. На маке как минимум лого старой версии, мб и еще что-то. А мб и на ПК официальном лого старой версии.

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

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


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