diff --git a/src/dialogs/settings/accelerator.c b/src/dialogs/settings/accelerator.c index 4caa2a6..44773f4 100644 --- a/src/dialogs/settings/accelerator.c +++ b/src/dialogs/settings/accelerator.c @@ -554,19 +554,45 @@ static gboolean add_accel(GtkTreeModel *model, GtkTreePath G_GNUC_UNUSED(*path), // Allways create the "main" accelerator to keep the action active. V3270Accelerator * acc = v3270_accelerator_clone(accel); - acc->key = keymap[0].key; - acc->mods = keymap[0].mods; - *accelerators = g_slist_prepend(*accelerators,acc); - // The alternative one is created only when set. - if(keymap[1].key) - { - acc = v3270_accelerator_clone(accel); - acc->key = keymap[1].key; - acc->mods = keymap[1].mods; + if(acc->type == V3270_ACCELERATOR_TYPE_PFKEY) { + + if(keymap[0].mods) { + g_warning("PFKey accelerator can't manage modifiers"); + } + + int pfkey = (keymap[0].key - GDK_F1) + 1; + + if(pfkey < 0 || pfkey > 22) { + + g_warning("Invalid pfkey code: %d",pfkey); + + } else { + + ((V3270PFKeyAccelerator *) acc)->keycode = (unsigned short) pfkey; + + } + *accelerators = g_slist_prepend(*accelerators,acc); + + } else { + + acc->key = keymap[0].key; + acc->mods = keymap[0].mods; + *accelerators = g_slist_prepend(*accelerators,acc); + + // The alternative one is created only when set. + if(keymap[1].key) + { + acc = v3270_accelerator_clone(accel); + acc->key = keymap[1].key; + acc->mods = keymap[1].mods; + *accelerators = g_slist_prepend(*accelerators,acc); + } + } + return FALSE; } diff --git a/src/terminal/actions/scroll.c b/src/terminal/actions/scroll.c index b976f14..572251f 100644 --- a/src/terminal/actions/scroll.c +++ b/src/terminal/actions/scroll.c @@ -104,7 +104,7 @@ gboolean v3270_scroll_event(GtkWidget *widget, GdkEventScroll *event) const V3270Accelerator * accel = v3270_get_accelerator(widget, fallbacks[ix].keyval, fallbacks[ix].state); if(accel) { - debug("Activating fallback mouse action \"%s\"\n",v3270_accelerator_get_name(accel)); + debug("Activating accelerator \"%s\"\n",v3270_accelerator_get_name(accel)); // lib3270_write_event_trace(terminal->hSession,"Activating fallback mouse action \"%s\"\n",v3270_accelerator_get_name(accel)); v3270_accelerator_activate(accel,widget); return TRUE; diff --git a/src/terminal/keyboard/keyfile.c b/src/terminal/keyboard/keyfile.c index a829fda..fccd500 100644 --- a/src/terminal/keyboard/keyfile.c +++ b/src/terminal/keyboard/keyfile.c @@ -156,6 +156,8 @@ ((V3270PFKeyAccelerator *) acc)->keycode = (unsigned short) pfkey; terminal->accelerators = g_slist_prepend(terminal->accelerators,acc); + debug("****[%s]***",v3270_accelerator_get_name(accel)); + } else { -- libgit2 0.21.2