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 "levent.h"
+ Include-Abhängigkeitsdiagramm für kbd.c:

gehe zum Quellcode dieser Datei

Datenstrukturen

struct  KeyMap
 

Makrodefinitionen

#define KEYS_MASK0   (0x00000000)
 
#define KEYS_MASK1   (0x2F000000)
 
#define KEYS_MASK2   (0x00000000)
 
#define SD_READONLY_FLAG   0x00008000
 
#define SD_READONLY_IDX   0
 
#define USB_MASK   0x40000000
 
#define USB_IDX   2
 
#define KBD_SIMULATE_VIDEO_KEY   1
 
#define TS_KEY_TOGGLE_RAW   200
 
#define TS_KEY_TOGGLE_ZEBRA   201
 
#define TS_KEY_TOGGLE_HISTO   202
 
#define TS_KEY_TOGGLE_OSD   203
 
#define TS_KEY_TOGGLE_OVRD   204
 
#define TS_KEY_TOGGLE_EDGE   205
 
#define TS_KEY_TOGGLE_ND   206
 
#define TS_KEY_TOGGLE_EV   207
 
#define TS_KEY_TOGGLE_TV_DN   208
 
#define TS_KEY_TOGGLE_TV_UP   209
 
#define TS_KEY_TOGGLE_AV_DN   210
 
#define TS_KEY_TOGGLE_AV_UP   211
 
#define TS_KEY_TOGGLE_SV_DN   212
 
#define TS_KEY_TOGGLE_SV_UP   213
 
#define TS_KEY_PLAYBACK   214
 
#define TS_KEY_POWER   215
 
#define TS_UP_DN_BUTTON   300
 
#define TS_PG_DN   301
 
#define TS_PG_UP   302
 
#define TS_XL   2
 
#define TS_W   55
 
#define TS_YT   1
 
#define TS_H   44
 
#define TS_XR   (480-TS_W-2)
 
#define LB(x, n)   TS_XL+x*TS_W, TS_YT+n*TS_H, TS_XL+(x+1)*TS_W, TS_YT+n*TS_H+TS_H
 
#define RB(x, n)   TS_XR-x*TS_W, TS_YT+n*TS_H, TS_XR+TS_W-x*TS_W, TS_YT+n*TS_H+TS_H
 
#define RBW(x, n)   TS_XR-TS_W-x*TS_W, TS_YT+n*TS_H, TS_XR+TS_W-x*TS_W, TS_YT+n*TS_H+TS_H
 
#define MODE_VID   0x400
 

Funktionen

void _GetKbdState (long *)
 
int get_usb_bit ()
 
int kbd_force_analog_av (__attribute__((unused)) int state)
 
int get_usb_bit_physw_mod (void)
 
const char * gui_on_off_enum (int change, int arg)
 
const char * gui_histo_show_enum (int change, int arg)
 
const char * gui_nd_filter_state_enum (int change, int arg)
 
const char * gui_override_disable_enum (int change, int arg)
 
void set_tv_video (int x)
 
void set_av_video (int x)
 
void set_sv_video (int x)
 
void set_ev_video_avail (int x)
 
const char * ts_video_nd (int change, int arg)
 
const char * ts_video_ev (int change, int arg)
 
const char * ts_video_tv_dn (int change, __attribute__((unused)) int arg)
 
const char * ts_video_tv_up (int change, __attribute__((unused)) int arg)
 
const char * ts_video_av_dn (int change, __attribute__((unused)) int arg)
 
const char * ts_video_av_up (int change, __attribute__((unused)) int arg)
 
const char * ts_video_sv_dn (int change, __attribute__((unused)) int arg)
 
const char * ts_video_sv_up (int change, __attribute__((unused)) int arg)
 
const char * ts_pg_dn (int change, int arg)
 
