Commit e40053638e23d282f66a87ad9d8d1a72884114dd
1 parent
8c622e34
Exists in
master
and in
1 other branch
Fixing PF settings.
Showing
3 changed files
with
38 additions
and
10 deletions
Show diff stats
src/dialogs/settings/accelerator.c
| ... | ... | @@ -554,19 +554,45 @@ static gboolean add_accel(GtkTreeModel *model, GtkTreePath G_GNUC_UNUSED(*path), |
| 554 | 554 | |
| 555 | 555 | // Allways create the "main" accelerator to keep the action active. |
| 556 | 556 | V3270Accelerator * acc = v3270_accelerator_clone(accel); |
| 557 | - acc->key = keymap[0].key; | |
| 558 | - acc->mods = keymap[0].mods; | |
| 559 | - *accelerators = g_slist_prepend(*accelerators,acc); | |
| 560 | 557 | |
| 561 | - // The alternative one is created only when set. | |
| 562 | - if(keymap[1].key) | |
| 563 | - { | |
| 564 | - acc = v3270_accelerator_clone(accel); | |
| 565 | - acc->key = keymap[1].key; | |
| 566 | - acc->mods = keymap[1].mods; | |
| 558 | + if(acc->type == V3270_ACCELERATOR_TYPE_PFKEY) { | |
| 559 | + | |
| 560 | + if(keymap[0].mods) { | |
| 561 | + g_warning("PFKey accelerator can't manage modifiers"); | |
| 562 | + } | |
| 563 | + | |
| 564 | + int pfkey = (keymap[0].key - GDK_F1) + 1; | |
| 565 | + | |
| 566 | + if(pfkey < 0 || pfkey > 22) { | |
| 567 | + | |
| 568 | + g_warning("Invalid pfkey code: %d",pfkey); | |
| 569 | + | |
| 570 | + } else { | |
| 571 | + | |
| 572 | + ((V3270PFKeyAccelerator *) acc)->keycode = (unsigned short) pfkey; | |
| 573 | + | |
| 574 | + } | |
| 575 | + | |
| 567 | 576 | *accelerators = g_slist_prepend(*accelerators,acc); |
| 577 | + | |
| 578 | + } else { | |
| 579 | + | |
| 580 | + acc->key = keymap[0].key; | |
| 581 | + acc->mods = keymap[0].mods; | |
| 582 | + *accelerators = g_slist_prepend(*accelerators,acc); | |
| 583 | + | |
| 584 | + // The alternative one is created only when set. | |
| 585 | + if(keymap[1].key) | |
| 586 | + { | |
| 587 | + acc = v3270_accelerator_clone(accel); | |
| 588 | + acc->key = keymap[1].key; | |
| 589 | + acc->mods = keymap[1].mods; | |
| 590 | + *accelerators = g_slist_prepend(*accelerators,acc); | |
| 591 | + } | |
| 592 | + | |
| 568 | 593 | } |
| 569 | 594 | |
| 595 | + | |
| 570 | 596 | return FALSE; |
| 571 | 597 | } |
| 572 | 598 | ... | ... |
src/terminal/actions/scroll.c
| ... | ... | @@ -104,7 +104,7 @@ gboolean v3270_scroll_event(GtkWidget *widget, GdkEventScroll *event) |
| 104 | 104 | const V3270Accelerator * accel = v3270_get_accelerator(widget, fallbacks[ix].keyval, fallbacks[ix].state); |
| 105 | 105 | if(accel) |
| 106 | 106 | { |
| 107 | - debug("Activating fallback mouse action \"%s\"\n",v3270_accelerator_get_name(accel)); | |
| 107 | + debug("Activating accelerator \"%s\"\n",v3270_accelerator_get_name(accel)); | |
| 108 | 108 | // lib3270_write_event_trace(terminal->hSession,"Activating fallback mouse action \"%s\"\n",v3270_accelerator_get_name(accel)); |
| 109 | 109 | v3270_accelerator_activate(accel,widget); |
| 110 | 110 | return TRUE; | ... | ... |
src/terminal/keyboard/keyfile.c