um pouquinho sobre launchctl

5 Jan 2026

basicamente eu queria mapear o caps lock para escape no mac

sim tem uma ui, mas preferia que viesse num config as code rs

https://stackoverflow.com/questions/127591/using-caps-lock-as-esc-in-mac-os-x/46460200#46460200

entao tem q criar um arquivo plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!-- Place in ~/Library/LaunchAgents/ -->
<!-- launchctl load com.ldaws.CapslockBackspace.plist -->
<!-- https://stackoverflow.com/questions/127591/using-caps-lock-as-esc-in-mac-os-x/46460200#46460200 -->
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.ldaws.CapslockEsc</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/hidutil</string>
      <string>property</string>
      <string>--set</string>
      <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

em ~/Library/LaunchAgents/com.ldaws.CapslockBackspace.plist

ok bacana

ai precisa registrar isso, usando launchctl bootstrap MAS eu quero q tudo fique registrado em codigo entao fiu la no meu yadm bootstrap (~/.config/yadm/bootstrap) e coloquei

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.ldaws.CapslockBackspace.plist

ae rodei yadm bootstrap

so q tem um porem, se ele ja tiver registrado, ele falha

entao coloquei para remover (bootout) e depois instalar (bootstrap) toda vez, foda-se, poderia checar se ja existe mas assim ta bom por ora

# idempotently add
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.ldaws.CapslockBackspace.plist || true
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.ldaws.CapslockBackspace.plist

fontes

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

https://stackoverflow.com/questions/127591/using-caps-lock-as-esc-in-mac-os-x/46460200#46460200

https://apple.stackexchange.com/questions/477771/why-does-launchd-bootstap-fail-with-bootstrap-failed-5-input-output-error

https://medium.com/@mnmostafa.nasr/launchctl-for-dummies-b7559742d83d