const char * ts_pg_up (int change, 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 ()
 
static int draw_test_pixel (coord x, coord y, color c)
 
int chdk_process_touch ()
 
void virtual_buttons ()
 
int ts_process_touch ()
 
long __attribute__ ((naked))
 
void __attribute__ ((naked, noinline))
 *-------------------------------------------------------------------— Mehr ...
 
void my_kbd_read_keys ()
 
void kbd_key_press (long key)
 
void kbd_key_release (long key)
 
void kbd_key_release_all ()
 
long kbd_is_key_pressed (long key)
 
long kbd_is_key_clicked (long key)
 
long kbd_get_pressed_key ()
 
long kbd_get_clicked_key ()
 

Variablen

static long kbd_new_state [4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }
 
static long kbd_prev_state [4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }
 
static long kbd_mod_state [4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }
 
static long touch_panel_state
 
int video_ael
 
int tv_video
 
int av_video
 
int sv_video
 
int tv_min_video
 
short cds_gain_value
 
static char ev_tv [15]
 
static char ev_av [15]
 
static char ev_sv [15]
 
static char debug_pg [15]
 
static KeyMap keymap []
 
int redraw_buttons = 1
 
int print_key_index = -1
 
static int is_video_key_pressed = 0
 

Makro-Dokumentation

#define KBD_SIMULATE_VIDEO_KEY   1

Definiert in Zeile 44 der Datei kbd.c.

#define KEYS_MASK0   (0x00000000)

Definiert in Zeile 35 der Datei kbd.c.

#define KEYS_MASK1   (0x2F000000)

Definiert in Zeile 36 der Datei kbd.c.

#define KEYS_MASK2   (0x00000000)

Definiert in Zeile 37 der Datei kbd.c.

#define LB (   x,
  n 
)    TS_XL+x*TS_W, TS_YT+n*TS_H, TS_XL+(x+1)*TS_W, TS_YT+n*TS_H+TS_H

Definiert in Zeile 94 der Datei kbd.c.

#define MODE_VID   0x400

Definiert in Zeile 103 der Datei kbd.c.

#define RB (   x,
  n 
)    TS_XR-x*TS_W, TS_YT+n*TS_H, TS_XR+TS_W-x*TS_W, TS_YT+n*TS_H+TS_H

Definiert in Zeile 95 der Datei kbd.c.

#define RBW (   x,
  n 
)    TS_XR-TS_W-x*TS_W, TS_YT+n*TS_H, TS_XR+TS_W-x*TS_W, TS_YT+n*TS_H+TS_H

Definiert in Zeile 96 der Datei kbd.c.

#define SD_READONLY_FLAG   0x00008000

Definiert in Zeile 39 der Datei kbd.c.

#define SD_READONLY_IDX   0

Definiert in Zeile 40 der Datei kbd.c.

#define TS_H   44

Definiert in Zeile 92 der Datei kbd.c.

#define TS_KEY_PLAYBACK   214

Definiert in Zeile 82 der Datei kbd.c.

#define TS_KEY_POWER   215

Definiert in Zeile 83 der Datei kbd.c.

#define TS_KEY_TOGGLE_AV_DN   210

Definiert in Zeile 78 der Datei kbd.c.

#define TS_KEY_TOGGLE_AV_UP   211

Definiert in Zeile 79 der Datei kbd.c.

#define TS_KEY_TOGGLE_EDGE   205

Definiert in Zeile 73 der Datei kbd.c.

#define TS_KEY_TOGGLE_EV   207

Definiert in Zeile 75 der Datei kbd.c.

#define TS_KEY_TOGGLE_HISTO   202

Definiert in Zeile 70 der Datei kbd.c.

#define TS_KEY_TOGGLE_ND   206

Definiert in Zeile 74 der Datei kbd.c.

#define TS_KEY_TOGGLE_OSD   203

Definiert in Zeile 71 der Datei kbd.c.

#define TS_KEY_TOGGLE_OVRD   204

Definiert in Zeile 72 der Datei kbd.c.

#define TS_KEY_TOGGLE_RAW   200

Definiert in Zeile 68 der Datei kbd.c.

#define TS_KEY_TOGGLE_SV_DN   212

Definiert in Zeile 80 der Datei kbd.c.

#define TS_KEY_TOGGLE_SV_UP   213

Definiert in Zeile 81 der Datei kbd.c.

