Well, if you trigger certain key like you did with nudge, I'd imagine it'd be something like this:
("cf_fast_draw", [
(store_script_param_1, ":fast_draw_agent"),
(agent_is_active, ":fast_draw_agent"),
(agent_is_human, ":fast_draw_agent"),
(agent_is_alive, ":fast_draw_agent"),
(agent_get_item_slot, ":slot0_item", ":fast_draw_agent", 0),
(agent_get_item_slot, ":slot1_item", ":fast_draw_agent", 1),
(agent_get_item_slot, ":slot2_item", ":fast_draw_agent", 2),
(agent_get_item_slot, ":slot3_item", ":fast_draw_agent", 3),
(assign, ":fast_draw_dagger", -1), #for a check later
(try_begin), #Insert item ids of quickdraw daggers below, you guys probably have more but this is just an example
(this_or_next|eq, ":slot0_item", "itm_cleaver"),
(this_or_next|eq, ":slot0_item", "itm_sickle"),
(this_or_next|eq, ":slot0_item", "itm_knife"),
(this_or_next|eq, ":slot0_item", "itm_dagger"),
(assign, ":fast_draw_dagger", ":slot0_item"),
(else_try),
(this_or_next|eq, ":slot1_item", "itm_cleaver"),
(this_or_next|eq, ":slot1_item", "itm_sickle"),
(this_or_next|eq, ":slot1_item", "itm_knife"),
(this_or_next|eq, ":slot1_item", "itm_dagger"),
(assign, ":fast_draw_dagger", ":slot1_item"),
(else_try),
(this_or_next|eq, ":slot2_item", "itm_cleaver"),
(this_or_next|eq, ":slot2_item", "itm_sickle"),
(this_or_next|eq, ":slot2_item", "itm_knife"),
(this_or_next|eq, ":slot2_item", "itm_dagger"),
(assign, ":fast_draw_dagger", ":slot2_item"),
(else_try),
(this_or_next|eq, ":slot3_item", "itm_cleaver"),
(this_or_next|eq, ":slot3_item", "itm_sickle"),
(this_or_next|eq, ":slot3_item", "itm_knife"),
(this_or_next|eq, ":slot3_item", "itm_dagger"),
(assign, ":fast_draw_dagger", ":slot3_item"),
(try_end),
(neq, ":fast_draw_dagger", -1),
(agent_get_wielded_item, ":cur_weapon", ":fast_draw_agent", 0), #current right hand item
(neq, ":cur_weapon", "itm_cleaver"),
(neq, ":cur_weapon", "itm_sickle"),
(neq, ":cur_weapon", "itm_knife"),
(neq, ":cur_weapon", "itm_dagger"), #no fast drawing from a fast draw dagger to another fast draw dagger
(neq, ":cur_weapon", "itm_throwing_daggers"), #also disable any throwing because I have no idea how to spawn throwing items with x ammo
(neq, ":cur_weapon", -1"), #empty hand
(try_begin),
(eq, ":slot0_item", ":cur_weapon"), #find the first item slot that has current right hand item so that you can unequip it without messing up any other copies of that weapon
(assign, ":drop_item_slot", 0),
(else_try),
(eq, ":slot1_item", ":cur_weapon"),
(assign, ":drop_item_slot", 1),
(else_try),
(eq, ":slot2_item", ":cur_weapon"),
(assign, ":drop_item_slot", 2),
(else_try),
(eq, ":slot3_item", ":cur_weapon"),
(assign, ":drop_item_slot", 3),
(try_end),
(agent_get_position, pos1, ":fast_draw_agent"),
(position_set_z_to_ground_level, pos1),
(agent_unequip_item, ":fast_draw_agent", ":cur_weapon", ":drop_item_slot"), #unequip item, current right hand item vanishes
(agent_set_wielded_item, ":fast_draw_agent", ":fast_draw_dagger"), #wield the dagger
(set_spawn_position, pos1),
(spawn_item, ":cur_weapon", 0, 0), #make a new copy of the last wielded item on the ground
(try_end),
I'm not familiar with any of the WSE operations, so you could probably do something fancier.
EDIT: Whoops, forgot an empty hand check.