diff --git a/src/main/kotlin/app/termora/ApplePressAndHoldEnabledApplicationRunnerExtension.kt b/src/main/kotlin/app/termora/ApplePressAndHoldEnabledApplicationRunnerExtension.kt new file mode 100644 index 0000000..581a8f4 --- /dev/null +++ b/src/main/kotlin/app/termora/ApplePressAndHoldEnabledApplicationRunnerExtension.kt @@ -0,0 +1,21 @@ +package app.termora + +import com.formdev.flatlaf.util.SystemInfo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +internal class ApplePressAndHoldEnabledApplicationRunnerExtension private constructor() : ApplicationRunnerExtension { + companion object { + val instance = ApplePressAndHoldEnabledApplicationRunnerExtension() + } + + override fun ready() { + if (SystemInfo.isMacOS.not()) return + + swingCoroutineScope.launch(Dispatchers.IO) { + Runtime.getRuntime() + .exec(arrayOf("defaults", "write", "app.termora", "ApplePressAndHoldEnabled", "-bool", "false")) + .waitFor() + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/app/termora/FramePlugin.kt b/src/main/kotlin/app/termora/FramePlugin.kt index 05e9b6f..e492b85 100644 --- a/src/main/kotlin/app/termora/FramePlugin.kt +++ b/src/main/kotlin/app/termora/FramePlugin.kt @@ -9,6 +9,7 @@ internal class FramePlugin : InternalPlugin() { init { support.addExtension(DatabasePropertiesChangedExtension::class.java) { KeymapRefresher.getInstance() } support.addExtension(DatabaseChangedExtension::class.java) { KeymapRefresher.getInstance() } + support.addExtension(ApplicationRunnerExtension::class.java) { ApplePressAndHoldEnabledApplicationRunnerExtension.instance } } override fun getName(): String {