#define TS_KEY_TOGGLE_TV_DN   208

Definiert in Zeile 76 der Datei kbd.c.

#define TS_KEY_TOGGLE_TV_UP   209

Definiert in Zeile 77 der Datei kbd.c.

#define TS_KEY_TOGGLE_ZEBRA   201

Definiert in Zeile 69 der Datei kbd.c.

#define TS_PG_DN   301

Definiert in Zeile 86 der Datei kbd.c.

#define TS_PG_UP   302

Definiert in Zeile 87 der Datei kbd.c.

#define TS_UP_DN_BUTTON   300

Definiert in Zeile 85 der Datei kbd.c.

#define TS_W   55

Definiert in Zeile 90 der Datei kbd.c.

#define TS_XL   2

Definiert in Zeile 89 der Datei kbd.c.

#define TS_XR   (480-TS_W-2)

Definiert in Zeile 93 der Datei kbd.c.

#define TS_YT   1

Definiert in Zeile 91 der Datei kbd.c.

#define USB_IDX   2

Definiert in Zeile 42 der Datei kbd.c.

#define USB_MASK   0x40000000

Definiert in Zeile 41 der Datei kbd.c.

Dokumentation der Funktionen

long __attribute__ ( (naked)  )

Definiert in Zeile 547 der Datei kbd.c.

551 {
552  while (physw_run) {
553  _SleepTask(physw_sleep_delay);
554 
555  if (wrap_kbd_p1_f() == 1) { // autorepeat ?
556  _kbd_p2_f();
557  }
558  }
559 }
void __attribute__ ( (naked, noinline)  )

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

!!

Definiert in Zeile 562 der Datei kbd.c.

564 {
565  mykbd_task_proceed();
566 
567  _ExitTask();
568 }
void _GetKbdState ( long *  )
int chdk_process_touch ( )

Definiert in Zeile 393 der Datei kbd.c.

394 {
395  //ts_check_cnt++;
396 
397  // If in canon menu, let the firmware have all the touch events.
398  if (!show_virtual_buttons()) return 0;
399 
400  int guiMode = camera_info.state.gui_mode;
402 
403  // Touch co-ordinate
404  unsigned short tx, ty;
405  tx = ((touch_screen_x & 0x7FFF) >> 2) ^ 0x3FF; //ixus240.101a @ loc_ff069d58
406  ty = ((touch_screen_y & 0x7FFF) >> 2) ^ 0x3FF;
407 
408 
409  // map touch coordinates to screen (try&error values)
410  tx = (tx - 190) * 0.74;
411  ty = (ty - 330) * 0.65;
412 
413  // Search for CHDK on screen buttons matching co-ordinate
414  int i;
415  for (i=0; keymap[i].hackkey; i++)
416  {
417  if ((tx >= keymap[i].x1) && (tx < keymap[i].x2) && (ty >= keymap[i].y1) && (ty < keymap[i].y2) && is_button_active(i,guiMode,camMode))
418  {
420  }
421  }
422  // If in alt mode (or about to enter alt mode) set the touch koords to 0x0 to block it from firmware
423  if((guiMode != 0) || (((touch_panel_state & 1) == 0) && ((kbd_mod_state[3] & 1) != 0)))
424  {
425  touch_screen_x=touch_screen_y=0 ^ 0x3FF;
426  }
427  // let the firmware handle a touch press
428  // otherwise it wont set touch_screen_active to 1
429  return 0;
430 
431  // If in alt mode (or about to enter alt mode) block event from firmware
432 // return (guiMode != 0) || (((touch_panel_state & 1) == 0) && ((kbd_mod_state[3] & 1) != 0));
433 }
static int draw_test_pixel ( coord  x,
coord  y,
color  c 
)
static

Definiert in Zeile 381 der Datei kbd.c.

382 {
383  extern char* bitmap_buffer[];
384  extern int active_bitmap_buffer;
385  return (bitmap_buffer[active_bitmap_buffer][y * camera_screen.buffer_width + ASPECT_XCORRECTION(x)] == c);
386 }
int get_usb_bit ( )

Definiert in Zeile 46 der Datei kbd.c.

