CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
kbd_common.c-Dateireferenz
#include "platform.h"
#include "core.h"
#include "keyboard.h"
#include "kbd_common.h"
#include "conf.h"
#include "usb_remote.h"
#include "gui_draw.h"
#include "levent.h"
+ Include-Abhängigkeitsdiagramm für kbd_common.c:

gehe zum Quellcode dieser Datei

Funktionen

int get_hdmi_hpd_physw_mod (void)
 
int get_analog_av_physw_mod (void)
 
int kbd_force_analog_av (int state)
 
int get_usb_bit_physw_mod (void)
 
long kbd_update_key_state (void)
 
void kbd_update_physw_bits (void)
 
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

long physw_status [3]
 
int forced_usb_port
 

Dokumentation der Funktionen

int get_analog_av_physw_mod ( void  )

Definiert in Zeile 108 der Datei kbd_common.c.

109 {
110 #ifdef ANALOG_AV_FLAG
111  if(!(physw_status[ANALOG_AV_IDX] & ANALOG_AV_FLAG)) {
112  return 1;
113  }
114 #endif
115  return 0;
116 }
int get_hdmi_hpd_physw_mod ( void  )

Definiert in Zeile 97 der Datei kbd_common.c.

98 {
99 #ifdef HDMI_HPD_FLAG
100  if(!(physw_status[HDMI_HPD_IDX] & HDMI_HPD_FLAG)) {
101  return 1;
102  }
103 #endif
104  return 0;
105 }
int get_usb_bit_physw_mod ( void  )

Definiert in Zeile 158 der Datei kbd_common.c.

159 {
160  if(physw_status[USB_IDX] & USB_MASK) {
161  return 1;
162  }
163  return 0;
164 }
int kbd_force_analog_av ( int  state)

Definiert in Zeile 123 der Datei kbd_common.c.

124 {
125 #ifdef ANALOG_AV_FLAG
126  forced_analog_av = state;
127  return 1;
128 #else
129  (void)state;
130  return 0;
131 #endif
132 }
long kbd_get_clicked_key ( )

Definiert in Zeile 404 der Datei kbd_common.c.

405 {
406  int i;
407  for (i=0;keymap[i].hackkey;i++){
408  if (((kbd_prev_state[keymap[i].grp] & keymap[i].canonkey) != 0) &&
409  ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0)){
410  return keymap[i].hackkey;
411  }
412  }
413  return 0;
414 }
long kbd_get_pressed_key ( )

Definiert in Zeile 393 der Datei kbd_common.c.

394 {
395  int i;
396  for (i=0;keymap[i].hackkey;i++){
397  if ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0){
398  return keymap[i].hackkey;
399  }
400  }
401  return 0;
402 }
long kbd_is_key_clicked ( long  key)

Definiert in Zeile 381 der Datei kbd_common.c.

382 {
383  int i;
384  for (i=0;keymap[i].hackkey;i++){
385  if (keymap[i].hackkey == key){
386  return ((kbd_prev_state[keymap[i].grp] & keymap[i].canonkey) != 0) &&
387  ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0);
388  }
389  }
390  return 0;
391 }
long kbd_is_key_pressed ( long  key)

Definiert in Zeile 370 der Datei kbd_common.c.

371 {
372  int i;
373  for (i=0;keymap[i].hackkey;i++){
374  if (keymap[i].hackkey == key){
375  return ((kbd_new_state[keymap[i].grp] & keymap[i].canonkey) == 0) ? 1:0;
376  }
377  }
378  return 0;
379 }
void kbd_key_press ( long  key)

Definiert in Zeile 319 der Datei kbd_common.c.

320 {
321 #ifdef KBD_SIMULATE_VIDEO_KEY
323  {
324  // TODO define for ID would be more efficient
325  PostLogicalEventToUI(levent_id_for_name("PressMovieButton"),0);
327  // TODO not clear if this should return, or set state too
328  return;
329  }
330 #endif
331  int i;
332  for (i=0;keymap[i].hackkey;i++){
333  if (keymap[i].hackkey == key){
334  kbd_mod_state[keymap[i].grp] &= ~keymap[i].canonkey;
335  return;
336  }
337  }
338 }
void kbd_key_release ( long  key)

