Hi Peter,
here are a short description
1. enable shuttle plugin

2. Map Input signals to shuttle keys (shuttle key numbers are 0 to 15 from upper left and ignore my change beetwen input2 and input0, description in the code sample)

3. edit screen (menu/Operator/edit Screen)
select first line in the screen tree manager (in my picture wx4)
in the lower tab select events
open "Screen load script"

here you can write handles for all input signals
must be in the SigLib Definition enclosed by { }
--------- code sample start ---------
---------------------------------------------------------------
-- Signal Library
---------------------------------------------------------------
SigLib = {
[mc.OSIG_MACHINE_ENABLED] = function (state)
machEnabled = state;
scr.SetProperty('btnRefAll', 'Enabled', tostring(state));
scr.SetProperty('btnRefAll2', 'Enabled', tostring(state));
scr.SetProperty('btnGotoZero', 'Enabled', tostring(state));
scr.SetProperty('tabJogging', 'Enabled', tostring(state));
if (state == 1) then
AxisEnable();
end
end,
-- here handle for input0[mc.ISIG_INPUT0] = function (state)
--- your code here
end,
.....
.......
....
....
--------- code sample ende ---------
Here my code to select axis and steps for the jog
--------- code sample start ---------
-- if screen loaded all inputs are called multiple
-- to save x axis is first selection after screen start i swap INPUT2 and INPUT0
InputTrigger = 0 --suppress toggle for input7
[mc.ISIG_INPUT0] = function (state)
JogSetAxis(2)
end,
[mc.ISIG_INPUT1] = function (state)
JogSetAxis(1)
end,
[mc.ISIG_INPUT2] = function (state)
JogSetAxis(0)
end,
[mc.ISIG_INPUT4] = function (state)
local jogRate
jogRate=0.001
mc.mcJogSetInc(inst, 0,jogRate);
mc.mcJogSetInc(inst, 1,jogRate);
mc.mcJogSetInc(inst, 2,jogRate);
end,
[mc.ISIG_INPUT5] = function (state)
local jogRate
jogRate=0.01
mc.mcJogSetInc(inst, 0,jogRate);
mc.mcJogSetInc(inst, 1,jogRate);
mc.mcJogSetInc(inst, 2,jogRate);
end,
[mc.ISIG_INPUT6] = function (state)
local jogRate
jogRate=0.1
mc.mcJogSetInc(inst, 0,jogRate);
mc.mcJogSetInc(inst, 1,jogRate);
mc.mcJogSetInc(inst, 2,jogRate);
end,
[mc.ISIG_INPUT7] = function (state)
local jogRate
jogRate=1
mc.mcJogSetInc(inst, 0,jogRate);
mc.mcJogSetInc(inst, 1,jogRate);
mc.mcJogSetInc(inst, 2,jogRate);
end,
[mc.ISIG_INPUT8] = function (state)
if (state==1 and InputTrigger==0) then
InputTrigger = 1
ButtonJogModeToggle()
end
if (state==0 and InputTrigger==1) then
InputTrigger = 0
end
end,
....
.....
....
--------- code sample ende ---------
Hope i can help

Tom