Não, não há evento KeyHold, apenas KeyPress e KeyRelease. KeyPress é enviado quando a tecla é pressionada e enviada novamente após um determinado período de tempo. A hora pode ser configurada com xset r
(existem duas vezes: tempo para a primeira repetição e tempo para repetições subsequentes). Um evento KeyRelease é enviado quando a chave é realmente liberada (não é enviada enquanto a chave está sendo segurada).
Se um aplicativo desejar reagir a uma tecla retida, ele precisará observar a pressão inicial da tecla e reagir depois de um horário definido ou após um novo evento KeyPress, desde que não tenha recebido uma KeyRelease nesse meio tempo. Reagir às teclas retidas é altamente incomum no mundo da GUI do Unix, então há um círculo de aplicações que não se auto-perpetuam e estruturas de programação que não oferecem uma maneira fácil de fazê-lo.
O XKB permite que algumas chaves sejam configuradas como não repetíveis; essas chaves geram apenas um KeyPress inicial e um KeyRelease final. Eu não sei onde isso é feito na configuração. Com essas chaves, apenas a estratégia de tempo limite do KeyPress + funcionará, não a estratégia do segundo KeyPress.
Nem os xbindkeys nem o sxhkd facilitam isso. Embora eles permitam que uma ação seja vinculada a eventos de lançamento de chave, eles não facilitam a relação entre a tecla pressionada e a liberação da tecla, por isso é difícil programar a lógica “faça isso X ms após pressionar a tecla, mas somente se a chave ainda não foi lançada ”+“ faça isso no lançamento da chave, mas somente se o evento hold ainda não tiver sido disparado ”. Não conheço nenhum outro framework semelhante que facilite isso.