Версия для печати темы
GBX.ru _ GP2X _ Кнопки Caanoo
Автор: quasist Вторник, 09 ноября 2010, 23:55
название клавиши=код клавиши
A=0
X=1
B=2
Y=3
L=4
R=5
HOME=6
HOLD=7
HELP1=8
HELP2=9
CLICK=10
При нажатом HOLD все остальные клавиши "замораживаются" вместе с координатами джойстика.
При нажатом CLICK можно двигать джойстиком и считывать координаты
Автор: sdm Четверг, 18 августа 2011, 10:32
click - это нажатие на джойстик? Если так, то на него почему-то не реагирует.
Автор: Hahahoj Воскресенье, 28 августа 2011, 13:17
Если обработка клика не включена разработчиком в мапинг используемых кнопок - он ни на что и не будет реагировать.
Автор: sdm Понедельник, 29 августа 2011, 10:06
QUOTE (Hahahoj @ Воскресенье, 28 августа 2011, 13:17)
Если обработка клика не включена разработчиком в мапинг используемых кнопок - он ни на что и не будет реагировать.
Так в том-то и дело, что я его обрабатываю, но не реагирует. Остальные кнопки при этом нормально обрабатываются, только на эту не реагирует. Вот и подумал, что может надо как-то особенно его обрабатывать, не так как остальные кнопки. Я кстати и не встречал еще приложений где он работает, может в моей приставке он не работает. У кого-нибудь получалось клик задействовать?
Автор: quasist Понедельник, 29 августа 2011, 12:52
QUOTE (sdm @ Понедельник, 29 августа 2011, 10:06)
Так в том-то и дело, что я его обрабатываю, но не реагирует.
Код обработки?
Автор: sdm Понедельник, 29 августа 2011, 13:32
QUOTE (quasist @ Понедельник, 29 августа 2011, 12:52)
Примерный привожу, так как за точным надо до дома добраться:
CODE
enum CaanooButtons {
CAANOO_BUTTON_A = 0,
...
CAANOO_BUTTON_JOY = 10
};
...
SDL_Event event;
while ( SDL_PollEvent(&event) )
{
switch( event.jbutton.button )
{
...
case CAANOO_BUTTON_JOY:
{
...
break;
}
...
}
}
Вобщем суть в том что если CAANOO_BUTTON_JOY заменить на другую кнопку, то на нее реагирует, а на эту не реагирует.
Автор: Hahahoj Понедельник, 29 августа 2011, 18:47
Реальный код приведи, смысл от настоящей реализации может отличаться кардинально.
Вот кусочек SDK-шки:
CODE
enum
{
// 버튼 상태 = 단말기 / 조이스틱
// 그린 아시아 칩셋 사용 조이스틱 의존
BTN_A = 0, // A / 1
BTN_X = 1, // X / 2
BTN_B = 2, // B / 3
BTN_Y = 3, // Y / 4
BTN_L = 4, // L / 5, L1
BTN_R = 5, // R / 6, L2
BTN_HOME = 6, // Home / 7, R1
BTN_HOLD = 7, // Hold / 8, R2
BTN_HELP1 = 8, // Help I / Select
BTN_HELP2 = 9, // Help II / Start
BTN_TACT = 10, // Tact / L Thumb Stick
};
Автор: sdm Вторник, 30 августа 2011, 09:55
Вот реальный код (чтобы не загромождать пост вырезал не имеющее отношения к проблеме):
io.h:
CODE
...
enum CaanooButtons {
CAANOO_BUTTON_A = 0,
CAANOO_BUTTON_X = 1,
CAANOO_BUTTON_B = 2,
CAANOO_BUTTON_Y = 3,
CAANOO_BUTTON_L = 4,
CAANOO_BUTTON_R = 5,
CAANOO_BUTTON_HOME = 6,
CAANOO_BUTTON_1 = 8,
CAANOO_BUTTON_2 = 9,
CAANOO_BUTTON_JOY = 10,
...
};
...
io.cpp:
CODE
...
int IO::IsButtonDown (int pBut)
{
return SDL_JoystickGetButton( m_joy, pBut );
}
...
int IO::Pollkey()
{
SDL_Event event;
while ( SDL_PollEvent(&event) )
{
switch (event.type) {
...
case SDL_JOYBUTTONDOWN:
return event.jbutton.button;
...
}
}
return -1;
}
main.cpp:
CODE
...
IO mIO;
...
while( !mIO.IsButtonDown( CAANOO_BUTTON_HOME ) )
{
...
int mKey = mIO.Pollkey();
switch (mKey)
{
case ( CAANOO_AXIS_RIGHT ):
case ( CAANOO_BUTTON_R ):
{
...
break;
}
case ( CAANOO_AXIS_LEFT ):
case ( CAANOO_BUTTON_L ):
{
...
break;
}
case ( CAANOO_BUTTON_A ):
{
...
break;
}
case ( CAANOO_BUTTON_X ):
{
...
break;
}
case ( CAANOO_BUTTON_JOY ):
case ( CAANOO_BUTTON_Y ):
{
...
break;
}
case ( CAANOO_BUTTON_HOME ):
{
exit(0);
}
}
На всякий случай прикладываю полный код и файл проекта для кодеблокс.
tts.zip ( 12.1кб )
Кол-во скачиваний: 467
Автор: Hahahoj Вторник, 30 августа 2011, 16:48
А вывести mKey и посмотреть шо там лежит при изменениях значений пробовал?
У тебя прошивка какая?
И это... На будущее вот тут поковыряйся, коли смотрю за свой движок взялся:
http://www.gp32x.com/board/index.php?showtopic=59429
Будет весьма полезно.
Квазист тут подсказал, что проверить клик можно на Флешчасмере Еве, там с помощью этой кнопки поднимаемся по лестницам и заходим в магазины (с третьего уровня).
Автор: sdm Вторник, 30 августа 2011, 19:36
QUOTE (Hahahoj @ Вторник, 30 августа 2011, 16:48)
А вывести mKey и посмотреть шо там лежит при изменениях значений пробовал?
Попробовал - там ничего когда эту кнопку жму. Видимо она у меня не работает.
Еще попробовал вот http://www.gp32x.com/board/index.php?/topic/56370-caanoo-controls-info/page__view__findpost__p__913127 тестовый пример собрать, который отображает какая кнопка нажата - там тоже не реагирует.
QUOTE
У тебя прошивка какая?
1.6.0
QUOTE
И это...
На будущее вот тут поковыряйся, коли смотрю за свой движок взялся:
http://www.gp32x.com/board/index.php?showtopic=59429
Будет весьма полезно.
Спасибо, посмотрю.
За свой движок я не брался, пока просто пробую портировать уже готовые приложения.
Автор: Hahahoj Вторник, 30 августа 2011, 19:44
Ну, насчет портирования - я давно заметил:
http://wiz.rusbase.net/forum/viewtopic.php?t=1021
Надеюсь до ума доведешь, но сразу предупрежу - Визовская версия фрихерос слетала у меня довольно часто.
Автор: sdm Среда, 31 августа 2011, 13:13
QUOTE (Hahahoj @ Вторник, 30 августа 2011, 19:44)
Ну, насчет портирования - я давно заметил:
http://wiz.rusbase.net/forum/viewtopic.php?t=1021
Надеюсь до ума доведешь, но сразу предупрежу - Визовская версия фрихерос слетала у меня довольно часто.
Ого, круто, уже новость даже есть )
Насчет доведения до ума - если будут сообщать об ошибках, то по возможности могу исправлять, сам-то играть в них пока не собирался и не уверен, что соберусь.
Заметил что http://sourceforge.net/projects/fheroes2/files/fheroes2/fheroes2-src-r2490.tgz/download выложили. Для начала попробую ее собрать. Еще есть идея сделать скроллинг джойстиком, и возможность назначения кнопок джойстика для других действий.
Автор: Hahahoj Четверг, 01 сентября 2011, 11:15
Было б отлично, мне как раз вторые герои больше всего нравятся. Но к сожалению поиграть на Визе так толком из-за глюков и не получилось.
Автор: sdm Четверг, 01 сентября 2011, 15:53
Сделал. Можно http://www.gp32x.com/board/index.php?app=core&module=attach§ion=attach&attach_id=591 взять пока на openhandhelds не обновилось.
Автор: quasist Четверг, 01 сентября 2011, 16:24
Может проект стоит в отдельную тему вынести?
Автор: sdm Четверг, 01 сентября 2011, 16:47
QUOTE (quasist @ Четверг, 01 сентября 2011, 16:24)
Может проект стоит в отдельную тему вынести?
ок. Теперь обсуждение http://gbx.ru/index.php?showtopic=70747.
Автор: Hahahoj Четверг, 01 сентября 2011, 17:03
Так. Проверить клик можно еще проще - чего то я стормозил.
Заходим в настройки консоли, выбираем test mode, там жмем L+R, появляется макет консоли, на ней проверяем работоспособность кнопок.
Если не работает - попробуй либу от Рикку - там точно работало, либо разбирайся в коде, там должен быть один принцип для срабатывания всех кнопок.
Грабли могут быть также из-за того что у enum-а нет предопределенной правилами языка типизации (но сомневаюсь), тип значения заданного в нем отдается на откуп компилятору, а там вполне может зависить от настроек компилятора. Если хочешь точного соответствия - попробуй сменить на const.
Вообще-больше всего ошибка с кликом смахивает на несоответствие типов переменных (возможно возвращаемого значения) тому что ты должен в итоге получить.
В любом случае с исходниками библиотеки ввода от Рикку этой проблемы нет
Автор: sdm Суббота, 03 сентября 2011, 16:28
QUOTE (Hahahoj @ Четверг, 01 сентября 2011, 17:03)
Заходим в настройки консоли, выбираем test mode, там жмем L+R, появляется макет консоли, на ней проверяем работоспособность кнопок.
Да и тут не работает.
QUOTE
Если не работает - попробуй либу от Рикку - там точно работало, либо разбирайся в коде, там должен быть один принцип для срабатывания всех кнопок.
Библиотеку от Рикку тоже попробовал - и в ней не работает.
В общем ладно. Спасибо за помощь, уже смирился с тем, что клик не работает, можно и без него обойтись..