#text #platform #obtain #across #tiny #macos #linux

get-selected-text

一个轻量级的Rust库,可让您轻松地在所有平台(macOS、Windows、Linux)上获取所选文本。

7个版本

0.1.6 2024年5月29日
0.1.5 2024年5月8日

#13 in 无障碍访问

Download history 562/week @ 2024-05-03 83/week @ 2024-05-10 40/week @ 2024-05-17 158/week @ 2024-05-24 128/week @ 2024-05-31 25/week @ 2024-06-07 14/week @ 2024-06-14 13/week @ 2024-06-21 7/week @ 2024-06-28 15/week @ 2024-07-05 7/week @ 2024-07-12 50/week @ 2024-07-19 18/week @ 2024-07-26 27/week @ 2024-08-02 13/week @ 2024-08-09

每月110次下载

MIT/Apache

14KB
256

get-selected-text

Lint crates.io

一个轻量级的Rust库,可让您轻松地在所有平台(macOS、Windows、Linux)上获取所选文本。

对应的Node.js包:node-get-selected-text

用法

添加

cargo add get-selected-text

使用

use get_selected_text::get_selected_text;

fn main() {
    match get_selected_text() {
        Ok(selected_text) => {
            println!("selected text: {}", selected_text);
        },
        Err(()) => {
            println!("error occurred while getting the selected text");
        }
    }
}

它是如何工作的?

macOS

优先使用A11y API获取所选文本。如果应用程序不遵守A11y API,则模拟按下cmd+c以从剪贴板借取来获取所选文本。

为了避免在模拟按下cmd+c时发出烦人的警报声音,它将自动关闭警报声音(只有警报声音被关闭,不会影响听音乐和看视频的音量)。按键释放后将恢复警报声音的音量。

因此,在macOS上,您需要提前授予无障碍访问权限。示例代码如下

fn query_accessibility_permissions() -> bool {
    let trusted = macos_accessibility_client::accessibility::application_is_trusted_with_prompt();
    if trusted {
        print!("Application is totally trusted!");
    } else {
        print!("Application isn't trusted :(");
    }
    trusted
}

Windows + Linux

模拟按下ctrl+c以使用剪贴板获取所选文本。

依赖项

~2–34MB
~524K SLoC