47 {
48  long usb_physw[3];
49  usb_physw[USB_IDX] = 0;
50  _kbd_read_keys_r2(usb_physw);
51  return(( usb_physw[USB_IDX] & USB_MASK)==USB_MASK) ;
52 }
int get_usb_bit_physw_mod ( void  )

Definiert in Zeile 60 der Datei kbd.c.

61 {
62  if((physw_status[USB_IDX] & USB_MASK) == USB_MASK) {
63  return 1;
64  }
65  return 0;
66 }
const char* gui_histo_show_enum ( int  change,
int  arg 
)
const char* gui_nd_filter_state_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 363 der Datei kbd.c.

364 {
365  return (is_button_displayed(b, guiMode, camMode) && keymap[b].canonkey);
366 }
static int is_button_displayed ( int  b,
int  guiMode,
int  camMode 
)
static

Definiert in Zeile 352 der Datei kbd.c.

353 {
354  return (
355  (keymap[b].grp == 3) &&
356  (guiMode >= keymap[b].min_gui_mode) &&
357  (guiMode <= keymap[b].max_gui_mode) &&
358  (camMode & keymap[b].cam_mode_mask) &&
359  ((keymap[b].conf_disable == 0) || (*keymap[b].conf_disable == 0))
360  );
361 }
int kbd_force_analog_av ( __attribute__((unused)) int  state)

Definiert in Zeile 55 der Datei kbd.c.

56 {
57  return 0;
58 }
long kbd_get_clicked_key ( )

Definiert in Zeile 718 der Datei kbd.c.

719 {
720  int i;
721  for (i=0;keymap[i].hackkey;i++)
722  {
723  if (keymap[i].canonkey &&
724  ((kbd_prev_state[keymap[i].grp] & keymap[i].canonkey) != 0) &&
725  ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0))
726  {
727  return keymap[i].hackkey;
728  }
729  }
730  return 0;
731 }
long kbd_get_pressed_key ( )

Definiert in Zeile 705 der Datei kbd.c.

706 {
707  int i;
708  for (i=0;keymap[i].hackkey;i++)
709  {
710  if (keymap[i].canonkey && ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0))
711  {
712  return keymap[i].hackkey;
713  }
714  }
715  return 0;
716 }
long kbd_is_key_clicked ( long  key)

Definiert in Zeile 691 der Datei kbd.c.

692 {
693  int i;
694  for (i=0;keymap[i].hackkey;i++)
695  {
696  if ((keymap[i].hackkey == key) && keymap[i].canonkey)
697  {
698  return ((kbd_prev_state[keymap[i].grp] & keymap[i].canonkey) != 0) &&
699  ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0);
700  }
701  }
702  return 0;
703 }
long kbd_is_key_pressed ( long  key)

Definiert in Zeile 678 der Datei kbd.c.

679 {
680  int i;
681  for (i=0;keymap[i].hackkey;i++)
682  {
683  if ((keymap[i].hackkey == key) && keymap[i].canonkey)
684  {
685  return ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0) ? 1:0;
686  }
687  }
688  return 0;
689 }
void kbd_key_press ( long  key)

Definiert in Zeile 626 der Datei kbd.c.

627 {
628  int i;
629 
630 #ifdef KBD_SIMULATE_VIDEO_KEY
632  {
633  // TODO define for ID would be more efficient
634  PostLogicalEventToUI(levent_id_for_name("PressMovieButton"),0);
636  // TODO not clear if this should return, or set state too
637  return;
638  }
639 #endif
640 
641  for (i=0;keymap[i].hackkey;i++) {
642  if (keymap[i].hackkey == key)
643  {
644  kbd_mod_state[keymap[i].grp] &= ~keymap[i].canonkey;
645  return;
646  }
647  }
648 }
void kbd_key_release ( long  key)

Definiert in Zeile 650 der Datei kbd.c.

651 {
652 #ifdef KBD_SIMULATE_VIDEO_KEY
654  {
655  PostLogicalEventToUI(levent_id_for_name("UnpressMovieButton"),0);
657  return;
658  }
659 #endif
660 
661  int i;
662  for (i=0;keymap[i].hackkey;i++) {
663  if (keymap[i].hackkey == key) {
665  return;
666  }
667  }
668 }
void kbd_key_release_all ( )

