A snippet to use computer keyboard keys to press buttons on an interface!
-
here's another snippet contribution! I needed to create some "key commands" for lack of a better phrase that could press various buttons on my interface to say "mute channel 1" by pressing 1 or open preferences by pressing "P" so on and so forth...this snippet has 25 buttons assigned to 25 various keys on the computer keyboard(all noted in code) im utilizing the
setConsumedKeyPresses
so feel free to tweak and add whatever keys you want these were just keys I used for my project...
The only thing I couldn't work out was the "Shift" or "Command" or "Option" modifiers so I could press Shift +1 or Cmd + G or something like that.... feel free to take a crack at it or tweak/fix my logic...still learning! big shoutout to @ulrik for "teaching me to fish" on this one!
HiseSnippet 1733.3oc0Y0rbaaCDlz1zMVsISxL8R6ITcHi7DaGQJ4+pSZSj+a7j5D0Hmz1ISZBMIDEpo.zPBEG0L9EnO.4ApOM8TmdNWZ2kfjhlx0w1r7P4AXQf8CeK.91k.FsCDNzvPQfl9bGLZ.US+yL5LhK6sYOaFWauszzugw91gRZ.QUUqQCrCCotZ55SuKVg9bynE87WeaKaeatCcbUZZOWvbneGqOSNt11O3QLe+crcoGv5mw5lOXOGAeSguXH3OSaTWafsyQ1dzGailMkgl9ra6xjhfNRaIMDrokvcTmdhi4J6eNKjcnOEewTqCzQpp01rGy2scxXMTSSel1iG4SqF4etw9LWVZ8imAtYTCjwHxNGnO044RlWBWROiKMixktkQGm.1.43VP+4SM1iCKHcsgo5rthxVso18ZFaJ.K3xk5aeDcm.3kTD0LqWu9BDrb9MpT4t2krY.EbchM4PX11KPLj6RFXyo9Dof3XOPNLfRNhNZP.3BzvJATORqcI2mjPhsqaaz9ZUasa0EHPuiccqcWJjJqU8XlqrW0TFSptGk40SNY8199hi2DJQuIDZu5inif4df6pwN7VztLNkH6E4VDX7y738AOIjzUDPrVlb3PoTvUtJXxCyXw8IunBAdpZh8sEVz.KZhEKiEqfEqhEqAEvCPYKUGRLWbME50w1qqZ+7exfd8EMqqfuCBe+KIbSyEMsT3+dD+OfEaiEOEKN.K9Ir3YXwdS57MVzJl+1nE3hU0NXwV+6dRF7VlKZ0TguUUxE7IEOrtT4kpEvmMvEUbuFVvAMT3v9TWXQtsRe8ZT1w3N9CcAQouOt.FFKOlz5Zmd4MVg7TZWZ.EREQnukEJYbuDIAwFT2gP7Zj9oOPDTCwNHvdTjZIwLPl.NKJmp8F6.BCpn9FvetGLLf+dm6LO4cQSEiAgYo.yppFtUI2gTiAElfOgFF2yKMXXXuZIgNd3Xp+.AGdo13tY942.m31gJc5M4P3vQj81pxIQiz83LIy1m8qz3lgAGlHJyfQkYBGQcs8CoKP9+wedYzTPlwGpERisiGlnVIx5nIiNTYZhJHykJGBALFSUjO6VrjJQJkjxoV2gbGISvqIN7WRVjwrj8nPeklywC93PnL48rIXTZoDoAz3dbW5ago+Sa2RLr5mzEoYIWZXTtafVTAifYcI0RA+Mf5ib6aOt2tWpbxmx8j8RbzXm8.gmmuJCYz7DQzM5EGQ.LVA4l6X8TJtrpkWjvzKAG+qN6V1HE4XsFXcrik0tTCwAkpcvgQGcaHdVEJlzAQp8vJYSgnZAWrdts+PZsy1cleiyBjSOatG0slJf5f.lmGrUln4h3E7TTmD8qSHTPNkY5Dy4H7oKMHfAwnQeMhKjvX1Q3wAco6WSvX8IVFIQeo5vgdd3bMWvW7XQvQ3uiRnoX7DvqSDbfP8wBI8I7ZyW4cUlCBvI4apa2yrMLaRfv2mFblMi6xJ37.ViOr+gzfEHuAmeSMD1Fxo2ayrWr813nRtkwPAGiiex.Z766H7cw8rf+dxcBoEmcD1SzWD6gfoxncDci3cDoRxpwfNYNC0KlZQtOrSnoztDvrRfMderWF3MJF7lEC9xEC9JEC9pEC9ZEC95WM3URjK0KHdyBh2pf3aTP7MKH9kKH9UJH9UKH90JH9Bp+rJn9ypf5OqBp+rJn9ypf5OqyR+8r81xVZiGlN9aHv2UFPCjL7yW5aQeCygpNZ8bFaQCORJFno+koaAWS+ST7d8jCdi6TLh1YLZsq1a0zMzQpFk7inS2B81r+wzJmPct1r0b5SzhGeO8Ds3m5Rod1KvW3hb.qDGvJqCzVKuCTK4eBykhDKEIuuTIoghjOTpjzTQxOqWljrrhjeuTIYEEI2dpxjjUUj7akJIqoH4OKURVOWbx6+ujjL6e3zAJkCKl4hTJGVrxEpTNrzHWrR4vRybAKkCKKmKZobXYkbgKkCKqlKd4CkBKqkKdobXY8bwKkBKV0yEuTNrXlKdobXwJW7R4vRibwKkCKMyEuTNrrbt3ETFbQXYxK34lF6KbG5aKO88MgWrVbCLwouyM7hb3gL4nr668RbIT0O2Kg5h5h2xnMS5z6r8woNCeD1RdY3iwWc20M1taWpibrCNiwN+3U8d59Hz+TwP7eG+91x.FpCd7v9cDCCbn.6b33BgnjXJTTodudxYE5P4tQu72vSbil365wMZlznVeam.wqbTmFBubvqEUC3S7n6BcNi8w2ISbFPMs9LW1qbbNcWMAPqqJvFWUfMup.W9pBbkqJvUup.W6iCDuJ4GNTJ5qBazz1u81QmYUWeatMn.iTqZ+CPJmffA
-
@johnmike I looked at your code and fixed a few bugs, changed the way the buttons and states are initiated, and used const where appropriate.
HiseSnippet 1908.3ocsZt0biSrDGeT1nCaLWJnJdg2F7CTNjKXo3a4D1EiiSBt33cMqSVfZqsXUjFYOmHqwkz3ciOGRU7QiOR7M.5VWrk2XAqhT7CSxb4+z+TO8zZjsF3ILY99BOhRoymOkQT9.0gyckiOdrA2kzqKQ4iT6a3KYdzvl5LepguOyhnn7fyvFT1ZSRvm+3a5X3X3ZxV1Dg7bA2j8e3S3xksNn82ycbN0vhcNeRhQWqcOSg6wBGwLfmGnVkL0v7JiQrmXfCaCUx2Y3Oln7kpVZ0zraYZznkVMcSS8VM0OroIyv1l0PqdyZsrqYaXVUmn7uNwhKEdCkFRlOQYyNBq4CGKdianAdN2meoCCqnQFBVNr4SENV3kH1J43wbGqAwNJeBLKCV51dPna6SU6ys3KZeo66iC5ftTQRGnxFqh2CVAOsj3UMAdqAIkDHsYHReh5PSO9T4xdPdde0dtvpI3dXqfR3XIaz+gpGKfQ3J2ehwUrS8fJKTToQ0p6ROnZ0sOpTou5qnG6w.voFzKgEpQdhYtVzoFtLGpTPMMlJm4wnWwlO0C.f4WBVd8kzNmQeDM1HiXxiESlJbgJUJ24rxQScWlM2kQkiCl.JvIej6DXP9TagGUuN8xYRILeQSJLnuMwXdD8EknvmxZk2kVVGKN.KpgE0whFXQSrnET.e.i1IbJoZ60JT8gX+UC6+u+SB0GtmV0P4mhx6mQ4ZZ6ooGp+GP8+HVbBV7Lr3br3mwhKvhd2F9C1SOx9CvQbFVLDK5lNIIzqqsmdsP8cJSeG+rPOrxT5kgKgWL0BiNdkOtD65OaBy56YyGDFK7JLDg6Z5LyBBfbbvEP+RcNa+0N5Jqt7FEi7LlMyiAYbnrq49Rt6n3fBpADI5C6rBhfl.FBZgZ34YLOJdIdfPfBfaTs8Aqw7dMqhd8HSzykK4FN7+GKRALq3d0Ulkvsu+CSkIbQhaSBBeubQfF3t3tNXnt8LWSIGrfvMzUhaQ7DNULi2erK80FNyXaW5+WZKGALgTt00fYiMI20hc8SsWJ.r7Vb6Jvnd7ipR+hu.G+WG.zVakD8W.s+RXhBl9iJcC.bIDyJbnwpGQ4zuFVWg+tyNaSAiCNlSYRyw21ue4bZutAAOQs7B9KSe2dvPJS2ALzNZaCXspvnXAzIbbj2qxa4bVqlJkkrqkk2Mx.zx6rZ3CLrUzE6D.RSLQ.qOG8GU19HJszMAgCCYxE4ynKVQASf4od6jfQQywQwKtDhWnqHt7+htyn8OGOlAy0hDdif6f.QXQ0SlaKLLFU4wFgc1CW2Au7piaQ3.Xl8sX9AI3AyhginXtMsRr3GumVLIQzbtXzHmv7uAQ7TgcPESgGbw.qfVKW1WnaE2Y7biq+e9564nEJwqjnMXKhmSNtECDoNre.XDzSfbEgayimfffR+RISOE1CtZDtjtdb19n0Ixbrg6HlEFFf9EO9nQvogB7EQqnKTcSv+cCk43yR3Nw7YBG19S83XXODPPcER3Z1TLxERsX8uo3lfasNQCtO3kyFMB80tB28div6J7+CRVFZwa.pSj53IBI6otUBxQ.Asz2tKa601Wz1IGl2Z6FOnl2emvJtylbIyKYFJbfvgQV8DNpoeBmjG.yLLeQhAJbwTwOcJyMsikQhRx.mF5yhnBFpL3rPeTzYgBSHP3vQd1RMrhFI.4jmikjA454S9A4Sds7Iud9j2HexalO4sxm7CuaxKEG1TMm50xod8bp+fbpuVN0WOm5ajS8Myo9V4TeNi+zyY7mdNi+zyY7mdNi+zyY7m95h+tnWWCoA93zQ2KAt+xTlmji25RoK60bSV3CWukZWl+URwzfwFchVhx6EZ2OL9QuwiAFX1MU6bF45jeyHySV4MbK4X3tiJ+zFDxXFezXIVaWEBANig3MwmczGe.d77CAmnL3FcKr8CeGtUWBBdR6DD731QDD0P6KZGSQ7P51dpA7vVxDVL3hBOp8R2JEuybVXROISV2OLomQlNHASsmd+vzAYjoZIX52d88CS0xHS0Svzu+q2OLUOiL0H0X7yKLlZjQlZlZLdwwTyLxTqTiwKNlZkQlNL0X7hioCeGYJw47RKHu3fpZVgJ0L4seUgA0oYEpTSkWfP0OqPkZt7BDpeHqPkZx7BDpeLqPkZ17BDpSxJTolN+2rKLndVVgJ074EHTmmUnRMgdAB0OmUnRMidAB0EYDJ8TynWfP0KqPkZF8e2ovfZPVgJ0L5EHTmkUnRMidAB0vrBUpYzKPn5lUnRMidABUGB41+zyerZeg0LGC4p+R336KPTGbwpuJA3OwrqOWNO4yiWX+73uqH9IpC3RywqmwMVCiDx8BiQuTAen5I11LS4R.2T8ze594MHf7LwL7WxqugziCgMpOY1jghYdlLv5ttLG7KuWYC7qYOrdUrN5AFxbsBp7mvmnN0v5JQcpE2IYhgom3WLC+VZvWagGFzBvjavq3wVp8w5za8cSQHS3V7ewzb0o5VB0uqBO3tJr1cUX86pvF2UgMuqBa8OKDeIW91YRwjvsMDR+AmD7coonbhqADAFDsR9KPqzCnZ
-
@hujackus damn everybody is so good here. I feel like a baby. lol
-
@hujackus I had a play around with this and couldn't find a way to have the buttons scripted as momentary. It seems they need that, even if they're set to momentary in the editor. currently keyboard input just sets them to on or off. Can you think of a way to do this?
-
@rglides I looked at the code just now and you are right. The keyPressCallback is only called after a key is pressed down and NEVER when the key is released and goes back up.
As a workaround, I suggest creating a timer to turn the button back off after each keypress a fraction of a second later.
However this problem gets much worse if you consider that most users have "key repeat" enabled, and holding down a key for more than a second will send a barrage of keypresses to the key listener.
@Christoph-Hart Is there a way to handle keyRelease events similar to keyPresse events?
-
@hujackus said in A snippet to use computer keyboard keys to press buttons on an interface!:
will send a barrage of keypresses to the key listener.
holy hell hahah yeah lucky I didn't try it with a synth and just a drum sample with oneshot. I kind of had a little hope that I could make it work in a oneshot context, but the toggling on and off is just not nice. The timer could work, but a simpler solution must be doable, somehow. I feel like I saw @d-healey script a momentary button in one video, or am I dreaming?