Here is the full file
loadrt mux2 names=mux2_x,mux2_y,mux2_z
addf mux2_x servo-thread
addf mux2_y servo-thread
addf mux2_z servo-thread
loadrt wcomp names=plus_x_trigger,minus_x_trigger,plus_y_trigger,minus_y_trigger,plus_z_trigger,minus_z_trigger
addf plus_x_trigger servo-thread
addf minus_x_trigger servo-thread
addf plus_y_trigger servo-thread
addf minus_y_trigger servo-thread
addf plus_z_trigger servo-thread
addf minus_z_trigger servo-thread
# this is the deadzone for each axis to stop drift, also can make bigger to stop x/y axis moves easier without one triggering the other
setp plus_x_trigger.max 0.15
setp minus_x_trigger.min -0.15
setp plus_y_trigger.max 0.15
setp minus_y_trigger.min -0.15
setp plus_z_trigger.max 0.15
setp minus_z_trigger.min -0.15
loadrt lut5 names=jog_x_enable,jog_y_enable,jog_z_enable
addf jog_x_enable servo-thread
setp jog_x_enable.function 0x80
addf jog_y_enable servo-thread
setp jog_y_enable.function 0x80
addf jog_z_enable servo-thread
setp jog_z_enable.function 0x80
loadrt or2 names=or-x-jog,or-y-jog,or-z-jog
addf or-x-jog servo-thread
addf or-y-jog servo-thread
addf or-z-jog servo-thread
loadrt scale names=scale.x,scale.y,scale.z
addf scale.x servo-thread
addf scale.y servo-thread
addf scale.z servo-thread
# mine were 0-4.8v. Assuming a range of -1 to +1. 2/4.8=.416 z was way off balance and cannot see how to adjust so do it in sw
setp scale.x.offset -1.00
setp scale.x.gain .416
setp scale.y.offset -1.00
setp scale.y.gain .416
setp scale.z.offset -0.80
setp scale.z.gain .416
net x-scale <= hm2_7i76e.0.7i76.0.0.analogin0 => scale.x.in
net y-scale <= hm2_7i76e.0.7i76.0.0.analogin1 => scale.y.in
net z-scale <= hm2_7i76e.0.7i76.0.0.analogin2 => scale.z.in
# the mux is used to select 0 or the current value and is implementing the deadband. Cannot let the analog value through otherwise in interferes with jogging from ui
net gate-x-scale <= scale.x.out => plus_x_trigger.in minus_x_trigger.in mux2_x.in1
net gate-y-scale <= scale.y.out => plus_y_trigger.in minus_y_trigger.in mux2_y.in1
net gate-z-scale <= scale.z.out => plus_z_trigger.in minus_z_trigger.in mux2_z.in1
# may not be needed anymore
net x-is-homed <= halui.joint.0.is-homed => jog_x_enable.in-1
net y-is-homed <= halui.joint.1.is-homed => jog_y_enable.in-1
net z-is-homed <= halui.joint.2.is-homed => jog_z_enable.in-1
# only allow jogging if in the jog menu linuxcnc/gmoccapy seemed to complain in any other state
net machine-is-injog <= halui.mode.is-manual => jog_x_enable.in-0 jog_y_enable.in-0 jog_z_enable.in-0
# fixed for all axis multiplied from .15 to 1 from scale above. Change scale is difference needed for each axis
setp halui.axis.jog-speed 600
setp halui.joint.jog-speed 600
# wcomp is used here as deadband. Controls relevant jog plus or minus
net enable-x-jog-plus <= plus_x_trigger.over => halui.axis.x.plus or-x-jog.in0
net enable-x-jog-minus <= minus_x_trigger.under => halui.axis.x.minus or-x-jog.in1
net enable-y-jog-plus <= plus_y_trigger.over => halui.axis.y.plus or-y-jog.in0
net enable-y-jog-minus <= minus_y_trigger.under => halui.axis.y.minus or-y-jog.in1
net enable-z-jog-plus <= plus_z_trigger.over => halui.axis.z.plus or-z-jog.in0
net enable-z-jog-minus <= minus_z_trigger.under => halui.axis.z.minus or-z-jog.in1
# if all 3 conditions are met i.e. not in deadband, is homed and is manual then select mux and route analog value to axis
net jog-x-either <= or-x-jog.out => jog_x_enable.in-2
net enable-x-mux <= jog_x_enable.out => mux2_x.sel
net jog-x-speed <= mux2_x.out => halui.axis.x.analog
net jog-y-either <= or-y-jog.out => jog_y_enable.in-2
net enable-y-mux <= jog_y_enable.out => mux2_y.sel
net jog-y-speed <= mux2_y.out => halui.axis.y.analog
net jog-z-either <= or-z-jog.out => jog_z_enable.in-2
net enable-z-mux <= jog_z_enable.out => mux2_z.sel
net jog-z-speed <= mux2_z.out => halui.axis.z.analog