V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
blacksun1017
V2EX  ›  Apple

周末花时间写了一个 Mac App,解决连接多屏时鼠标快速切换问题

  •  
  •   blacksun1017 · 2023-11-26 21:05:15 +08:00 · 2331 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,记得很久以前有一个 App 实现了类似功能,但现在怎么也找不到了。

    自己花几天时间从零开始学 macOS 开发,手撸了一个,请大家多提反馈

    https://apps.apple.com/cn/app/id6472813601?l=zh-Hans-CN&mt=12

    51 条回复    2024-04-28 15:02:04 +08:00
    jorneyr
        1
    jorneyr  
       2023-11-26 21:41:40 +08:00
    用 Hammerspoon 的脚本也实现了同样的功能:
    - 多个屏幕: 双击 Ctrl 键快速把鼠标移动到另一个屏幕的正中间。
    - 一个屏幕: 双击 Ctrl 把鼠标移动到当前屏幕正中间。
    blacksun1017
        2
    blacksun1017  
    OP
       2023-11-26 21:52:21 +08:00
    厉害
    GabrielleBellamy
        3
    GabrielleBellamy  
       2023-11-27 01:01:19 +08:00
    感觉很不错!下载了打算试一试!🥰💪
    neochen13
        4
    neochen13  
       2023-11-27 01:31:46 +08:00
    这个思路不错啊
    CoderLife
        5
    CoderLife  
       2023-11-27 01:36:51 +08:00
    提个 bug:
    当^不放手, 换 1,2,3 时, 没有变化
    hackpro
        6
    hackpro  
       2023-11-27 05:45:25 +08:00 via iPhone
    大佬有计划支援下老版本 10.14/15 不😄
    blacksun1017
        7
    blacksun1017  
    OP
       2023-11-27 09:32:41 +08:00
    @CoderLife 感谢反馈,确实有瑕疵,不过鼠标切过去了,但是提示的 HUD 没切过去。
    blacksun1017
        8
    blacksun1017  
    OP
       2023-11-27 09:33:15 +08:00   ❤️ 1
    @hackpro 我周末再试试老系统的 API 生不生效。
    penrod
        9
    penrod  
       2023-11-27 10:49:59 +08:00
    @jorneyr 配置文件可否分享一下,谢谢
    jorneyr
        10
    jorneyr  
       2023-11-27 11:59:07 +08:00
    @penrod 配置文件可否分享一下,谢谢

    -- 在屏幕间移动光标
    function moveCursorBetweenDesktops()
    local screen = hs.mouse.getCurrentScreen()
    local nextScreen = screen:next()
    local rect = nextScreen:fullFrame()
    local center = hs.geometry.rectMidPoint(rect)

    hs.mouse.setAbsolutePosition(center)
    hs.alert.closeAll()
    hs.alert.show('🐶', alertStyle, nextScreen)
    -- hs.alert.show('🐻‍❄️🦮🐶🦅🐘🦁', nextScreen)
    end

    -- 双击 ctrl: https://gist.github.com/asmagill/c38f75fff9d9ef43d1226329fc1436e4
    ctrlDoublePress = require("double-press-ctrl")
    ctrlDoublePress.action = function()
    moveCursorBetweenDesktops()
    end
    hackpro
        11
    hackpro  
       2023-11-27 16:33:14 +08:00 via iPhone
    有大佬可以试试搞成 Alfred workflow 吗
    kiritoknight
        12
    kiritoknight  
       2023-11-28 13:51:41 +08:00
    已用上,大佬牛逼,图标能搞个圆角吗,和其他 app 有点不搭,哈哈哈
    lambohu
        13
    lambohu  
       2023-11-28 19:55:30 +08:00
    用上了,如果能定义上面朋友提到的双击 Ctrl 切换之类的键就更好了,另外可不可以加个设置把切换的时候的鼠标动画去掉,我这里每切一次那个鼠标的图会往右下角挪动一下,越切越挪。
    blacksun1017
        14
    blacksun1017  
    OP
       2023-11-29 10:09:16 +08:00
    @kiritoknight 图标我自己手撸的.... 在找设计师朋友帮忙搞个,稍安勿躁。
    blacksun1017
        15
    blacksun1017  
    OP
       2023-11-29 10:10:46 +08:00
    @lambohu 感谢建议,后面会加上动画开关。Control 双击之类的好像要「辅助功能」权限,我研究研究。
    blacksun1017
        16
    blacksun1017  
    OP
       2023-12-01 09:52:08 +08:00   ❤️ 1
    @hackpro 你好,昨天发了一个新版本,系统要求降低到 10.13 了,但我自己没设备测试过.... 需要的话麻烦下载试试。
    hackpro
        17
    hackpro  
       2023-12-01 16:40:53 +08:00
    @blacksun1017 #16 已经用上了 非常好👍 感谢
    lambohu
        18
    lambohu  
       363 天前
    @blacksun1017 旧版本和新版本都存在的一个问题,外接显示器全屏播放视频,把鼠标从内屏切到外接显示器之后,再点击鼠标,指针又会自动跳回内屏,100%复现。麻烦看看。
    macOS 13 ,M1 Pro
    blacksun1017
        19
    blacksun1017  
    OP
       363 天前
    @lambohu 感谢反馈,我抽空看看。
    blacksun1017
        20
    blacksun1017  
    OP
       362 天前
    @lambohu 你好,昨晚发了一个小版本,应该优化了这个问题,麻烦更新试试。
    kiritoknight
        21
    kiritoknight  
       362 天前
    @blacksun1017 好的,已更新,hub 偏移的问题也修复了
    lambohu
        22
    lambohu  
       361 天前
    @blacksun1017 额,,我这里更新新版后,打不开 config 了,重启,卸载重新装都不行,,不清楚为啥。
    blacksun1017
        23
    blacksun1017  
    OP
       356 天前
    @lambohu 请问版本号多少啊?周末更新了 1.0.4 ,麻烦试试看? Config 要从菜单图标点击进去。
    lambohu
        24
    lambohu  
       356 天前
    @blacksun1017 更新了 1.0.4 的,也不知道啥问题,期间系统版本也没动过,不好排查。
    lambohu
        25
    lambohu  
       354 天前
    @blacksun1017 我是把所有快捷键清空后,退出的 app ,然后就再也进不了 config 了,卸载安装都不行。1.0.5 也不行
    blacksun1017
        26
    blacksun1017  
    OP
       352 天前
    @lambohu 请问你系统版本号多少啊?电脑右上角状态栏里的鼠标箭头打不开吗?
    lambohu
        27
    lambohu  
       352 天前
    @blacksun1017 13.6.2 。是的。之前可以的。
    blacksun1017
        28
    blacksun1017  
    OP
       351 天前
    @lambohu hello ,我无法复现这个问题,能否加微信私聊下?我微信号 iblacksun 多谢。
    lambohu
        29
    lambohu  
       350 天前
    @blacksun1017 谢谢,不过我先自己排查下吧,应该是我自己机器的问题。
    blacksun1017
        30
    blacksun1017  
    OP
       349 天前
    @lambohu 你好,我已经定位到原因了,在 13.x 及以前的系统确实存在问题,修复版已经提审了,多谢反馈。
    lambohu
        31
    lambohu  
       349 天前
    @blacksun1017 感谢, 那我等正式上架了试试。
    lambohu
        32
    lambohu  
       348 天前
    @blacksun1017 修复啦。而且新功能很好用,切换到应用鼠标就会跟过去,对于不舍得想快捷键的人很好用。
    blacksun1017
        33
    blacksun1017  
    OP
       348 天前
    @lambohu 好的,感恩。
    lambohu
        34
    lambohu  
       346 天前
    @blacksun1017 有个小问题,我是没有设置快捷键,只打开了 Show HUD 和 Auto Switch 功能的:
    比如我两个 Safari 标签,一个在外接屏全屏看 youtube 视频,一个在内置屏浏览网页。如果我用完其他应用比如微信,再点击内置屏的 Safari 标签,鼠标会跳到外接屏的 youtube 去。可能是外接屏的全屏视频优先度更高了。按步骤 能复现。
    有空麻烦看看。
    blacksun1017
        35
    blacksun1017  
    OP
       346 天前
    @lambohu 多谢反馈,我试着优化下。
    blacksun1017
        36
    blacksun1017  
    OP
       345 天前
    @lambohu 你好,昨晚发布了新版,当 App 全屏时候不再进行跳转,应该修复了这个问题,再次感谢。
    lambohu
        37
    lambohu  
       344 天前
    @blacksun1017 但这样反而影响了一个还挺高频的场景,就是全屏用播放器(非浏览器)看视频的时候,切过去的时候鼠标不跟过去了。
    这个和 Safari 有一个标签页全屏看视频那个场景的确是冲突了🤣。

    或许可以加入自定义开关(名字似乎不太好起),让用户选择。

    其实无论怎样,都解决了最主要的场景了,只是我是用 Manico 切程序的,所以不太想多想一个快捷键去切鼠标。

    谢谢了。我觉得可以不用管我这太细的需求了,无论这版本还是上个版本都是没问题的。
    blacksun1017
        38
    blacksun1017  
    OP
       344 天前
    @lambohu 十分感谢你的建议,确实因为技术上的限制无法很好的兼容两种场景。我先保持现状,等后续有更多反馈再决定是否改进。
    lambohu
        39
    lambohu  
       344 天前
    @blacksun1017 辛苦,我也是刚才更新了,才意识到其实是不同的场景,都有道理。感谢。
    brucmao
        40
    brucmao  
       221 天前
    用上了,希望移动光标之后,自动点击下鼠标左键,让鼠标下的窗口获取到焦点。
    目前想脱离鼠标,浏览器用的 Surfingkeys 这类的 vim 插件,使用楼主软件,鼠标切换后还要点击下,才能激活
    blacksun1017
        41
    blacksun1017  
    OP
       221 天前
    @brucmao 你好,这个功能应该已经实现了哇,快捷键切换屏幕之后,会自动激活对应屏幕最顶层的 App ,是什么场景下有问题吗?
    brucmao
        42
    brucmao  
       220 天前
    @blacksun1017 #41 我试了下,切换后没有激活顶层 app,还要鼠标单击一次才行
    blacksun1017
        43
    blacksun1017  
    OP
       220 天前
    @brucmao 多谢反馈,请问 macOS 系统版本是啥?我看看是不是系统兼容性问题。
    brucmao
        44
    brucmao  
       220 天前
    @blacksun1017 #43 macOS Sonoma 版本 14.4.1
    blacksun1017
        45
    blacksun1017  
    OP
       219 天前
    @brucmao 你好,我用的就是 14.4.1 ,自己使用没发现问题,但昨天还是更了一个小版本,尝试优化这个问题,麻烦更新试试。
    brucmao
        46
    brucmao  
       218 天前
    @blacksun1017 #45 奇怪,我更新了,M1pro 外接 4k 屏幕,从内建显示屏切换到 4k 显示器时会激活 4k 显示器下的顶层 app,但是从 4k 显示器切换到内建显示屏,却不能激活内建显示器顶层 app
    blacksun1017
        47
    blacksun1017  
    OP
       217 天前
    @brucmao 你好,可能只内建屏幕活跃的是啥特殊 App,方便的话告诉我是啥 App ,我看能否模拟出来。
    brucmao
        48
    brucmao  
       217 天前
    @blacksun1017 #47 内建屏幕 app 都不行,我试了微信,safari,vivaldi,备忘录
    blacksun1017
        49
    blacksun1017  
    OP
       217 天前
    @brucmao 请问你的屏幕是怎么布局的?左右还是上下?内建屏幕在哪测?我再调试看看。
    brucmao
        50
    brucmao  
       217 天前 via iPhone
    @blacksun1017 左内建,右外接 4K
    brucmao
        51
    brucmao  
       217 天前 via iPhone
    @blacksun1017 另外我用 Vivaldi 浏览器打开多个窗口,从内建屏切换到外接屏幕也不会激活
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2664 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.