Skip to content

Commit

Permalink
✨ 增加 Alt+PrtScr 快捷键
Browse files Browse the repository at this point in the history
  • Loading branch information
jackie-yellow committed Aug 29, 2024
1 parent 0cba1d2 commit 329bf30
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 4 deletions.
35 changes: 35 additions & 0 deletions next/kmp/app/desktopApp/src/desktopMain/kotlin/startDwebBrowser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,17 @@ import org.dweb_browser.core.std.dns.nativeFetch
import org.dweb_browser.helper.collectIn
import org.dweb_browser.helper.platform.DeepLinkHook
import org.dweb_browser.helper.platform.PureViewController
import org.dweb_browser.helper.platform.toByteArray
import org.dweb_browser.pure.http.PureHeaders
import org.dweb_browser.pure.http.PureMethod
import org.dweb_browser.pure.http.buildRequestX
import org.dweb_browser.sys.tray.TrayNMM
import java.awt.AWTEvent
import java.awt.Desktop
import java.awt.Robot
import java.awt.Toolkit
import java.awt.event.AWTEventListener
import java.awt.event.KeyEvent


suspend fun startDwebBrowser(debugTags: String?): DnsNMM {
Expand All @@ -27,6 +36,7 @@ suspend fun startDwebBrowser(debugTags: String?): DnsNMM {

val dnsRuntime = launcher.launch()
dnsRuntime.open("tray.sys.dweb") // 由于快捷功能增加了截屏后,直接打开SmartScan功能,所以这边手动启动
registerHotKey(dnsRuntime) // 注册热键

// TODO fuck this
DeepLinkHook.instance.onLink {
Expand Down Expand Up @@ -56,5 +66,30 @@ suspend fun startDwebBrowser(debugTags: String?): DnsNMM {
}

return launcher.dnsNMM
}

/**
* 注册热键,快捷键
*/
private fun registerHotKey(dnsRuntime: DnsNMM.DnsRuntime) {
val listener = AWTEventListener { event ->
if (event is KeyEvent) {
if (event.id == KeyEvent.KEY_RELEASED && event.keyCode == KeyEvent.VK_PRINTSCREEN && event.isAltDown) {
// released => alt + printScreen
dnsRuntime.scopeLaunch(cancelable = true) {
val imageBitmap = PureViewController.awaitScreenCapture() // 打开截图
dnsRuntime.nativeFetch(
buildRequestX(
url = "file://scan.browser.dweb/parseImage",
method = PureMethod.POST,
headers = PureHeaders(),
body = imageBitmap.toByteArray()
)
)
}
}
}
}
val toolkit = Toolkit.getDefaultToolkit()
toolkit.addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.zIndex
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.debounce
import org.dweb_browser.helper.platform.IPureViewController
import org.dweb_browser.helper.platform.isDesktop
import org.dweb_browser.sys.window.core.WindowContentRenderScope
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.decodeToImageBitmap

@OptIn(ExperimentalResourceApi::class, FlowPreview::class)
@OptIn(ExperimentalResourceApi::class)
@Composable
fun WindowContentRenderScope.RenderBarcodeScanning(
modifier: Modifier, controller: SmartScanController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class TrayNMM : NativeMicroModule("tray.sys.dweb", "tray") {
RenderNodeList(trayRootTree.children.collectAsState().value)

Item(
text = SysI18nResource.capture(),
text = "${SysI18nResource.capture()} Alt+PrtScr",
// shortcut = KeyShortcut(key = Key.PrintScreen, ctrl = true) // 有异常
) {
runtime.scopeLaunch(cancelable = false) {
Expand Down

0 comments on commit 329bf30

Please sign in to comment.