Estou tentando executar isso em meu /etc/init.d/rc.local. Eu tive que adicionar manualmente a saída 0 porque ela não estava lá por padrão se isso faz alguma diferença.
cd /home/john/xcape && ./xcape -e 'Control_L=Escape'
exit 0
Então, para verificar se funciona, eu corro isso e ele retorna ..
$ sudo service rc.local start
Unable to connect to X11 display. Is $DISPLAY set?
Sim, está definido.
$ echo $DISPLAY
john-Ubuntu:0
Eu passei por este tutorial link
Eu olhei em volta no AskUbuntu e todos parecem apontar para o mesmo passo.