การเลื่อนล้อเลื่อนของเมาส์ทำได้น้อยลงและเป็นกลุ่มโดยใช้ urxvt


17

ฉันได้เริ่มต้นการทำงานกับrxvt-Unicode (aka urxvt) แต่ก็พบปัญหาเกี่ยวกับการเลื่อนเมาส์ล้อที่เมื่อเทียบกับและgnome-terminal konsoleล้อเลื่อนของเมาส์ทำงานได้ดีสำหรับการเลื่อนผ่านบัฟเฟอร์ แต่ไม่สามารถใช้การเลื่อนแบบอัตโนมัติในless/ mostหรือvim(แม้ว่าจะเป็นกลุ่มการตั้งค่าmouse=aทำให้มันทำงานได้ แต่แตกต่างกันมากซึ่งฉันไม่ต้องทำด้วยgnome-terminal/ konsole)

มีวิธีที่จะทำให้urxvtพฤติกรรมเหมือนgnome-terminalและkonsoleเมื่อlessและในและvimที่ล้อเมาส์เพียงใช้งานได้หรือไม่


คำถามที่คล้ายกันเกิดขึ้นกับ serverfault มาระยะหนึ่งแล้ว แต่ยังไม่ได้รับคำตอบที่เป็นบวก: serverfault.com/questions/10308/…
nidi

1
ขอบคุณนี่ไม่ได้ทำให้ฉันรำคาญจนกว่าคุณจะชี้ให้เห็น!
Kyle Smith

คำตอบ:


8

คำถามเก่า แต่: แม้ว่าจะเป็นไปไม่ได้ใน urxvt ฉันได้ทำการเปลี่ยนแปลงบางอย่างที่จะเพิ่มตัวเลือก (secondaryWheel) เพื่อทำสิ่งนั้นและทำให้มันทำงานเหมือนกับเทอร์มินัลที่ใช้ VTE

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

(*) ไม่แน่ใจว่านี่เป็นคำว่า "ทางการ" หรือไม่ แต่อย่างน้อยนั่นคือวิธีที่เรียกว่าเป็น urxvt

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

ควรสังเกตว่าฉันไม่แน่ใจว่านี่เป็นวิธีการทำสิ่งต่าง ๆ ในเทอร์มินัลที่ใช้ VTE - ฉันไม่เคยตรวจสอบ - แต่นี่ทำงานได้ดังนั้นจึงทำงานได้ดีสำหรับฉัน

ข้อมูลเพิ่มเติมเล็กน้อยและลิงก์ไปยังรหัส & PKGBUILD สำหรับ Arch Linux สามารถพบได้ที่: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

หวังว่านี่จะเป็นประโยชน์กับบางคน!


1
มีการอัพเดตใดบ้างบนแพตช์? มีการแนะนำให้รวมหรือไม่
blueyed

1

เป็นคำถามที่ดี! บางโพสต์ที่มีประโยชน์ฉันจะอ้างคำถาม Linux - คำสั่ง "น้อย" เอาท์พุท - ฉันไม่สามารถเลื่อนดู! และArchLinux ฟอรั่ม - ใช้ล้อเมาส์ในมนุษย์

ดูเหมือนว่าน้อยกว่าเป็นเพียงการฟังเหตุการณ์แป้นพิมพ์และไม่ได้รับการสนับสนุนสำหรับเมาส์ การร้องขอความลุ่มหลงสำหรับการสนับสนุนเมาส์เปิดRef # 272

ทางออกที่แท้จริงคือการใช้เทอร์มินัลหรือเพจเจอร์อื่น ( Vimpager )


แก้ไขในเวอร์ชันที่น้อยกว่า 543
Hielke Walinga

1

ฉันเขียนสิ่งนี้สำหรับคำถามที่คล้ายกันมากดู/superuser//a/1356948/900060

วางสิ่งนี้ใน $ HOME / .urxvt / ext / vtwheel (สร้างไฟล์หากไม่มีอยู่):

#! perl

# Implements a scrollwheel just like in good old vt100's mices

sub simulate_keypress {
    my ($self, $type) = @_; #type: 0:up, 1:down

    my $keycode_up = 111;
    my $keycode_down = 116;

    my $numlines = 3;

    my $keycode = 0;
    if ($type eq 0) {
        $keycode = $keycode_up;
    } elsif ($type eq 1) {
        $keycode = $keycode_down;
    } else {
        return;
    }

    for (my $i = 0 ; $i ne $numlines ; $i++) {
        $self->key_press(0,$keycode);
        $self->key_release(0,$keycode);
    }
}

sub on_button_release {
    my ($self, $event) = @_;

    #my $res_ss = $self->resource("secondaryScroll");
    #warn("ressource ss is <$res_ss>");

    !$self->current_screen and return ();

    #warn("foo, event: <$event->{button}>\n");
    if ($event->{button} eq "4") { # scroll up
        $self->simulate_keypress(0);
        return 1;
    } elsif ($event->{button} eq "5") { # scroll down
        $self->simulate_keypress(1);
        return 1;
    }

    return ();
}

จากนั้นเพิ่มลงURxvt.perl-ext-common:vtewheelใน.Xresources(หรือ.Xdefaults) และเรียกใช้xrdb .Xresources

ที่มา: https://aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel

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