Skip to main content
Inspiring
July 2, 2025
Answered

keyboard UI slider nudge

  • July 2, 2025
  • 1 reply
  • 178 views

I can add a slider UI to a script with 

var slider1 = dlg.add("slider", undefined, undefined, undefined, undefined, {name: "slider1"}); 
    slider1.minvalue = 0; 
    slider1.maxvalue = 10; 
    slider1.preferredSize.width = 180;

 

But is there a way (in Windows)  to allow you to nudge the slider using the keyboard?

 

 

Correct answer jazz-y
var dlg = new Window("dialog{orientation:'column',alignChildren:['fill', 'top'],spacing:0,margins:15}");
var slider1 = dlg.add("slider", undefined, undefined, undefined, undefined, { name: "slider1" });
slider1.minvalue = 0;
slider1.maxvalue = 10;
slider1.preferredSize.width = 180;
slider1.active = true

slider1.addEventListener('keydown', sliderHandler)

function sliderHandler(evt) {
    if (evt.keyIdentifier == 'Right' || evt.keyIdentifier == 'Up') {
        evt.target.value += 1
    } else if (evt.keyIdentifier == 'Left' || evt.keyIdentifier == 'Down') {
        evt.target.value -= 1
    }
}

dlg.show()
* if your window contains multiple controls the input focus should be set to the slider (slider1.active = true)

1 reply

jazz-yCorrect answer
Legend
July 2, 2025
var dlg = new Window("dialog{orientation:'column',alignChildren:['fill', 'top'],spacing:0,margins:15}");
var slider1 = dlg.add("slider", undefined, undefined, undefined, undefined, { name: "slider1" });
slider1.minvalue = 0;
slider1.maxvalue = 10;
slider1.preferredSize.width = 180;
slider1.active = true

slider1.addEventListener('keydown', sliderHandler)

function sliderHandler(evt) {
    if (evt.keyIdentifier == 'Right' || evt.keyIdentifier == 'Up') {
        evt.target.value += 1
    } else if (evt.keyIdentifier == 'Left' || evt.keyIdentifier == 'Down') {
        evt.target.value -= 1
    }
}

dlg.show()
* if your window contains multiple controls the input focus should be set to the slider (slider1.active = true)
Inspiring
July 2, 2025

Thanks jazz-y!

 

How do key identifiers work with an onChanging function? #noidea

// Define behavior for when the slider1 value changes
dlg.slider1.onChanging = function() 
{
    var v = Math.round(dlg.slider1.value);

    dlg.slider1.value = v;

    dlg.statictext1.text = spriteText;
    scaleSize = v * 100;
} 

 

Casically I need to updated text & values as the slider moves: