Tscope5
keyboard.c
Go to the documentation of this file.
1 
2 
3 
4 
5 
6 
7 #include "../include/tscope5/keyboard.h"
8 #include "../include/tscope5/timer.h"
9 #include "../include/tscope5/keyboard_internal.h"
10 #include "../include/tscope5/system_internal.h"
11 
12 
20 
21 
22 
23 
64 {
65  ts5_check_keyboard("ts5_define_keyboard_key");
66  ts5_log(TS5_LOGLEVEL_3, "ts5_define_keyboard_key(%d)\n", key);
67 
68  if (key==0) {
69  ts5_fatal("ts5_define_keyboard_key: key argument is 0, response keys are numbered from 1\n");
70  }
71 
72  if (abs(key)>_ts5_status.timer_status.keyboard.num_buttons) {
73  ts5_fatal("ts5_define_keyboard_key: key argument is %d, number of keyboard buttons is %d\n",
74  key, _ts5_status.timer_status.keyboard.num_buttons);
75  }
76 
77  if (key>0 && _ts5_status.timer_status.keyboard.button_press_defined[key-1]!=0) {
78  ts5_fatal("ts5_define_keyboard_key: key press %d is already defined\n", key);
79  }
80 
81  if (key<0 && _ts5_status.timer_status.keyboard.button_release_defined[-key-1]!=0) {
82  ts5_fatal("ts5_define_keyboard_key: key release %d is already defined\n", key);
83  }
84 
85  _ts5_status.timer_status.keyboard_is_response_device = 1;
86  _ts5_status.timer_status.num_defined_buttons++;
87  _ts5_status.timer_status.num_active_buttons++;
88  _ts5_status.timer_status.keyboard.num_defined_buttons++;
89  _ts5_status.timer_status.keyboard.num_active_buttons++;
90 
91 
92  if (key>0) {
93  _ts5_status.timer_status.keyboard.button_press_defined[key-1] =
94  _ts5_status.timer_status.num_defined_buttons;
95 
96  _ts5_status.timer_status.keyboard.button_press_active[key-1] =
97  _ts5_status.timer_status.num_defined_buttons;
98  }
99  else {
100  _ts5_status.timer_status.keyboard.button_release_defined[-key-1] =
101  _ts5_status.timer_status.num_defined_buttons;
102 
103  _ts5_status.timer_status.keyboard.button_release_active[-key-1] =
104  _ts5_status.timer_status.num_defined_buttons;
105  }
106 
107  return _ts5_status.timer_status.num_defined_buttons;
108 }
109 
110 
112 
113