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

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

  •  1
     
  •   xifangczy · 325 天前 · 4405 次点击
    这是一个创建于 325 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 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  
       325 天前 via Android   ❤️ 1
    效率高啊 按下再弹出不是要两份时间
    xifangczy
        2
    xifangczy  
    OP
       325 天前
    @ltkun 能高哪里去 这还导致无法右键框选... 导致浏览器所有鼠标手势插件都无效 除非改成右键双击弹出菜单.
    ltkun
        3
    ltkun  
       325 天前 via Android
    啥 我 ff 下鼠标手势很正常啊 从开不注意你说的细节 linux 下最方便的是选中即复制 中键即粘帖 这个效率太高了
    ltkun
        4
    ltkun  
       325 天前 via Android
    可能你用的桌面不一样 我用 kde 很舒服 linux 一万个人有一万种用法 不舒服就自己调试 虽然我都是开箱即用那种 这就是开源的力量
    cnbatch
        5
    cnbatch  
       325 天前   ❤️ 2
    看完描述我是一堆问号。

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

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

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

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

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

    是这个意思吗?
    Finnn
        22
    Finnn  
       325 天前
    @xifangczy 拖拽在哪里都是左键的功能,怎么到你这非得右键了
    Linux 下框选要干什么呢, 系统本就没这个功能定义
    cnbatch
        23
    cnbatch  
       324 天前
    OP 不如使用补充功能讲清楚到底哪个不适合

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


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

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


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

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

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

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

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


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


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



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

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

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