V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xifangczy
V2EX  ›  Linux

不理解为什么 Linux 鼠标右键按下 弹出菜单..

  •  1
     
  •   xifangczy · 2023-05-08 18:26:51 +08:00 · 4921 次点击
    这是一个创建于 594 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 mac os 和 linux 中 都是按下右键(mousedown) 即弹出菜单. 而 windows 中就是 右键松开才开始弹出菜单(mouseup).

    不明白为什么要这么设计,我唯一能想到的是 按住右键 然后移动到想要的选项 松开 完成一次菜单选择.但是有什么意义?

    这个问题甚至在早期还有一些奇怪的 BUG( https://bugs.launchpad.net/ubuntu/+source/gtk+2.0/+bug/410636) 由于菜单离鼠标比较近 菜单一个选项和鼠标位置刚好有几像素重叠, 你完成整个 click 操作后默认就选择了菜单第一项. 为了解决这个问题,他们把菜单离开鼠标几个像素....都这样 都不改松开出菜单?

    有人说有一个发行版 ZorinOS 特点是模仿 windows 的操作习惯 只有这个发行版解决了这个问题.

    49 条回复    2023-05-11 17:31:25 +08:00
    ltkun
        1
    ltkun  
       2023-05-08 18:31:33 +08:00 via Android   ❤️ 1
    效率高啊 按下再弹出不是要两份时间
    xifangczy
        2
    xifangczy  
    OP
       2023-05-08 18:37:31 +08:00
    @ltkun 能高哪里去 这还导致无法右键框选... 导致浏览器所有鼠标手势插件都无效 除非改成右键双击弹出菜单.
    ltkun
        3
    ltkun  
       2023-05-08 18:41:22 +08:00 via Android
    啥 我 ff 下鼠标手势很正常啊 从开不注意你说的细节 linux 下最方便的是选中即复制 中键即粘帖 这个效率太高了
    ltkun
        4
    ltkun  
       2023-05-08 18:45:44 +08:00 via Android
    可能你用的桌面不一样 我用 kde 很舒服 linux 一万个人有一万种用法 不舒服就自己调试 虽然我都是开箱即用那种 这就是开源的力量
    cnbatch
        5
    cnbatch  
       2023-05-08 18:58:33 +08:00   ❤️ 2
    看完描述我是一堆问号。

    从上下文来看,
    「不明白为什么要这么设计,我唯一能想到的是 按住右键 然后移动到想要的选项 松开 完成一次菜单选择.但是有什么意义?」
    这句话似乎是在表达“不喜欢 mouse up 弹菜单,因为没什么意义”

    但标题以及后续两段,表达的是“不喜欢 mouse down 弹菜单,更倾向于使用 mouse up 弹菜单”

    如果两个做法都不满意,我觉得唯一能够做的,就是分成两个步骤:
    1:左键点击目标
    2:按下键盘的“菜单”按钮
    缺点是,并非所有位置都适合。
    xifangczy
        6
    xifangczy  
    OP
       2023-05-08 18:58:44 +08:00
    @ltkun 很久之前 firefox 就是为了鼠标手势扩展 有过大概是叫 contextMenu.onRelease 的选项 右键松开后弹出菜单.
    wudicgi
        7
    wudicgi  
       2023-05-08 19:05:02 +08:00   ❤️ 6
    Linux 的图形界面我觉得就是很不讲究,开发思想基本就是“能用就行了”
    NoOneNoBody
        8
    NoOneNoBody  
       2023-05-08 19:07:52 +08:00   ❤️ 1
    @cnbatch #5
    我也看了很久……才看懂
    OP 前半那句话应该是描述 mouse down 的,就是按下不松开[弹出菜单]-->选菜单子项-->松开,他说这种操作没意义
    aloxaf
        9
    aloxaf  
       2023-05-08 19:39:11 +08:00
    为什么这么设计:我猜是早期设计的时候并没有多想
    为什么没有改:用了五年 Linux 桌面了,我一直都没有意识到这个问题,网上搜了下相关的问题也寥寥无几……这个需求显然太过小众了
    Rookie01
        10
    Rookie01  
       2023-05-08 19:41:23 +08:00
    Mac + Win 双持 10 年以上的用户被你一说第一次发现这个逻辑…
    ysw
        11
    ysw  
       2023-05-08 20:21:15 +08:00
    还真是,怪不得很多浏览器,mac 和 linux 的鼠标手势都有点问题,只能在普通鼠标上用。但是我用 vivaldi 这个浏览器他改成了松开右键才弹出菜单了,所以可以在所有页面上用鼠标手势。
    zoharSoul
        12
    zoharSoul  
       2023-05-08 20:41:22 +08:00
    你的意思是 win 的有问题还是 mac&linux 的有问题....
    看不懂哎
    Finnn
        13
    Finnn  
       2023-05-08 20:49:15 +08:00
    @ysw 恰好我发现的这个问题也是因为此,Mac 上的触摸板右键按下滑手势正常,Windows 触摸板就不行,因为识别方式就是 OP 说的原因,就导致了触摸板不呢响应按下的连续操作, 只有抬起才能出发响应
    xifangczy
        14
    xifangczy  
    OP
       2023-05-08 21:16:58 +08:00
    @zoharSoul 说不上是问题, mac linux 这样设计导致无法右键框选 右键拖拽的功能, 有点得不偿失的感觉
    zoharSoul
        15
    zoharSoul  
       2023-05-08 21:33:57 +08:00
    @xifangczy #14
    你不是说 win 这样没什么意义么?

    > 不明白为什么要这么设计,我唯一能想到的是 按住右键 然后移动到想要的选项 松开 完成一次菜单选择.但是有什么意义?
    vvhy
        16
    vvhy  
       2023-05-08 21:34:14 +08:00   ❤️ 1
    是的,我用 easystroke 解决的 https://stackoverflow.com/q/66419930
    lonr
        17
    lonr  
       2023-05-08 22:10:30 +08:00 via Android
    说一个相关的 Windows / Linux(GNOME) 的区别。
    alt+tab 切换窗口时,如果 tab 松开很快,GNOME 是不会显示图标的
    最开始还想设置调出来,后来才想明白就应该这样
    ysc3839
        18
    ysc3839  
       2023-05-08 22:12:52 +08:00 via Android   ❤️ 1
    Windows 下可以按住鼠标右键拖动选中文件再放开显示菜单,不过很少软件支持这种操作
    xifangczy
        19
    xifangczy  
    OP
       2023-05-08 22:26:14 +08:00
    @zoharSoul

    如果 linux&mac 只为了这一个操作逻辑而失去右键更多功能 很不划算 而且会增加很多误触的几率 随便搜都是

    https://youtrack.jetbrains.com/issue/JBR-1477/Mac-OS-X-Sierra-Mouse-right-click-context-menu-too-close-to-click-location-triggers-highlighted-action-unintentionally

    所以我觉得 linux&mac 的这种设计目的很没意义
    xifangczy
        20
    xifangczy  
    OP
       2023-05-08 22:28:30 +08:00
    @lonr 哇 确实如此 这细节可以的...
    zoharSoul
        21
    zoharSoul  
       2023-05-08 22:41:04 +08:00
    @xifangczy #19 我怎么还是看不懂...

    而 windows 中就是 右键松开才开始弹出菜单(mouseup).
    不明白为什么要这么设计(这句话中的设计, 指的是上面那句吧? 就是 win 的, 右键松开才弹出

    是这个意思吗?
    Finnn
        22
    Finnn  
       2023-05-08 22:48:11 +08:00
    @xifangczy 拖拽在哪里都是左键的功能,怎么到你这非得右键了
    Linux 下框选要干什么呢, 系统本就没这个功能定义
    cnbatch
        23
    cnbatch  
       2023-05-09 00:21:19 +08:00
    OP 不如使用补充功能讲清楚到底哪个不适合

    根据这么多的讨论,我猜测如下——


    Linux & macos 式右键( mouse down 就跳菜单)可以实现以下功能(感谢 @NoOneNoBody 提醒):
    按住右键→跳出菜单→光标移到任意菜单项→松开右键→系统执行菜单项功能

    OP 认为,这个使用方式毫无意义。


    Windows 式右键( mouse up 跳菜单)可以实现以下功能:

    1. 按住右键,拖拽多选一堆文件,松开后可以自动跳出多选后的右键菜单,而不需要左键多选再右键
    2. 选中单个或多个文件,右键拖到某个位置,松开,自动跳出右键菜单
    3. 对于浏览器鼠标手势十分友好

    对于 1 ,压缩文件时比较方便。
    对于 2 ,适合压缩以及解压文件。说起来,这个我有时也会用到,比如把某个 7zip 压缩包解压到另一个文件夹(开两个窗口,或者左侧“此电脑”目录树打开),用右键拖拽解压确实比较方便,既不需要复制或移动后再解压,又不需要打开命令行敲命令)。还有打包一堆文件时也会用到,可以直接创建到目标文件夹,而不需要打包完再剪切粘贴。

    OP 认为应该采用 Windows 式右键更合理。

    是这样吧?
    cnbatch
        24
    cnbatch  
       2023-05-09 00:25:37 +08:00
    @zoharSoul
    @Finnn
    看来看去,似乎 OP 是想说:“我想要 Linux 使用 Windows 式右键方案,因为对浏览器手势更友好”
    而 OP 在顺着思路写的时候,可能没来得及整理好内容就发了出来,造成了歧义(我都觉得第二段的表述模棱两可)
    aloxaf
        25
    aloxaf  
       2023-05-09 01:46:39 +08:00   ❤️ 1
    探究了一下这个问题。首先最早似乎是 GTK 这么干的,官方认为这种设计并没有问题,因为当你点击右键时,你肯定是要选择某一项,所以这种设计可以为你节省一次点击(真是 Geek 风的设计理由……)
    然后 Gnome 是基于 GTK 的,并且 Gnome 当时是 Linux 第一大桌面,所以大家就都继承了这个行为……


    吐槽一下,这种问题吧,我认为可以探究,但实在没有纠结的必要。因为真的并不是每一个设计都是深思熟虑的,尤其是历史悠久的设计。大概率当初设计这个的程序员觉得没啥问题,然后就一直传承下来了,传承久了就不好改了。这类问题在不同操作系统中都普遍存在,比如我也可以问:
    - Windows 下的路径为什么要用 \ 来作为分隔符,这种设计和主流转义符冲突,还逼得 cmd 和 pwsh 选用了其他的转义符,这种设计有什么意义?
    - Windows 自带命令行工具为什么要用 / 来表示命令行参数,逼得路径只能用 \ 来表示?
    - 为什么 Windows 文件名不能包含 \?*<":>,微软程序员不会转义吗?
    - 为什么 win32 API 要分 A W 两套,而且内部使用 UTF-16 而不是 UTF-8 ?
    - 为什么 Windows 要将硬件时间视为本地时间,这样切换时区的时候硬件时间也要变更?
    ……
    terence4444
        26
    terence4444  
       2023-05-09 01:58:10 +08:00 via iPhone
    我用了那么久都没发现这个问题,右键框选拖拽其实是伪需求。可能手势会有影响。
    tin3w5
        27
    tin3w5  
       2023-05-09 03:51:58 +08:00 via iPhone
    这个问题完全没意义啊!人家就是那么设计的,你感觉不妥,你可以加入他们的 mail thread 、去提 issue 或者自己做二次开发啊!你提的这个问题好比关公战秦琼,他俩不是一个时代的,没打过,咋能知道谁能打得过谁?又好比如果谭嗣同他们成功了,能不能避免入侵?当年变法成功,人家当初就那么选的,你在 V2 上问?你应该去问对应的桌面环境开发者,毕竟大清现在早没了,开发者还健在呢!
    xifangczy
        28
    xifangczy  
    OP
       2023-05-09 05:21:30 +08:00
    @aloxaf
    是的 了解到是 GTK 的原因 我一直以来用的都是 gnome


    @terence4444
    也不是伪需求吧... 需要右键拖拽的地方都改过了, 比如 firefox 浏览器为了手势扩展, cad 软件 等等... 然后很多软件需要特殊拖拽操作使用比如 ctrl+左键的方式, 这时候右键可能更方便



    七八年前用过一个鼠标 忘记啥牌子
    可以自定义 按住右键的时候滚轮就变成音量调节... 这种操作方式简直完美, 换成其他鼠标始终找不到这种设置, 最后自己写了一个小工具模拟这个操作逻辑...
    paranoiagu
        29
    paranoiagu  
       2023-05-09 07:31:39 +08:00 via Android
    你可以试试 Windows 下按下右键拖动后再放开
    cnfczn
        30
    cnfczn  
       2023-05-09 08:30:07 +08:00 via Android
    反正我是特别服气 windows 的右键菜单,系统用久了一按右键卡半天
    zoharSoul
        31
    zoharSoul  
       2023-05-09 09:41:33 +08:00
    @cnbatch #24 还是需要你这样的解说侠, 我终于看懂楼主的意思了. 啧
    U2Fsd
        32
    U2Fsd  
       2023-05-09 09:42:54 +08:00
    因为这些系统的开发者,并不使用鼠标手势。

    也不关心使用鼠标手势的少数群体。
    HeyWeGo
        33
    HeyWeGo  
       2023-05-09 10:03:54 +08:00
    就像 29 楼那样的操作:按照右键拖动某个对象,到达目标位置后释放,出现菜单。windows 上我经常用,mac 上如何通过一个鼠标实现呢?
    micromars
        34
    micromars  
       2023-05-09 10:23:44 +08:00
    特意在 gnome 的桌面上试了一下,竟然发现之前不知道的功能, 长按鼠标右键是选择菜单,不选择也可以自动关闭菜单,感觉很好用
    e7
        35
    e7  
       2023-05-09 11:09:38 +08:00
    为啥不做成 2 种方式都行,可配
    ysc3839
        36
    ysc3839  
       2023-05-09 12:18:22 +08:00 via Android
    @aloxaf Windows 的 Unicode 支持应该是经过深思熟虑的,因为很多老旧软件不支持 Unicode ,所以要保留一套非 Unicode 的 API 。至于 UTF-16 ,是因为当时还没有 UTF-8 ,同时代的其他系统,如 Java 或 NextSETP 也是使用 UTF-16 。
    yuruizhe
        37
    yuruizhe  
       2023-05-09 12:29:36 +08:00
    @ysc3839 你不说我都没发现。。。大多数时候,都是左键选中再右键,这个快捷方式似乎被忽略了~
    winterbells
        38
    winterbells  
       2023-05-09 12:32:19 +08:00 via Android
    一开始我也不知道,只是觉得好像鼠标有什么毛病,每次都自动点了第一个
    iloveayu
        39
    iloveayu  
       2023-05-09 12:39:36 +08:00
    Windows 得考虑防误触吧,毕竟用户多,很多带 GUI 的工业 /行业软件也在跑。
    yulon
        40
    yulon  
       2023-05-09 12:47:09 +08:00
    @aloxaf W 其实是 USC-2 ,只是现在为了方便都当它是 UTF-16
    qqqyh
        41
    qqqyh  
       2023-05-09 14:21:15 +08:00
    所以 mac/linux 下 chrome 浏览器的鼠标手势没法用,这一直是阻止我选 mac 的一大原因
    AlynxZhou
        42
    AlynxZhou  
       2023-05-09 14:52:53 +08:00
    从来不用浏览器手势,所以感觉没什么区别……而且我刚发现 GNOME 桌面上右键菜单是在 up 时候弹菜单的,和 GTK/Qt down 时候弹菜单不一样
    debuggerx
        43
    debuggerx  
       2023-05-09 15:11:13 +08:00
    @xifangczy
    @ysw
    @qqqyh
    系统级鼠标手势比浏览器插件的好用多了,linux 推荐 easystroke ,mac 推荐 BetterAndBetter

    easystroke 就支持按住右键滚滚轮的手势,我是映射成切换浏览器标签页,很好用
    ericwyn
        44
    ericwyn  
       2023-05-09 17:25:02 +08:00
    哇,我用 ubuntu 办公快 5 年了吧,今天看到你这个问题我才发现有这个区别
    主要是我根本没有右键按住然后进行额外操作的需求
    opengps
        45
    opengps  
       2023-05-09 17:26:35 +08:00
    右键按下即触发会有问题:丧失了右键的绘制功能和松开触发功能
    james122333
        46
    james122333  
       2023-05-09 22:48:00 +08:00
    这的确是 gtk 的锅 好像是绘製需要使用它的 gesture 方法 把这功能给应用处理
    Firefox 的 about:config 中有 ui.context_menus.after_mouseup
    wty
        47
    wty  
       2023-05-09 23:42:18 +08:00
    默认选择第一项这个问题至今都存在,有的时候遇到了真是火大
    ayerlk17
        48
    ayerlk17  
       2023-05-10 09:57:21 +08:00
    或者仅仅是设计取向不同?也有可能是这个点太小众(整个贴有不少人是现在才发现这个差异的),所以没有被关注到
    ysw
        49
    ysw  
       2023-05-11 17:31:25 +08:00
    @debuggerx easystroke 好像不支持 wayland
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   843 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:22 · PVG 05:22 · LAX 13:22 · JFK 16:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.