周末花时间写了一个 Mac App,解决连接多屏时鼠标快速切换问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
blacksun1017
V2EX    Apple

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

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

    如题,记得很久以前有一个 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
    感觉很不错!下载了打算试一试!
    BearCookie
        4
    BearCookie  
       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   1
    @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  
       2023-12-03 21:26:42 +08:00
    @blacksun1017 旧版本和新版本都存在的一个问题,外接显示器全屏播放视频,把鼠标从内屏切到外接显示器之后,再点击鼠标,指针又会自动跳回内屏,100%复现。麻烦看看。
    macOS 13 ,M1 Pro
    blacksun1017
        19
    blacksun1017  
    OP
       2023-12-04 15:52:16 +08:00
    @lambohu 感谢反馈,我抽空看看。
    blacksun1017
        20
    blacksun1017  
    OP
       2023-12-05 10:02:22 +08:00
    @lambohu 你好,昨晚发了一个小版本,应该优化了这个问题,麻烦更新试试。
    kiritoknight
        21
    kiritoknight  
       2023-12-05 11:31:48 +08:00
    @blacksun1017 好的,已更新,hub 偏移的问题也修复了
    lambohu
        22
    lambohu  
       2023-12-06 14:07:35 +08:00
    @blacksun1017 额,,我这里更新新版后,打不开 config 了,重启,卸载重新装都不行,,不清楚为啥。
    blacksun1017
        23
    blacksun1017  
    OP
       2023-12-11 10:12:57 +08:00
    @lambohu 请问版本号多少啊?周末更新了 1.0.4 ,麻烦试试看? Config 要从菜单图标点击进去。
    lambohu
        24
    lambohu  
       2023-12-11 12:50:37 +08:00
    @blacksun1017 更新了 1.0.4 的,也不知道啥问题,期间系统版本也没动过,不好排查。
    lambohu
        25
    lambohu  
       2023-12-13 16:30:47 +08:00
    @blacksun1017 我是把所有快捷键清空后,退出的 app ,然后就再也进不了 config 了,卸载安装都不行。1.0.5 也不行
    blacksun1017
        26
    blacksun1017  
    OP
       2023-12-14 22:36:48 +08:00
    @lambohu 请问你系统版本号多少啊?电脑右上角状态栏里的鼠标箭头打不开吗?
    lambohu
        27
    lambohu  
       2023-12-15 12:18:20 +08:00
    @blacksun1017 13.6.2 。是的。之前可以的。
    blacksun1017
        28
    blacksun1017  
    OP
       2023-12-15 17:46:22 +08:00
    @lambohu hello ,我无法复现这个问题,能否加微信私聊下?我微信号 iblacksun 多谢。
    lambohu
        29
    lambohu  
       2023-12-16 20:23:39 +08:00
    @blacksun1017 谢谢,不过我先自己排查下吧,应该是我自己机器的问题。
    blacksun1017
        30
    blacksun1017  
    OP
       2023-12-18 16:11:12 +08:00
    @lambohu 你好,我已经定位到原因了,在 13.x 及以前的系统确实存在问题,修复版已经提审了,多谢反馈。
    lambohu
        31
    lambohu  
       2023-12-18 17:01:06 +08:00
    @blacksun1017 感谢, 那我等正式上架了试试。
    lambohu
        32
    lambohu  
       2023-12-19 12:04:51 +08:00
    @blacksun1017 修复啦。而且新功能很好用,切换到应用鼠标就会跟过去,对于不舍得想快捷键的人很好用。
    blacksun1017
        33
    blacksun1017  
    OP
       2023-12-19 15:55:28 +08:00
    @lambohu 好的,感恩。
    lambohu
        34
    lambohu  
       2023-12-21 09:21:22 +08:00
    @blacksun1017 有个小问题,我是没有设置快捷键,只打开了 Show HUD 和 Auto Switch 功能的:
    比如我两个 Safari 标签,一个在外接屏全屏看 youtube 视频,一个在内置屏浏览网页。如果我用完其他应用比如微信,再点击内置屏的 Safari 标签,鼠标会跳到外接屏的 youtube 去。可能是外接屏的全屏视频优先度更高了。按步骤 能复现。
    有空麻烦看看。
    blacksun1017
        35
    blacksun1017  
    OP
       2023-12-21 10:02:12 +08:00
    @lambohu 多谢反馈,我试着优化下。
    blacksun1017
        36
    blacksun1017  
    OP
       2023-12-22 09:58:13 +08:00
    @lambohu 你好,昨晚发布了新版,当 App 全屏时候不再进行跳转,应该修复了这个问题,再次感谢。
    lambohu
        37
    lambohu  
       2023-12-22 21:07:40 +08:00
    @blacksun1017 但这样反而影响了一个还挺高频的场景,就是全屏用播放器(非浏览器)看视频的时候,切过去的时候鼠标不跟过去了。
    这个和 Safari 有一个标签页全屏看视频那个场景的确是冲突了。

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

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

    谢谢了。我觉得可以不用管我这太细的需求了,无论这版本还是上个版本都是没问题的。
    blacksun1017
        38
    blacksun1017  
    OP
       2023-12-22 22:13:24 +08:00
    @lambohu 十分感谢你的建议,确实因为技术上的限制无法很好的兼容两种场景。我先保持现状,等后续有更多反馈再决定是否改进。
    lambohu
        39
    lambohu  
       2023-12-22 22:39:59 +08:00
    @blacksun1017 辛苦,我也是刚才更新了,才意识到其实是不同的场景,都有道理。感谢。
    brucmao
        40
    brucmao  
       2024-04-24 10:51:45 +08:00
    用上了,希望移动光标之后,自动点击下鼠标左键,让鼠标下的窗口获取到焦点。
    目前想脱离鼠标,浏览器用的 Surfingkeys 这类的 vim 插件,使用楼主软件,鼠标切换后还要点击下,才能激活
    blacksun1017
        41
    blacksun1017  
    OP
       2024-04-24 17:21:16 +08:00
    @brucmao 你好,这个功能应该已经实现了哇,快捷键切换屏幕之后,会自动激活对应屏幕最顶层的 App ,是什么场景下有问题吗?
    brucmao
        42
    brucmao  
       2024-04-24 18:07:17 +08:00
    @blacksun1017 #41 我试了下,换后没有激活顶层 app,还要鼠标单击一次才行
    blacksun1017
        43
    blacksun1017  
    OP
       2024-04-24 18:45:38 +08:00
    @brucmao 多谢反馈,请问 macOS 系统版本是啥?我看看是不是系统兼容性问题。
    brucmao
        44
    brucmao  
       2024-04-24 20:25:43 +08:00
    @blacksun1017 #43 macOS Sonoma 版本 14.4.1
    blacksun1017
        45
    blacksun1017  
    OP
       2024-04-26 10:05:30 +08:00
    @brucmao 你好,我用的就是 14.4.1 ,自己使用没发现问题,但昨天还是更了一个小版本,尝试优化这个问题,麻烦更新试试。
    brucmao
        46
    brucmao  
       2024-04-27 11:08:53 +08:00
    @blacksun1017 #45 奇怪,我更新了,M1pro 外接 4k 屏幕,从内建显示屏切换到 4k 显示器时会激活 4k 显示器下的顶层 app,但是从 4k 显示器切换到内建显示屏,却不能激活内建显示器顶层 app
    blacksun1017
        47
    blacksun1017  
    OP
       2024-04-27 21:17:51 +08:00
    @brucmao 你好,可能只内建屏幕活跃的是啥特殊 App,方便的话告诉我是啥 App ,我看能否模拟出来。
    brucmao
        48
    brucmao  
       2024-04-28 09:31:54 +08:00
    @blacksun1017 #47 内建屏幕 app 都不行,我试了微信,safari,vivaldi,备忘录
    blacksun1017
        49
    blacksun1017  
    OP
       2024-04-28 09:58:11 +08:00
    @brucmao 请问你的屏幕是怎么布局的?左右还是上下?内建屏幕在哪测?我再调试看看。
    brucmao
        50
    brucmao  
       2024-04-28 12:20:22 +08:00 via iPhone
    @blacksun1017 左内建,右外接 4K
    brucmao
        51
    brucmao  
       2024-04-28 15:02:04 +08:00 via iPhone
    @blacksun1017 另外我用 Vivaldi 浏览器打开多个窗口,从内建屏切换到外接屏幕也不会激活
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2194 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:38 PVG 08:38 LAX 17:38 JFK 20:38
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86