doom2d.org

Главная база плоских морпехов
Текущее время: 22 май 2024, 07:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
СообщениеДобавлено: 31 июл 2022, 01:51 
Не в сети
Приколист
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2023, 00:22 
Не в сети
Приколист
Аватара пользователя

Зарегистрирован: 04 фев 2010, 14:42
Сообщения: 902
Откуда: 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 по дефолту


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2023, 12:56 
Не в сети

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2023, 14:22 
Не в сети
Приколист
Аватара пользователя

Зарегистрирован: 04 фев 2010, 14:42
Сообщения: 902
Откуда: Equestria
я играю на повермаке. этого достаточно что бы не забить. так-то мне четвертый вариант тоже нравится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2023, 15:24 
Не в сети

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2023, 22:10 
Не в сети
Приколист
Аватара пользователя

Зарегистрирован: 04 фев 2010, 14:42
Сообщения: 902
Откуда: Equestria
70_JIET_A_MO3GA_HET» 2 вариант может вызвать проблемы?
если кто-то захочет сделать сам сборку с сдл 1.2, то для него будет сюрприз.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 фев 2023, 13:50 
Не в сети

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 фев 2023, 18:17 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 17 окт 2009, 23:43
Сообщения: 7535
Откуда: \\HULK
DeaDDooMER» 2) форкнуть сдл и пропатчить (закоментить интернационализацию кейсимов)
А в этом случае не пропадет возможность писать в чате, в консоли, в нике игрока на русском?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 фев 2023, 18:57 
Не в сети
Приколист
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 фев 2023, 22:43 
Не в сети
Приколист
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2023, 02:23 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 17 окт 2009, 23:43
Сообщения: 7535
Откуда: \\HULK
Можно затестить?

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2023, 04:22 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 17 окт 2009, 23:43
Сообщения: 7535
Откуда: \\HULK
Поиграл с мака:

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 фев 2023, 04:19 
Не в сети
Приколист
Аватара пользователя

Зарегистрирован: 04 фев 2010, 14:42
Сообщения: 902
Откуда: Equestria
Jabberwock» - Левый шифт биндится как А.
Jabberwock» - Забиндить кнопку тильды, которая у шифта, нельзя
Надо не забыть перепроверить

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 фев 2023, 08:19 
Не в сети
Принципиально неуничтожаем
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 фев 2023, 17:19 
Не в сети
Приколист
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 фев 2023, 17:52 
Не в сети
Приколист
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 фев 2023, 22:42 
Не в сети
Site Admin
Аватара пользователя

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

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
doom2d.org, since 2005