summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2019-06-15 00:49:08 +0200
committerThomas White <taw@physics.org>2019-06-15 00:49:08 +0200
commitcd31c72d3cba338921b2475e7d08d61c3285a9d9 (patch)
tree962f8cdc719d769fbdbe3c9c7cccef755ca77d00
parentfbea1b43c3922a6a8277796d2369a4781e891c4d (diff)
Use function keys to select parameters
-rw-r--r--src/nanolight.c88
1 files changed, 75 insertions, 13 deletions
diff --git a/src/nanolight.c b/src/nanolight.c
index 8b88f91..e813ca1 100644
--- a/src/nanolight.c
+++ b/src/nanolight.c
@@ -47,6 +47,22 @@ static void show_help(const char *s)
#define OVERALL_SPLIT (0.5)
#define FIXTURE_BORDER (5.0)
+enum attr_class key_attrs[] = {
+ 0,
+ ATT_TILT, /* F1 */
+ ATT_STROBE, /* F2 */
+ ATT_CYAN, /* F3 */
+ ATT_MAGENTA, /* F4 */
+ ATT_YELLOW, /* F5 */
+ ATT_GOBO, /* F6 */
+ ATT_RGOBO, /* F7 */
+ ATT_PRISM, /* F8 */
+ ATT_FOCUS, /* F9 */
+ ATT_ZOOM, /* F10 */
+ ATT_ZOOM, /* F11 */
+ ATT_ZOOM /* F12 */
+};
+
static double get_attr_val(struct fixture *fix, enum attr_class acls)
{
int i;
@@ -452,21 +468,18 @@ static void home_value(struct nanolight *nl)
static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct nanolight *nl)
{
gboolean r;
- int claim = 0;
+ int claim = 1;
switch ( event->keyval ) {
case GDK_KEY_Left :
- claim = 1;
break;
case GDK_KEY_Right :
- claim = 1;
break;
case GDK_KEY_Return :
execute_command(nl);
- claim = 1;
break;
case GDK_KEY_Escape :
@@ -474,37 +487,86 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event, struct nanoligh
nl->cursor_idx = 0;
nl->n_sel = 0;
nl->dragging = 0;
- claim = 1;
break;
case GDK_KEY_BackSpace :
nl->cursor_idx -= delete_char(nl->cmdline);
- claim = 1;
break;
case GDK_KEY_KP_Enter :
printf("Go!\n");
- claim = 1;
break;
case GDK_KEY_KP_Add :
printf("Stop/back!\n");
- claim = 1;
break;
case GDK_KEY_Home :
home_value(nl);
- claim = 1;
break;
case GDK_KEY_F1 :
- nl->sel_attr = ATT_TILT;
- claim = 1;
+ nl->sel_attr = key_attrs[1];
+ nl->dragging = 0;
break;
case GDK_KEY_F2 :
- nl->sel_attr = ATT_STROBE;
- claim = 1;
+ nl->sel_attr = key_attrs[2];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F3 :
+ nl->sel_attr = key_attrs[3];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F4 :
+ nl->sel_attr = key_attrs[4];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F5 :
+ nl->sel_attr = key_attrs[5];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F6 :
+ nl->sel_attr = key_attrs[6];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F7 :
+ nl->sel_attr = key_attrs[7];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F8 :
+ nl->sel_attr = key_attrs[8];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F9 :
+ nl->sel_attr = key_attrs[9];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F10 :
+ nl->sel_attr = key_attrs[10];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F11 :
+ nl->sel_attr = key_attrs[11];
+ nl->dragging = 0;
+ break;
+
+ case GDK_KEY_F12 :
+ nl->sel_attr = key_attrs[12];
+ nl->dragging = 0;
+ break;
+
+ default :
+ claim = 0;
break;
}