Definiert in Zeile 670 der Datei kbd.c.

671 {
675  kbd_mod_state[3] = 0xFFFFFFFF;
676 }
void my_kbd_read_keys ( )

Definiert in Zeile 582 der Datei kbd.c.

583 {
588 
591  if (touch_screen_active == 1) // Touch screen activated?
592  {
593  kbd_new_state[3] = touch_panel_state; // Yes, use virtual button state
594  }
595  else
596  {
597  kbd_new_state[3] = touch_panel_state = 0xFFFFFFFF; // No, clear out virtual button state
598  }
599 
600  if (kbd_process() == 0) {
601  // leave it alone...
602  // we read keyboard state with _kbd_read_keys()
603  physw_status[0] = kbd_new_state[0];
604  physw_status[1] = kbd_new_state[1];
605  physw_status[2] = kbd_new_state[2];
606  } else {
607  // override keys
611  }
613 
614  if (conf.remote_enable) {
616  }
617 }
void set_av_video ( int  x)

Definiert in Zeile 126 der Datei kbd.c.

127 {
128  if (video_ael)
129  {
130  if (x < 200) x = 200;
131  if (x > 576) x = 576;
132  if (av_video != x)
133  {
134  av_video = x;
136  extern int _MoveIrisWithAv(short*);
137  _MoveIrisWithAv((short*)&av_video);
139  }
140  }
141 }
void set_ev_video_avail ( int  x)

Definiert in Zeile 159 der Datei kbd.c.

160 {
161  if (video_ael == x) return;
162  video_ael = x;
163  if (x)
164  {
165  av_video = tv_video = 0;
166 
168 
172 
174  else tv_min_video=441; //480; //1/30
175  }
176  else
178 }
void set_sv_video ( int  x)

Definiert in Zeile 143 der Datei kbd.c.

144 {
145  if (video_ael)
146  {
147  if (x < 0) x = 0;
148  if (x > 768) x = 768;
149  sv_video = x;
150 
151  extern int _SetCDSGain(short*);
152  _SetCDSGain((short*)&sv_video);
153 
154  extern int _GetCdsGainValue();
155  sv_video = _GetCdsGainValue();
156  }
157 }
void set_tv_video ( int  x)

Definiert in Zeile 112 der Datei kbd.c.

113 {
114  if (video_ael)
115  {
116  if (x < tv_min_video) x = tv_min_video;
117  if (x > 1152) x = 1152;
118  if (tv_video != x)
119  {
120  tv_video = x;
122  }
123  }
124 }
int show_virtual_buttons ( )

Definiert in Zeile 368 der Datei kbd.c.

369 {
370  // The canon_playback_menu_active check prevents the CHDK button from being shown in rec mode
371  // The variable does not appear to be equivalent to the variable used in ixus500_elph310hs
372  /*
373  extern char canon_play_menu_active;
374  return (canon_menu_active==(int)&canon_menu_active-4) && (canon_shoot_menu_active==0) && (canon_play_menu_active == 0);
375  */
376  return (canon_menu_active==(int)&canon_menu_active-4) && (canon_shoot_menu_active==0);
377 }
const char* ts_pg_dn ( int  change,
int  arg 
)

Definiert in Zeile 269 der Datei kbd.c.

270 {
271  if (change)
272  {
273  if ((*(int*)arg) > 0) (*(int*)arg)--;
274  }
275  sprintf(debug_pg,"%4d",(*(int*)arg));
276  return debug_pg;
277 }
const char* ts_pg_up ( int  change,
int  arg 
)

Definiert in Zeile 279 der Datei kbd.c.

280 {
281  if (change)
282  {
283  (*(int*)arg)++;
284  }
285  sprintf(debug_pg,"%4d",(*(int*)arg));
286  return debug_pg;
287 }
int ts_process_touch ( )

Definiert in Zeile 516 der Datei kbd.c.

