# Is there something like ScriptUI's "keyboardState" in UXP?

**URL:** <https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015>\
**Category:** Photoshop\
**Created:** [December 12, 2021, 4:48pm UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015 "2021-12-12T16:48:31Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dominik\_S](https://avatars.discourse-cdn.com/v4/letter/d/ed8c4c/32.png) [@Dominik\_S](https://forums.creativeclouddeveloper.com/u/Dominik_S)\
**Post date:** [December 12, 2021, 4:48pm UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015/1 "2021-12-12T16:48:31Z")

</div>

In my old Extendscript/CEP Panels I always used “keyboardState” to add a secondary behavior to my buttons. For example, when a modifier key like shift is pressed while clicking on the button a different function is called:

```auto
if(ScriptUI.environment.keyboardState.shiftKey){
	function1();
} else {
	function2();
}

```

Does anybody know if there is something similar in UXP? Thanks!

---

<div class="post-metadata">

**Author:** ![Karmalakas](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.creativeclouddeveloper.com/karmalakas/32/1048_2.png) [@Karmalakas](https://forums.creativeclouddeveloper.com/u/Karmalakas)\
**Post date:** [December 13, 2021, 7:30am UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015/2 "2021-12-13T07:30:25Z")

</div>

Check Adobe’s Kitchen-sink plugin - it has an example (`Alt` and `Shift` are detected, but `Ctrl` isn’t for some reason)

> <https://github.com/AdobeDocs/uxp-photoshop-plugin-samples/blob/main/ui-kitchen-sink/index.js#L99>

---

<div class="post-metadata">

**Author:** ![Dominik\_S](https://avatars.discourse-cdn.com/v4/letter/d/ed8c4c/32.png) [@Dominik\_S](https://forums.creativeclouddeveloper.com/u/Dominik_S)\
**Post date:** [December 13, 2021, 7:11pm UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015/3 "2021-12-13T19:11:34Z")

</div>

Thanks for pointing that out. Unfortunately I have no Idea how I can implement that in a similar way as I did with CEP. Any chance you can point me in the right direction?

Oh and by the way, `ctrl` and `meta` (command on mac) are also detected on my machine (PS 23.0.0) …?!

---

<div class="post-metadata">

**Author:** ![Dominik\_S](https://avatars.discourse-cdn.com/v4/letter/d/ed8c4c/32.png) [@Dominik\_S](https://forums.creativeclouddeveloper.com/u/Dominik_S)\
**Post date:** [January 22, 2022, 3:58pm UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015/4 "2022-01-22T15:58:40Z")

</div>

I still haven’t figured out how I can adapt that code from the kitchensink example which @Karmalakas pointed out. Maybe anyone with some tipps? 🙂

---

<div class="post-metadata">

**Author:** ![AnthonyK](https://avatars.discourse-cdn.com/v4/letter/a/85f322/32.png) [@AnthonyK](https://forums.creativeclouddeveloper.com/u/AnthonyK)\
**Post date:** [January 23, 2022, 2:15am UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015/5 "2022-01-23T02:15:58Z")

</div>

I’m a vanilla JS coder only, but here’s what I use that seems to work:

```auto
document.getElementById("yourButton").addEventListener("click", event => {
    if (event.ctrlKey || event.metaKey) {doSomething();} 
    else {doSomethingElse();}
});

```

“event.ctrlKey” catches Windows  
“event.metaKey” catches Mac

---

<div class="post-metadata">

**Author:** ![Dominik\_S](https://avatars.discourse-cdn.com/v4/letter/d/ed8c4c/32.png) [@Dominik\_S](https://forums.creativeclouddeveloper.com/u/Dominik_S)\
**Post date:** [January 23, 2022, 1:29pm UTC](https://forums.creativeclouddeveloper.com/t/is-there-something-like-scriptuis-keyboardstate-in-uxp/4015/6 "2022-01-23T13:29:02Z")

</div>

Hi AnthonyK, thank you so much! It works perfectly. I simply messed up the syntax here, so all my tries failed. Thanks for pointing me in the right direction 🙂
