Less'in kaynak kodunu hacklemeden olmaz. Biraz arka plan hikayesi:
Daha azı fareyi (kaydırma olayları dahil) hiç işleyemez.
Terminal emülatörleri alternatif bir ekranı destekler. Çoğu tam ekran uygulamasının süreleri boyunca geçiş yaptığı (ve çıktıklarında normal ekrana geri dönerek önceki içeriğin "geri yüklenmesine" neden olan) ve geri kaydırma arabelleği yoktur. Daha azı -X
, bu durumda verilmediği sürece bu alternatif ekrana geçer .
Birçok terminal öykünücüsü, alternatif ekran modundayken ve içeride çalışan uygulama fare olaylarıyla ilgilenmediğinde, kaydırmanın Yukarı veya Aşağı tuşa basma olaylarına dönüştürülmesinin mantıklı olduğunu anladı . Bu bir hack'tir ve normal ekranda (örneğin kabuk isteminizde ne olacağını hayal edin) veya uygulama fareyi işlemek istediğinde (elbette gerçek fare olaylarını görmek zorunda olduklarında) zararlı olacaktır. Ancak varsayılan olarak, bu ikisinin ikisi de çalışırken tutarken less
, bu saldırı devreye girer (onu destekleyen terminal öykünücüsüne tabidir ve \e[?1007h
vs.\e[?1007l
). Kaydırma olaylarınız terminal öykünücüsü tarafından Yukarı ve Aşağı tuşa basılarak dönüştürülür ve daha azı gerçek tuşlardan ayırt edilemez. Fare kaydırma olaylarını almaz: Yukarı ve Aşağı tuşlarına basar.
Yani siz varsınız: Ya alternatif ekrana geçersiniz ve terminalin korsanlığı kaydırma olaylarını daha az süreyle tuşlara dönüştürür ve çıktığınızda normal ekran geri yüklenir; ya da bunu yapmazsınız ve daha sonra kaydırma olaylarını tuşlara bastıracak sihirli bir şey olamaz ve kaydırma olaylarını daha az anlamıyor.
Peki ne yapılabilir? Peki ya fare desteğini daha az uygulayın ve kaydırma olaylarının kendisini yönetmesine izin verin (ve varsayılan olmayan bir tıklama veya kopyala yapıştırma davranışı ile yaşayın) ya da başka bir garip kesmek uygulayın: bıraktıktan sonra normal ekrana döndükten sonra less
son kez yapabilir çıkmadan önce görüntülenen her şeyi tekrarlayarak bir dizi içerik yazdırın.
Pratikte, temelde aşağıdakilere kaynar: üzgünüm, unutun.