Definiert in Zeile 340 der Datei kbd_common.c.

341 {
342 #ifdef KBD_SIMULATE_VIDEO_KEY
344  {
345  PostLogicalEventToUI(levent_id_for_name("UnpressMovieButton"),0);
347  return;
348  }
349 #endif
350  int i;
351  for (i=0;keymap[i].hackkey;i++){
352  if (keymap[i].hackkey == key){
354  return;
355  }
356  }
357 }
void kbd_key_release_all ( )

Definiert in Zeile 359 der Datei kbd_common.c.

360 {
364 // touch screen virtual keys
365 #ifdef CAM_TOUCHSCREEN_UI
366  kbd_mod_state[3] |= 0xFFFFFFFF;
367 #endif
368 }
long kbd_update_key_state ( void  )

Definiert in Zeile 177 der Datei kbd_common.c.

178 {
182 
183 #ifdef CAM_TOUCHSCREEN_UI
185 #endif
186 
187  // note assumed kbd_pwr_on has been called if needed
189 
190 #ifdef CAM_HAS_GPS
191  if (gps_key_trap > 0) // check if gps code is waiting for a specific key press to cancel shutdown
192  {
194  {
196  kbd_key_press(0);
197  gps_key_trap = -1; // signal the gps task that the specified button was pressed
198  msleep(1000); // pause to allow button release so Canon f/w does not see the press
199  }
200  }
201 #endif
202 
203  long status = kbd_process();
204  if (status == 0){
205  // leave it alone...
206  physw_status[0] = kbd_new_state[0];
207  physw_status[1] = kbd_new_state[1];
208  physw_status[2] = kbd_new_state[2];
209 
210 #ifdef CAM_HAS_JOGDIAL
211  jogdial_control(0);
212 #endif
213  } else {
214  // override keys
215  // TODO doesn't handle inverted logic yet
217 
219 
221 
222 #ifdef CAM_HAS_JOGDIAL
224  jogdial_control(1);
226  }
228  jogdial_control(0);
229  }
230 #endif
231  }
232  return status;
233 }
void kbd_update_physw_bits ( void  )

Definiert in Zeile 237 der Datei kbd_common.c.

238 {
239  if (conf.remote_enable) {
240 #ifdef CAM_REMOTE_MULTICHANNEL
241  switch(conf.remote_input_channel)
242  {
243  case REMOTE_INPUT_USB:
245  break;
246  #ifdef CAM_REMOTE_HDMI_HPD
249  break;
250  #endif
251  #ifdef CAM_REMOTE_ANALOG_AV
254  break;
255  #endif
256  }
257 #else
259 #endif
260  }
261  // TODO could save the real USB bit to avoid low level calls in get_usb_bit when immediate update not needed
262  if (forced_usb_port) {
264  }
265 #ifdef ANALOG_AV_FLAG
266  // 1 force on, 2 = force off, other = don't touch
267  if (forced_analog_av == 1) {
269  } else if(forced_analog_av == 2) {
271  }
272 
273 // workaround for crashes switching between analog AV out and native display
274  static long prev_analog_av_state = 0; // default to not present
275  long new_analog_av_state = get_analog_av_physw_mod();
276  if(new_analog_av_state != prev_analog_av_state) {
277  draw_suspend(1000);
278  prev_analog_av_state = new_analog_av_state;
279  }
280 #endif
281 // microsd cams don't have a read only bit
282 #ifndef KBD_SKIP_READONLY_BIT
284 #endif
285 
286 // n and possibly other micro SD cams uses door bit for autoboot, force back to closed (?)
287 #ifdef SD_DOOR_OVERRIDE
288  physw_status[SD_DOOR_IDX] |= SD_DOOR_FLAG; // override SD card door switch
289 #endif
290 
291 #ifdef OPT_RUN_WITH_BATT_COVER_OPEN
293 #endif
294 
295 #ifdef CAM_HOTSHOE_OVERRIDE
296  if (conf.hotshoe_override == 1) {
298  } else if (conf.hotshoe_override == 2) {
300  }
301 #endif
302 }

Variablen-Dokumentation

int forced_usb_port

Definiert in Zeile 34 der Datei usb_sync.c.

long physw_status[3]