517 {
518  int rv = 0, i;
519 
520  if (touch_panel_state != (long)0xFFFFFFFF)
521  {
522  int guiMode = camera_info.state.gui_mode;
524 
525  //ts_proc_cnt++;
526 
527  for (i=0; keymap[i].hackkey; i++)
528  {
529  if (is_button_active(i, guiMode, camMode))
530  {
531  if (kbd_is_key_clicked(keymap[i].hackkey))
532  {
533  if (keymap[i].conf_val && keymap[i].chg_val)
534  {
535  keymap[i].chg_val(1,(int)keymap[i].conf_val);
536  rv = keymap[i].redraw & 1;
537  }
538  if (keymap[i].redraw & 2) redraw_buttons = 1;
539  }
540  }
541  }
542  }
543 
544  return rv;
545 }
const char* ts_video_av_dn ( int  change,
__attribute__((unused)) int  arg 
)

Definiert in Zeile 225 der Datei kbd.c.

226 {
227  if (change)
228  {
229  set_av_video(av_video - 32);
230  }
231  sprintf(ev_av,"%4d",av_video);
232  return ev_av;
233 }
const char* ts_video_av_up ( int  change,
__attribute__((unused)) int  arg 
)

Definiert in Zeile 235 der Datei kbd.c.

236 {
237  if (change)
238  {
239  set_av_video(av_video + 32);
240  }
241  sprintf(ev_av,"%4d",av_video);
242  return ev_av;
243 }
const char* ts_video_ev ( int  change,
int  arg 
)

Definiert in Zeile 190 der Datei kbd.c.

191 {
192  if (change)
193  {
195  // force ND off unless AEL enabled
197  }
198  return gui_on_off_enum(0, arg);
199 }
const char* ts_video_nd ( int  change,
int  arg 
)

Definiert in Zeile 180 der Datei kbd.c.

181 {
182  const char *rv = gui_nd_filter_state_enum(change, arg);
183  if (change && video_ael)
184  {
186  }
187  return rv;
188 }
const char* ts_video_sv_dn ( int  change,
__attribute__((unused)) int  arg 
)

Definiert in Zeile 247 der Datei kbd.c.

248 {
249  if (change)
250  {
251  set_sv_video(sv_video - 32);
252  }
253  sprintf(ev_sv,"%4d",sv_video);
254  return ev_sv;
255 }
const char* ts_video_sv_up ( int  change,
__attribute__((unused)) int  arg 
)

Definiert in Zeile 257 der Datei kbd.c.

258 {
259  if (change)
260  {
261  set_sv_video(sv_video + 32);
262  }
263  sprintf(ev_sv,"%4d",sv_video);
264  return ev_sv;
265 }
const char* ts_video_tv_dn ( int  change,
__attribute__((unused)) int  arg 
)

Definiert in Zeile 203 der Datei kbd.c.

204 {
205  if (change)
206  {
207  set_tv_video(tv_video - 32);
208  }
209  sprintf(ev_tv,"%4d",tv_video);
210  return ev_tv;
211 }
const char* ts_video_tv_up ( int  change,
__attribute__((unused)) int  arg 
)

Definiert in Zeile 213 der Datei kbd.c.

214 {
215  if (change)
216  {
217  set_tv_video(tv_video + 32);
218  }
219  sprintf(ev_tv,"%4d",tv_video);
220  return ev_tv;
221 }
void virtual_buttons ( )

Definiert in Zeile 438 der Datei kbd.c.

