CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
kbd.c-Dateireferenz
#include "lolevel.h"
#include "platform.h"
#include "core.h"
#include "conf.h"
#include "keyboard.h"
#include "touchscreen.h"
#include "gui.h"
#include "gui_draw.h"
#include "gui_osd.h"
#include "gui_menu.h"
#include "gui_user_menu.h"
#include "font.h"
#include "kbd_common.h"
+ Include-Abhängigkeitsdiagramm für kbd.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define TS_KEY_SCRIPT_RUN   200
 
#define TS_KEY_TOGGLE_RAW   201
 
#define TS_KEY_TOGGLE_OSD   202
 
#define TS_KEY_TOGGLE_OVRD   203
 
#define TS_KEY_PLAYBACK   204
 
#define TS_KEY_POWER   205
 
#define TS_KEY_EXIT   206
 
#define TS_KEY_USER_MENU   207
 
#define TS_KEY_ZOMBIE   0xFFFE
 
#define MODE_VID   0x400
 

Funktionen

void _GetKbdState (long *)
 
int kbd_is_blocked (void)
 
int get_usb_bit ()
 
const char * gui_on_off_enum (int change, int arg)
 
const char * gui_histo_show_enum (int change, int arg)
 
const char * gui_override_disable_enum (int change, int arg)
 
static const char * ts_user_menu_enable (int change, __attribute__((unused)) int arg)
 
static const char * simulate_playback_press (int change, __attribute__((unused)) int arg)
 
static const char * simulate_power_press (int change, __attribute__((unused)) int arg)
 
static const char * ts_exit_alt (int change, __attribute__((unused)) int arg)
 
static const char * ts_run_script (int change, __attribute__((unused)) int arg)
 
static int is_button_displayed (int b, int guiMode, int camMode)
 
static int is_button_active (int b, int guiMode, int camMode)
 
int show_virtual_buttons ()
 
int chdk_process_touch ()
 
int ts_process_touch ()
 
void virtual_buttons ()
 
long __attribute__ ((naked))
 
void __attribute__ ((naked, noinline))
 *-------------------------------------------------------------------— Mehr ...
 
void kbd_fetch_data (long *state)
 
void my_kbd_read_keys ()
 

Variablen

long kbd_new_state [4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }
 
long kbd_prev_state [4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }
 
long kbd_mod_state [4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }
 
static long touch_panel_state = 0xFFFFFFFF
 
static long touch_panel_button = 0xFFFFFFFF
 
gui_handler scriptGuiHandler
 
KeyMap keymap []
 
int redraw_buttons = 1
 

Makro-Dokumentation

#define MODE_VID   0x400

Definiert in Zeile 42 der Datei kbd.c.

#define TS_KEY_EXIT   206

Definiert in Zeile 38 der Datei kbd.c.

#define TS_KEY_PLAYBACK   204

Definiert in Zeile 36 der Datei kbd.c.

#define TS_KEY_POWER   205

Definiert in Zeile 37 der Datei kbd.c.

#define TS_KEY_SCRIPT_RUN   200

Definiert in Zeile 32 der Datei kbd.c.

#define TS_KEY_TOGGLE_OSD   202

Definiert in Zeile 34 der Datei kbd.c.

#define TS_KEY_TOGGLE_OVRD   203

Definiert in Zeile 35 der Datei kbd.c.

#define TS_KEY_TOGGLE_RAW   201

Definiert in Zeile 33 der Datei kbd.c.

#define TS_KEY_USER_MENU   207

Definiert in Zeile 39 der Datei kbd.c.

#define TS_KEY_ZOMBIE   0xFFFE

Definiert in Zeile 40 der Datei kbd.c.

Dokumentation der Funktionen

long __attribute__ ( (naked)  )

Definiert in Zeile 332 der Datei kbd.c.

336 {
337  while (physw_run) {
338  _SleepTask(physw_sleep_delay);
339 
340  if (wrap_kbd_p1_f() == 1) { // autorepeat ?
341  _kbd_p2_f();
342  }
343  }
344 }
void __attribute__ ( (naked, noinline)  )

*-------------------------------------------------------------------—

!!

IS_ERROR( hSoundHandle )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

"MOV R3, #0\n" "STR R3, [R9]\n"

TODO! below is from sd400

"MOV R3, #0\n" "STR R3, [R9]\n"

TODO! below is from sd400

__MovieRecorder_c__100

__MovieRecorder_c__100

Definiert in Zeile 346 der Datei kbd.c.

347 {
348  mykbd_task_proceed();
349  _ExitTask();
350 }
void _GetKbdState ( long *  )
int chdk_process_touch ( )

Definiert in Zeile 170 der Datei kbd.c.

