Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

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 можно двигать джойстиком и считывать координаты smile.gif

Автор: 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кб ) Кол-во скачиваний: 431

Автор: Hahahoj Вторник, 30 августа 2011, 16:48

А вывести mKey и посмотреть шо там лежит при изменениях значений пробовал?
У тебя прошивка какая?

И это... wink.gif На будущее вот тут поковыряйся, коли смотрю за свой движок взялся:
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
И это...  wink.gif На будущее вот тут поковыряйся, коли смотрю за свой движок взялся:
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
Если не работает - попробуй либу от Рикку - там точно работало, либо разбирайся в коде, там должен быть один принцип для срабатывания всех кнопок.

Библиотеку от Рикку тоже попробовал - и в ней не работает.

В общем ладно. Спасибо за помощь, уже смирился с тем, что клик не работает, можно и без него обойтись..