439 {
440  int guiMode = camera_info.state.gui_mode;
441  char buf[30];
442 
443  // If shooting or in any Canon menus then don't display any CHDK buttons
444  if (((guiMode == 0) && camera_info.state.is_shutter_half_press) || !show_virtual_buttons()) return;
445 
446 // if(print_key_index == -1)
447 // {
448 // // need to find index of print key to check boarders in next step
449 // int i;
450 // for (i=0; keymap[i].hackkey != KEY_PRINT; i++);
451 // print_key_index = i;
452 // }
453 
454  // Check if border of CHDK button is corrupted, force redraw if so
455 // if(print_key_index != -1 && !draw_test_pixel(keymap[print_key_index].x1+1, keymap[print_key_index].y1+1, (guiMode)?COLOR_GREEN:COLOR_WHITE)) redraw_buttons = 1;
456  if (!draw_test_pixel(0, 80, (guiMode)?COLOR_GREEN:COLOR_WHITE)) redraw_buttons = 1;
457 
458  if (redraw_buttons)
459  {
460  //ts_redraw_cnt++;
461 
462  int i, x1, y1, x2, y2, ofst;
464 
465  //color c1 = MAKE_COLOR((camMode&MODE_VID)?COLOR_TRANSPARENT:COLOR_BLACK, COLOR_WHITE);
466  //color c2 = MAKE_COLOR((camMode&MODE_VID)?COLOR_TRANSPARENT:COLOR_RED, (camMode&MODE_VID)?COLOR_RED:COLOR_WHITE);
467  twoColors c1 = MAKE_COLOR((camMode&MODE_VID)?COLOR_TRANSPARENT:COLOR_BLACK, COLOR_WHITE);
469 
470  for (i=0; keymap[i].hackkey; i++)
471  {
472  if (is_button_displayed(i, guiMode, camMode) && keymap[i].nm)
473  {
474  x1 = keymap[i].x1;
475  x2 = keymap[i].x2;
476  y1 = keymap[i].y1;
477  y2 = keymap[i].y2;
478 
479  twoColors cl = c1;
480  if (guiMode && (keymap[i].hackkey == KEY_PRINT)) cl = c2;
481  if (keymap[i].conf_val && *keymap[i].conf_val) cl = c2;
482 
484 
485  ofst = 16;
486  if (keymap[i].hackkey == TS_UP_DN_BUTTON)
487  {
488  // unclear what was supposed to be displayed here
489  // use hard coded string rather than uninitialized buffer
490 // draw_string(x1+4, y1+ofst, buf, cl);
491  draw_string(x1+4, y1+ofst, "UD!", cl);
492  }
493  else
494  {
495  if (keymap[i].conf_val && keymap[i].chg_val)
496  {
497  ofst = 7;
498  strcpy(buf,(char*)keymap[i].chg_val(0,(int)keymap[i].conf_val));
499  buf[6] = 0;
500  draw_string(x1+4, y1+25, buf, cl);
501  }
502  else if (keymap[i].nm2)
503  {
504  ofst = 7;
505  draw_string(x1+4, y1+25, keymap[i].nm2, cl);
506  }
507  draw_string(x1+4, y1+ofst, keymap[i].nm, cl);
508  }
509  }
510  }
511  }
512 
513  redraw_buttons = 0;
514 }

Variablen-Dokumentation

int av_video

Definiert in Zeile 107 der Datei kbd.c.

short cds_gain_value
char debug_pg[15]
static

Definiert in Zeile 267 der Datei kbd.c.

char ev_av[15]
static

Definiert in Zeile 223 der Datei kbd.c.

char ev_sv[15]
static

Definiert in Zeile 245 der Datei kbd.c.

char ev_tv[15]
static

Definiert in Zeile 201 der Datei kbd.c.

int is_video_key_pressed = 0
static

Definiert in Zeile 622 der Datei kbd.c.

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

Definiert in Zeile 28 der Datei kbd.c.

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

Definiert in Zeile 26 der Datei kbd.c.

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

Definiert in Zeile 27 der Datei kbd.c.

KeyMap keymap[]
static

Definiert in Zeile 289 der Datei kbd.c.

int print_key_index = -1

Definiert in Zeile 436 der Datei kbd.c.

int redraw_buttons = 1

Definiert in Zeile 435 der Datei kbd.c.

int sv_video

Definiert in Zeile 108 der Datei kbd.c.

long touch_panel_state
static

Definiert in Zeile 29 der Datei kbd.c.

int tv_min_video

Definiert in Zeile 109 der Datei kbd.c.

int tv_video

Definiert in Zeile 106 der Datei kbd.c.

int video_ael

Definiert in Zeile 105 der Datei kbd.c.