ฉันจะปิดฟังก์ชั่น“ วางปุ่มกลางของเมาส์” ในทุกโปรแกรมได้อย่างไร


43

ฉันไม่ชอบที่จะวางปุ่มกลางของเมาส์เพราะฉันมักจะจบด้วยโค้ดที่ไม่สามารถทำงานได้ใน Eclipse ฉันจะปิดตัวเลือกนี้ได้อย่างไร (ในโปรแกรมทั้งหมด) ฉันกำลังใช้งาน Fedora


4
คลิกกลางเพื่อแทรกส่วนที่เลือกเป็นพื้นฐานของวิธีการทำงานของ X11 ดูhttp://www.jwz.org/doc/x-cut-and-paste.html
ephemient

1
@Gilles: ในทุกโปรแกรม :)
derekhh

4
ฉันไม่เคยเห็นวิธีที่ไม่สำคัญเลยในการทำเช่นนี้โดยไม่ต้องกดปุ่มกลางของเมาส์เลยหรือแฮ็ค X หรือสกรูด้วยคลิปบอร์ดปกติด้วยดังนั้นวิธีแก้ปัญหาที่แนะนำของฉันก็คือการเรียนรู้การใช้ปุ่มกลางของเมาส์อย่างถูกต้อง มันสะดวกอย่างไม่น่าเชื่อที่จะสามารถไฮไลต์ URL ข้อความได้ทุกที่และไปที่มันด้วยการคลิกตรงกลางในหน้าต่างเบราว์เซอร์ (FF) ของฉัน
jw013

4
@ephemient "การคลิกกลางเพื่อแทรกส่วนที่เลือกเป็นส่วนหนึ่งของวิธีการทำงานของ X11" ... ย้อนกลับไปเมื่อเรามี Sun Optical Mouses ซึ่งต้องการแรงกดดันประมาณ 1 ปอนด์ที่ปุ่มกลางเพื่อรับสัญญาณ วันนี้ปุ่มตรงกลางอยู่บนตัวกระตุ้นผมและยิ่งกว่านั้นใช้เป็นวงล้อ "พื้นฐาน" นี้ต้องดำเนินต่อไป (อย่างมากของสิ่ง "พื้นฐาน" ใน X btw.)
David Tonhofer

3
ฉันรู้สึกเหมือนความสามารถในการปิดการใช้งานสิ่งที่คุณต้องการเป็นลักษณะพื้นฐานที่สำคัญยิ่งกว่าของ Linux
Wayne Bloss

คำตอบ:


24

โซลูชันนี้จะทำงานได้ทั่วโลกและคงไว้ซึ่งฟังก์ชันการทำงานของเมาส์กลาง

ติดตั้ง xbindkeys xsel xdotool

วางสิ่งนี้ใน ~/.xbindkeysrc

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release

โหลด xbindkeys -p

เรียกใช้xbindkeysเมื่อเริ่มต้นpkill xbindkeysเพื่อหยุด


7
ขอขอบคุณ!!! ฉันไม่อยากจะเชื่อว่าวิธีแก้ปัญหาการทำงานเพียงอย่างเดียวได้รับการโหวต 0 คะแนนเป็นเวลา 2 ปี
Retr0id

4
ในที่สุดโซลูชันที่ใช้งานได้กับ Ubuntu Mate 17.10 ขอขอบคุณ!
Dmitry Frank

5
@spiil ฉันลองใช้วิธีนี้แล้วจะได้เอฟเฟกต์ที่คุณต้องการ ฉันคลิกกลางในช่องข้อความและไม่มีอะไรเกิดขึ้น แต่คลิกตรงกลางบนลิงก์และคลิกกลางเพื่อปิดแท็บที่ทำงานใน Chromium, Firefox และ Waterfox (เบราว์เซอร์ทั้งสามที่ฉันทดสอบ)
user7214865