171 {
172  int guiMode = camera_info.state.gui_mode;
174 
175  unsigned short tx, ty; // Touch co-ordinate
176  tx = touch_screen_x * 360 / 0x2FF ;
177  ty = touch_screen_y * 240 / 0x1FF ;
178  if (conf.rotate_osd)
179  {
180  tx = 360 - tx;
181  ty = 240 - ty;
182  }
183 
184  if ( touch_screen_active ) // Search for CHDK on screen buttons matching co-ordinate
185  {
186  int i;
187  for (i=0; keymap[i].hackkey; i++)
188  {
189  if ((tx >= keymap[i].x1) && (tx < keymap[i].x2) && (ty >= keymap[i].y1) && (ty < keymap[i].y2) && is_button_active(i,guiMode,camMode))
190  {
192  }
193  }
194 
195  // Check if menu touched
196  int mk = gui_touch_process(tx, ty);
197  if (mk != 0)
198  {
199  for (i=0; keymap[i].hackkey; i++)
200  {
201  if ((keymap[i].hackkey == mk) && is_button_active(i,camera_info.state.gui_mode,camMode))
202  {
204  }
205  }
206  }
207  }
208  else
209  {
210  touch_panel_state = touch_panel_button ; // on touch release update touch_panel_state
211  touch_panel_button = 0xFFFFFFFF ; // this means there is not key repeat function though
212  }
213  return 0;
214 }
int get_usb_bit ( )

Definiert in Zeile 24 der Datei kbd.c.

25 {
26  long usb_physw[3];
27  usb_physw[USB_IDX] = 0;
28  _kbd_read_keys_r2(usb_physw);
29  return(( usb_physw[USB_IDX] & USB_MASK)==USB_MASK) ;
30 }
const char* gui_histo_show_enum ( int  change,
int  arg 
)
const char* gui_on_off_enum ( int  change,
int  arg 
)
const char* gui_override_disable_enum ( int  change,
int  arg 
)
static int is_button_active ( int  b,
int  guiMode,
int  camMode 
)
static

Definiert in Zeile 159 der Datei kbd.c.

160 {
161  return is_button_displayed(b, guiMode, camMode);
162 }
static int is_button_displayed ( int  b,
int  guiMode,
int  camMode 
)
static

Definiert in Zeile 148 der Datei kbd.c.

149 {
150  return(
151  (keymap[b].grp == 3) &&
152  (guiMode >= keymap[b].min_gui_mode) &&
153  (guiMode <= keymap[b].max_gui_mode) &&
154  (camMode & keymap[b].cam_mode_mask) &&
155  ((keymap[b].conf_disable == 0) || (*keymap[b].conf_disable == 0))
156  );
157 }
void kbd_fetch_data ( long *  state)

Definiert in Zeile 364 der Datei kbd.c.

364  {
365  _GetKbdState(state);
366  _kbd_read_keys_r2(state);
367  // update virtual buttons
368  if( kbd_is_blocked() )
369  {
370  // if (sdelay > 5 )
371  // {
373  virtual_buttons();
374  kbd_new_state[3] = touch_panel_state; // Yes, use virtual button state
375  // } else sdelay++ ;
376  }
377  else
378  {
379  kbd_new_state[3] = touch_panel_state = 0xFFFFFFFF; // No, clear out virtual button state
380  }
381 }
int kbd_is_blocked ( void  )

Definiert in Zeile 60 der Datei kbd_process.c.

61 {
62  return kbd_blocked;
63 }
void my_kbd_read_keys ( )

Definiert in Zeile 383 der Datei kbd.c.

384 {
387 }
int show_virtual_buttons ( )

Definiert in Zeile 164 der Datei kbd.c.

165 {
166  extern int active_palette_buffer;
167  return((active_palette_buffer == 0x00) || (active_palette_buffer == 0x10)) ;
168 }
static const char* simulate_playback_press ( int  change,
__attribute__((unused)) int  arg 
)
static

Definiert in Zeile 63 der Datei kbd.c.

64 {
65  void levent_set_play(void);
66  void levent_set_record(void) ;
67  if ( change )
68  {
70  if (camMode) levent_set_play(); else levent_set_record() ;
71  }
72  return 0;
73 }
static const char* simulate_power_press ( int  change,
__attribute__((unused)) int  arg 
)
static

Definiert in Zeile 75 der Datei kbd.c.

76 {
77  void camera_shutdown_in_a_second(void);
78  if (change) camera_shutdown_in_a_second();
79  return 0;
80 }
static const char* ts_exit_alt ( int  change,
__attribute__((unused)) int  arg 
)
static

Definiert in Zeile 82 der Datei kbd.c.

83 {
84  if (change) exit_alt() ;
85  return 0;
86 }
int ts_process_touch ( )

Definiert in Zeile 216 der Datei kbd.c.