4
การเลื่อนโดยปุ่มกลางการคลิกและค้างไว้ไม่สามารถใช้งานกับโซลูชันนี้ได้อีกต่อไป: /
Marc.2377

2
คุณเป็นตำนาน ฉันใช้ปุ่มกลางบนแทร็กบอลของฉันเพื่อวัตถุประสงค์ในการเลื่อน แต่ฟังก์ชั่นการวางทำให้ชีวิตของฉันมีความสุข ตอนนี้มันเต็มไปด้วยสีสันที่สดใสอีกครั้งขอบคุณ!
redsPL

16

ใน Fedora 24 คุณสามารถติดตั้งgnome-tweak-toolโดยใช้คำสั่งต่อไปนี้:

$ sudo dnf install gnome-tweak-tool

เปิดgnome-tweak-toolและไปที่แท็บ "Keyboard and Mouse" แล้วปิดการใช้งาน "Middle-click-Paste"


4
นอกจากนี้ยังมีใน Ubuntu 16.04: sudo apt-get install gnome-
tweak

1
สิ่งนี้มีผลต่อโปรแกรมบางโปรแกรมเช่น gedit, gnome-terminal และโปรแกรมอื่น ๆ ดูเพิ่มเติมที่แสดงความคิดเห็นaskubuntu.com/questions/4507/...
Kvothe

11

การวางปุ่มกลางเป็นมาตรฐานส่วนติดต่อผู้ใช้ของยูนิกซ์เช่นมีปุ่มซ้ายเลือกหรือเปิดใช้งานและปุ่มขวาทำอย่างอื่น (เช่นการขยายการสลับสลับการเปิดเมนู) ... คุณจะพบว่ามันถูกผูกไว้กับการวางในแอปพลิเคชั่นยูนิกซ์ส่วนใหญ่

หากปัญหาของคุณคือเมาส์ของคุณมีความไวมากเกินไปเมื่อคุณวางนิ้วบนพวงมาลัยฉันขอแนะนำให้ใช้เมาส์ที่ดีกว่า มีหนูดี ๆ ราคาถูกมากมาย

คุณสามารถกำหนดปุ่มเมาส์ 2 ใหม่ให้กับหมายเลขอื่น แอปพลิเคชันระบุปุ่มซ้ายของเมาส์กลางและขวาของปุ่มเป็น 1, 2 และ 3 ตามลำดับ ใส่รหัสนี้ในสคริปต์ที่เรียกใช้งานเมื่อเซสชัน X ของคุณเริ่มต้น (วิธีการทำขึ้นอยู่กับสภาพแวดล้อมเดสก์ทอปของคุณ)

echo 'pointer = 1 6 3 4 5' | xmodmap -

1
ไม่สำเร็จ. pastebin.com/0DYYMDLS
balki

@balki แปลก มันเหมาะกับฉันอย่างแน่นอน เพื่อค้นหาว่าทำไมมันไม่ทำงานสำหรับคุณถามคำถามใหม่ ตรวจสอบให้แน่ใจว่าได้ระบุเวอร์ชันของ X.org (หรือเซิร์ฟเวอร์ X อื่น ๆ ) ที่คุณมีอยู่การเผยแพร่ใดที่คุณกำลังใช้งานอยู่และอุปกรณ์เชื่อมต่อใดที่เชื่อมต่ออยู่
Gilles 'หยุดความชั่วร้าย' ใน

2
ฉันเดิมพัน OP ไม่สนใจว่ามันจะเป็นมาตรฐานหรือเปล่า ไม่เป็นไร การกระทำของปุ่มเมาส์ควรกำหนดเองได้ง่ายขึ้น
Marc.2377

7

หนูตัวเลื่อนสนับสนุนเหตุการณ์คลิกกลางเมื่อกดล้อเลื่อน นี่เป็นคุณสมบัติที่ยอดเยี่ยม แต่คุณอาจพบว่ามันน่ารำคาญ โชคดีที่มันสามารถปิดได้

ก่อนอื่นคุณต้องรู้รหัสของเมาส์ดังนี้:

$ xinput list | grep 'id='

ซึ่งพิมพ์บางอย่างเช่น

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜ PixArt Dell MS116 USB Optical Mouse       id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
  Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
  Power Button                              id=6    [slave  keyboard (3)]
  Video Bus                                 id=7    [slave  keyboard (3)]
  Power Button                              id=8    [slave  keyboard (3)]
  Sleep Button                              id=9    [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=10   [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=11   [slave  keyboard (3)]
  Eee PC WMI hotkeys                        id=13   [slave  keyboard (3)]

เมาส์ USB Dell ของฉันพิมพ์ที่นี่ซึ่ง id = 12

ดังนั้นฉันสามารถดูการแมปปุ่มเมาส์ของฉันเช่น:

$ xinput get-button-map 12

ซึ่งพิมพ์

1 2 3 4 5 6 7 8 9 10 11 12

นี่แค่สามตัวเลขแรกเท่านั้นที่มีความหมายสำหรับฉัน ปุ่มเหล่านี้ใช้แทนปุ่มซ้ายกลางและขวา

ฉันสามารถปิดปุ่มกลางของเมาส์โดยตั้งเป็น 0:

$ xinput set-button-map 12 1 0 3

หรือฉันสามารถเปลี่ยนปุ่มกลางของเมาส์เป็นปุ่มซ้ายของเมาส์โดยตั้งค่าเป็น 1:

$ xinput set-button-map 12 1 1 3

อ้าง ลิงค์https://wiki.ubuntu.com/X/Config/Input

มันเหมาะกับฉัน (kubuntu 18.04 LTS)


ทำงานได้อย่างสมบูรณ์แบบสำหรับทัชแพดใน Slackware 14.2 (KDE)
Firelord

สิ่งนี้ดีกว่าข้อใด ๆ ข้างต้นที่เริ่มต้นด้วย "ดาวน์โหลด XX" ปัญหาเดียวที่ฉันมีคือสำหรับxinput set-button-map 12 1 0 3คุณตั้งปุ่มทั้งหมด (1 - 12 สำหรับในตัวอย่างนี้ xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12)
blindguy

3

นี่คือสิ่งที่คุณสามารถทำได้หากคุณต้องการรักษาการทำงานของคลิกกลาง (เพื่อคลิกเพื่อเปิดลิงก์ในแท็บใหม่) โดยไม่ต้องวางสิ่งต่าง ๆ

ก่อนติดตั้งsxhkdและxsel

จากนั้นกำหนดค่า. /.config/.sxhkd/sxhkdrcอย่างนั้น

~button2
    echo -n | xsel -n -i
~control + c
    echo -n | xsel -n -i
~control + shift + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i

และนั่นเป็นพื้น

ตอนนี้เริ่ม sxhkd (หรือกำหนดค่าให้เปิดเมื่อเริ่มต้น) ตอนนี้เมาส์กลางจะไม่วางอะไรอีกต่อไป แต่จะทำงานได้ตามปกติ


สิ่งนี้ยังช่วยให้คุณใช้เมาส์กลางสำหรับการเลื่อน ทางออกที่ดี! สำหรับฉันไฟล์อยู่ใน~/.config/sxhkd/sxhkdrc
Atnas

1

เป็นเรื่องธรรมดาที่หลาย ๆ โปรแกรมปฏิบัติตาม ไม่มีวิธีสากลในการปิดคุณต้องทำในโปรแกรมตามพื้นฐานของโปรแกรม

แก้ไข: (สั้น ๆ ตามที่ Gilles บอกว่าปิดการใช้งานปุ่มเมาส์ 2 แต่บางโปรแกรมมีประโยชน์อื่นสำหรับปุ่มเมาส์ 2 ดังนั้นฉันจะไม่แนะนำสิ่งนี้)


1

แก้ไข:ฉันเพิ่งพบปัญหาเกี่ยวกับวิธีแก้ไขปัญหาที่ฉันโพสต์: ในบางโปรแกรม ( gitkอย่างน้อยไม่แน่ใจว่ามันธรรมดาแค่ไหน) สิ่งนี้จะป้องกันการเลือกข้อความจากการทำงาน ดังนั้นลองใช้ แต่ถ้าคุณมีปัญหากับการเลือกข้อความในโปรแกรมที่คุณใช้เป็นประจำโซลูชันจะหยุดใช้สิ่งนี้

ติดตั้งxselและเรียกใช้เชลล์สคริปต์ต่อไปนี้:

#!/bin/sh
while true; do
    xsel -fin </dev/null
done

ตราบใดที่สคริปต์นี้ยังทำงานอยู่ (คุณสามารถตั้งค่าให้ทำงานในการเข้าสู่ระบบ) ปุ่มกลางของเมาส์จะไม่วางในแอปพลิเคชันใด ๆ ดังนั้นทางเทคนิคมันจะยังคงวาง แต่จะไม่มีอะไรจะวาง

วิธีการทำงานคือมันทำงานxselและมีการคัดลอก ( -i) เนื้อหาของ/dev/nullโดยไม่ฟอร์กไปที่พื้นหลัง ( -n) และเพื่อเก็บสตริงว่างนั้นในบัฟเฟอร์แทนการล้างและออกจาก ( -f) ทุกครั้งที่ออกมันจะเรียกใช้xselอีกครั้งด้วยตัวเลือกเดียวกัน เนื่องจากxselจะยังคงทำงานต่อไปจนกว่าโปรแกรมอื่นจะ "ช่วยลดหน้าที่" โดยการคัดลอกสิ่งอื่นมันจะไม่สร้างกระบวนการใหม่ตลอดเวลาแทนที่จะทำให้กระบวนการเดียวทำงานได้อย่างแม่นยำจนกว่าจะต้องการอีกครั้ง (เว้นแต่คุณจะมีสคริปต์ทำงานหลายอินสแตนซ์ แต่ไม่จำเป็นต้องทำเช่นนั้น)

ไม่เลยสิ่งนี้จะไม่รบกวนการคัดลอก / วางปกติเนื่องจากการวางคลิกกลางใช้คลิปบอร์ดแยก


ขอขอบคุณ! ฉันใช้ KDE และโซลูชันนี้เป็นโซลูชันเดียวที่ใช้ได้สำหรับฉัน
Aloso

@ ทุกคนยินดีต้อนรับโปรดคำนึงถึงข้อแม้ที่อยู่ด้านบน หากคุณพบว่าตัวเองไม่สามารถเลือกข้อความในโปรแกรมแสดงว่าเป็นผู้ร้ายที่สุด
flarn2006

ใช่ฉันสังเกตเห็นปัญหานี้ในกล่องโต้ตอบ "บันทึกไฟล์" ของ Firefox ตอนนี้ฉันเปิดสคริปต์นี้เท่านั้นเมื่อฉันเขียนโปรแกรม
Aloso

@Aloso ตกลงแล้ว; ดีใจที่มันยังคงใช้กับคุณ :)
flarn2006

0

นี่คือสคริปต์ของฉัน คุณอาจต้องปรับแต่ง

#!/bin/bash 
clear
echo
echo
echo
echo -----Now fixing your scroll button --- -hold onto pants
echo
xinput --list|grep "Virtual core XTEST pointer"
echo ---------------------------------------------------------------------------------
echo


id=$(
xinput --list|grep "Virtual core XTEST pointer" |awk '{
        for(i=1; i<=NF; i++) {
                tmp=match($i, /id=[0-9]+/)
                if(tmp) {
                        print $i
                }
        }
}' $1 |  tr -d '[:alpha:]='
)

echo fixing $id:

xinput set-button-map $id  1 10 2 4 5 6 7 8 9 3

echo
echo
xinput get-button-map $id
echo ---------------------------------------------------------------------------------
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.