217 {
218  int rv = 0, i;
219 
220  if (touch_panel_state != (long)0xFFFFFFFF)
221  {
222  int guiMode = camera_info.state.gui_mode;
224 
225  for (i=0; keymap[i].hackkey; i++)
226  {
227  if (is_button_active(i, guiMode, camMode))
228  {
229  if (kbd_is_key_clicked(keymap[i].hackkey))
230  {
231  if (keymap[i].chg_val)
232  {
233  keymap[i].chg_val(1,(int)keymap[i].conf_val);
234  rv = keymap[i].redraw & 1;
235  }
236  if (keymap[i].redraw & 2) redraw_buttons = 1;
237  }
238  }
239  }
240  }
241  return rv;
242 }
static const char* ts_run_script ( int  change,
__attribute__((unused)) int  arg 
)
static

Definiert in Zeile 88 der Datei kbd.c.

89 {
90  if (change)
91  {
92  kbd_new_state[2]=kbd_new_state[2]&0xFFFFFFC0 ;
93  }
94  return 0;
95 }
static const char* ts_user_menu_enable ( int  change,
__attribute__((unused)) int  arg 
)
static

Definiert in Zeile 49 der Datei kbd.c.

50 {
51  extern void gui_menu_init();
53  extern int gui_user_menu_flag ;
54  if ( change )
55  {
57  gui_user_menu_flag = 0;
59  }
60  return 0;
61 }
void virtual_buttons ( )

Definiert in Zeile 247 der Datei kbd.c.

248 {
249  int guiMode = camera_info.state.gui_mode;
250  char buf[30];
251 
252  //if(menu_key_index == -1)
253  //{
254  // int i;
255  // for (i=0; keymap[i].hackkey != KEY_MENU; i++);
256  // menu_key_index = i;
257  //}
258 
259  if (redraw_buttons)
260  {
261  int i, x1, y1, x2, y2, ofst;
263 
264  twoColors c1 = MAKE_COLOR(COLOR_RED_DK,COLOR_WHITE); // ALT exit button
265  twoColors c2 = MAKE_COLOR(COLOR_WHITE, COLOR_BLUE_DK); // Right side keys
266  twoColors c3 = MAKE_COLOR(COLOR_WHITE, COLOR_RED_DK); // Left side keys
267  twoColors c4 = MAKE_COLOR(COLOR_GREY_DK_TRANS, COLOR_WHITE); // Semi-transparent keys
268 
269  for (i=0; keymap[i].hackkey; i++)
270  {
271  if (is_button_displayed(i, guiMode, camMode) && keymap[i].nm)
272  {
273  x1 = keymap[i].x1;
274  x2 = keymap[i].x2;
275  y1 = keymap[i].y1;
276  y2 = keymap[i].y2;
277 
278  twoColors clr = c3;
279  if ( guiMode == GUI_MODE_SCRIPT ) clr = c4 ;
280  else
281  {
282  if (keymap[i].hackkey == TS_KEY_EXIT) clr = c1;
283  else
284  {
285  if ((x1 >180) || (*keymap[i].conf_val)) clr=c2;
286  }
287  }
288  ofst = 16;
289 
291 
292  if (keymap[i].hackkey == KEY_UP)
293  {
294  rbf_draw_symbol(x1+12, y1+15, 0x53, clr);
295  }
296  else if (keymap[i].hackkey == KEY_RIGHT)
297  {
298  rbf_draw_symbol(x1+12, y1+15, 0x52, clr);
299  }
300  else if (keymap[i].hackkey == KEY_LEFT)
301  {
302  rbf_draw_symbol(x1+12, y1+15, 0x51, clr);
303  }
304  else if (keymap[i].hackkey == KEY_DOWN)
305  {
306  rbf_draw_symbol(x1+12, y1+15, 0x54, clr);
307  }
308  else
309  {
310  if (keymap[i].conf_val && keymap[i].chg_val)
311  {
312  ofst = 7;
313  strcpy(buf,(char*)keymap[i].chg_val(0,(int)keymap[i].conf_val));
314  buf[3] = 0;
315  draw_string(x1+4, y1+25, buf, c3);
316  }
317  else if (keymap[i].nm2)
318  {
319  ofst = 7;
320  draw_string(x1+4, y1+25, keymap[i].nm2, clr);
321  }
322  draw_string(x1+4, y1+ofst, keymap[i].nm, clr);
323  }
324  }
325  }
326  }
327 
328  redraw_buttons = 0;
329 }

Variablen-Dokumentation

long kbd_mod_state[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }

Definiert in Zeile 17 der Datei kbd.c.

long kbd_new_state[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }

Definiert in Zeile 15 der Datei kbd.c.

long kbd_prev_state[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }

Definiert in Zeile 16 der Datei kbd.c.

KeyMap keymap[]

Definiert in Zeile 97 der Datei kbd.c.

int redraw_buttons = 1

Definiert in Zeile 244 der Datei kbd.c.

gui_handler scriptGuiHandler

Definiert in Zeile 210 der Datei script.c.

long touch_panel_button = 0xFFFFFFFF
static

Definiert in Zeile 19 der Datei kbd.c.

long touch_panel_state = 0xFFFFFFFF
static

Definiert in Zeile 18 der Datei kbd.c.