Tarayıcı Dolaşımı

Bu eklenti, NVDA kullanıcılarına tarayıcı modunda güçlü gezinme komutları sağlar. Web tarayıcılarının yanı sıra Word belgeleri ve e-posta istemcileri gibi NVDA tarama modunu destekleyen diğer tüm uygulamalarda çalışır.

İndirme

Lütfen eklenti mağazası aracılığıyla yükleyin.

Tarayıcılarda ve tarama modunu destekleyen diğer programlarda kullanım

NVDA v2024.2'den itibaren dikey gezinme ve aynı stildeki gezinme komutlarının artık NVDA çekirdeğinde mevcut olduğunu lütfen unutmayın. Yerleşik komutların kullanılması tercih edilir. Bunlara herhangi bir varsayılan hareket atanmadığından, hareketlerin Girdi hareketleri iletişim kutusunda kullanıcı tarafından atanması gerekir.

BrowserNav ile paragrafın ekranın soluna uzaklığı, yazı tipi boyutuna ve yazı tipi biçimine göre dolaşım yapabilirsiniz.

  • Paragraflar arasında yatay uzaklığa göre dolaşırken sayfada dikey açıdan aynı hizada olan paragrafları kolayca bulabilirsiniz. NVDA+Alt+aşağı veya yukarı oka basarak aynı uzaklıktaki sonraki veya önceki paragrafa gidebilirsiniz. Bu, hiyerarşik yorum ağaçlarında dolaşırken kullanışlı olabilir (örneğin reddit.com'daki yorumlar). Böylece daha üst seviyelerdeki yorumları atlayarak sadece birinci seviyedeki yorumları okuyabilirsiniz.
  • Yazı tipi boyutuna göre dolaşım yaparak aynı boyutta, daha küçük veya daha büyük boyutta yazılmış olan paragraflar arasında kolayca dolaşabilirsiniz.
  • Ayrıca yazı tipi boyutuna göre navigasyon yaparken dolaşımı aynı yazı tipiyle yazılmış olan paragraflarla sınırlayabilirsiniz.

BrowserNav rotoru bu seçenekler arasında geçiş yapmak için kullanılır. Bu rotorun ayarına bağlı olarak, BrowserNav bip sesleriyle ya yatay sapmayı ya da seçili olan öğenin yazı tipi boyutunu gösterecektir. Ek olarak, BrowserNav, ne kadar metnin atlandığını belirtmek için Hızlı Gezinme komutlarını çalıştırır (bu özellik yalnızca Google Chrome ve Firefox'ta mevcuttur).

BrowserNav, NVDA tarafından desteklenen tüm tarayıcılarda çalışır. Ancak bazı özellikler tüm tarayıcılarda bulunmayabilir. BrowserNav, Word belgeleri ve e-posta istemcileri gibi NVDA tarama modunu destekleyen diğer uygulamalarda da çalışır.

Kısayollar:

  • NVDA+Alt+aşağı veya yukarı ok: Bir önceki veya sonraki aynı yatay uzaklığa veya yazı tipi boyutuna sahip olan paragrafa gider.
  • NVDA+Alt+Baş veya NVDA+alt+Sol Ok: Daha küçük ofset veya daha büyük yazı tipi boyutuyla (ana paragraf) önceki paragrafa atlar.
  • NVDA+Alt+son veya NVDA+Control+alt+Sol Ok: Daha küçük ofset veya daha büyük yazı tipi boyutuyla sonraki paragrafa atlar (sonraki ana paragraf).
  • NVDA+Alt+Sayfa Aşağı veya NVDA+Alt+Sağ ok: Daha büyük veya daha küçük yazı tipi boyutuna sahip sonraki paragrafa atlar (alt paragraf).
  • NVDA+Alt+Sayfa yukarı veya NVDA+Control+Alt+Sağ ok: Daha büyük ofset veya daha küçük yazı tipi boyutuyla (önceki alt paragraf) önceki paragrafa atlar.
  • NVDA+O: Rotor ayarını yatay konum, yazı tipi boyutu, yazı tipi boyutu ve yazı tipi stili arasında değiştirir.
  • \ veya Shift+\ (ters eğik çizgi): Her sayfa öğesini göstermek için yukarı veya aşağı kaydırın; dinamik web sayfalarında tüm öğeleri yüklemek için yararlı olabilir; Ayrıca, bir sonraki parçayı yüklemek için sonsuz kaydırma web sayfalarında yararlı olabilir.
  • NVDA+Shift+Sol Ok: Geçerli belgede imlecin bir önceki konumuna geri döner.
  • NVDA+E: yarı erişilebilir düzenleme kutularını düzenleme - aşağıdaki ilgili bölüme bakın.
  • T veya Shift+T: sonraki veya önceki tabloya atlar, ancak imleci ilk hücreye getirir. Bazen NVDA imleci ilk hücrenin hemen önüne getirir ve BrowserNav bu davranışı düzeltir.

Hızlı Atlama Yer İşaretleri

Tarayıcı Dolaşımı Hızlı Atlama yer işaretleri, web sayfalarında gezinmenize ve bazı tekrarlanan eylemleri otomatikleştirmenize olanak tanıyan güçlü bir araçtır.

Yer imi tuş vuruşları

  • NVDA+J: Hızlı Atlama açılır menüsünü gösterir.
  • J veya Shift+J: Sonraki veya önceki Hızlı Atlama yer imine atlar.
  • / ve Control+/: Sırasıyla satır (Yukarı ve Aşağı oklar) ve paragraf (Control+Yukarı ve Control+Aşağı oklar) ile gezinmek için Dağınıklığı Atla modunu değiştirir.
  • Alt+J: geçerli sayfadaki tüm Hızlı Tıklama yer işaretlerini tıklar.
  • CTRL+J: Geçerli sayfadaki tüm Hızlı Konuşma yer işaretlerini seslendirir.
  • Alt+1, Alt+2, ..., Alt+0: karşılık gelen düzeydeki sonraki hiyerarşik yer işaretine atlar. 0, 10. seviyeye karşılık gelir; alternatif olarak, tanımlanmışsa sayısal komutu çağırır.
  • Shift+Alt+1, Shift+Alt+2, ..., Shift+Alt+0: önceki hiyerarşik yer imine atlar.
  • Alt+veya Shift+Alt+: herhangi bir düzeyde sonraki veya önceki hiyerarşik yer imine atlar.

Ayrıca çoğu yer işareti türü için (SkipClutter, Hiyerarşik ve Sayısal Komut yer işaretleri hariç) özel tuş vuruşlarını da yapılandırabilirsiniz.

Siteler

Yapılandırmanız gereken ilk şey, yer imleri oluşturmak istediğiniz sitedir. Çoğu durumda, eşleme türünü etki alanı eşleşmesi veya Etki alanı ve alt alan adlarıyla eşleştirme olarak belirtmek isteyebilirsiniz. İkinci seçeneği göstermek için şunları belirtebilirsiniz:

  • Bağlantı: amazon.com
  • Eşleme türü: Alan adını ve alt alan adlarını eşleştirin
  • Bu, amazon.com, smile.amazon.com ve diğer tüm *.amazon.com alan adlarıyla eşleşir.

Daha hassas kontrole ihtiyacınız varsa, tam Bağlantı belirtebilir veya Bağlantı için bir normal ifade tanımlayabilirsiniz.

Bu esnek tanım nedeniyle, belirli her web sayfasında birden çok Hızlı Atlama sitesi aynı anda etkin olabilir.

Yer imi türleri

Site tanımını yapılandırdıktan sonra, üzerinde bazı yer imleri tanımlamaya devam edebilirsiniz.

Tarayıcı Dolaşımı çeşitli yer işareti türlerini destekler:

  • Hızlı Atlama yer imleri: J veya Shift+J tuşlarına basarak bunlara atlayabilirsiniz.
  • Dağınıklığı Atla yer imleri: Bu yer imleri, satır (Yukarı/Aşağı ok) veya paragraf (Control+Yukarı/Aşağı oklar) ile gezinirken otomatik olarak atlanır. Bu, boş satırlar, zaman damgaları ve diğer gereksiz bilgiler gibi web sayfalarındaki dağınıklığı gizlemeye olanak tanır. bu bilgiler tamamen kaldırılmazsa, Dağınıklığı Atla / veya Control+/ komutlarıyla geçici olarak devre dışı bırakılabilir. Dağınıklığı Atla varsayılan olarak tüm web sitelerinde boş paragrafları atlar.
  • Hızlı Tıklama yer işaretleri: Bağlantılar, düğmeler veya onay kutuları gibi tıklanabilir öğeleri Hızlı Tıklama yer işaretleri olarak işaretleyebilirsiniz. Daha sonra Alt+J tuşlarına basarak, imleci hareket ettirmeden geçerli sayfadaki tüm Hızlı Tıklama yer işaretlerine tek bir tuş vuruşuyla hızlı bir şekilde basabilirsiniz. Bu, YouTube'daki oynat düğmesi veya video konferans web sitelerindeki Sessiz düğmesi gibi bir web sitesinde sık kullanılan bir düğmeye basmak için kullanışlı olabilir.
  • Hızlı Konuşma yer işaretleri: bu tür yer işaretlerini Control+J tuşlarına basarak okuyabilirsiniz; imleç hareket etmez. Bu, sayfanın sık değiştirilen öğelerini kontrol etmek için kullanışlıdır. Ayrıca hızlı Tıklama yer işaretini otomatik yenilenebilir olarak ayarlayabilirsiniz, yani Tarayıcı Dolaşımı sayfayı periyodik olarak tarayacak ve eşleşen metin değişirse otomatik olarak konuşacaktır.
  • Hiyerarşik yer işaretleri: Bu, hızlı Atlama yer işaretlerine benzer, ancak bu, bir yer işaretinin yatay konumunu hesaba katar. Reddit ve Hacker News gibi siteler, ekran okuyucu kullanıcıları için verimli bir şekilde gezinmek oldukça zor olan hiyerarşik bir yorum ağacına sahiptir. Bu web sitelerinde, yorumları hiyerarşik bir yer işareti olarak işaretleyebilir ve ardından Alt+- veya Shift+Alt+- tuşlarına basarak aralarında gezinebilirsiniz; burada rakam, satır 1,2,3,...0'ı temsil eder - bu, yorumun seviyesi. Tarayıcı Dolaşımı varsayılan olarak hiyerarşik Hacker News'e sahiptir ve reddit.com için yapılabilecek yer işaretleri.
  • Komut yer işaretleri: Çağrıldığında sağlanan komutu yürütmeniz yeterlidir.
  • Sayısal komut: Giriş olarak bir sayı alan komutu çalıştırmak için Alt+0 ila Alt+9 tuşlarına basın. Örneğin tek bir tuş vuruşuyla sayfadaki 'i'inci yer işaretine atlamak kullanışlı olabilir.

Yeni bir yer imi oluşturma

Bir siteyi yapılandırdıktan sonra, yeni bir yer imi oluşturmanın en kolay yolu, belgede istediğiniz paragrafa gitmek, yer imleri bağlam menüsünü göstermek için NVDA+J tuşlarına basmak ve Yer İmleri > Site için yeni yer imi oluştur ...'u seçmektir.

Yer imi yapılandırma iletişim kutusu açılacaktır. Artık yer imini özelleştirebilirsiniz. Metnin nasıl eşleştirileceğini değiştirebilirsiniz (ör. dize eşleşmesi veya normal ifade).

Bu iletişim kutusundaki diğer seçenekler:

  • Kategori: yer imi türünü tanımlar.
  • Görünen ad: daha iyi okunabilirlik için bu yer iminin isteğe bağlı adı. Bu, uzun bir yer imleri listesinde bu yer imini tanımlayabilmeniz için daha iyi bir ad verir.
  • Yer işareti bulunduğunda sesli mesaj: belgede bu yer işaretine her bastığınızda konuşmak için isteğe bağlı mesaj.
  • Paragraflarda ofset: eşleşen metni bulduktan sonra BrowserNav imleci bu kadar paragraf ileri veya geri kaydırır. Bu, örneğin, atlamak istediğiniz hedef metnin eşleştirilebilecek herhangi bir ortak metin içermemesi (ör. forum gönderisi), ancak önceki bir paragrafın eşleştirilebilir bir kelime içermesi (ör. olumlu oylama) durumunda yararlı olabilir. Bu durumda, upvote kelimesini eşleştirebilir ve imleci upvote kelimesi yerine gönderinin ilk paragrafına yerleştirmek için offset=1'i belirtebilirsiniz.
  • Nitelikler: Eşleştirilen paragraf niteliklerinin boşlukla ayrılmış listesi. Geçerli paragraf için kullanılabilir niteliklerin listesi bir sonraki form alanında mevcuttur. Nitelikler listesi, bazı ortak rollerle önceden doldurulmuştur ve genellikle onu düzenlemeniz gerekmez.
  • Geçerli paragraftaki mevcut nitelikler : bunlar, geçerli paragrafta bulunan tüm niteliklerdir. Bunları eşleşen nitelikler listesine eklemek için seçip Boşluk tuşuna basabilirsiniz.

Gelişmiş site seçenekleri

Site yapılandırma iletişim kutusunda bir dizi gelişmiş seçenek belirleyebilirsiniz:

  • Görünen ad: site listesinde daha iyi okunabilmesi için isteğe bağlı görünen ad.
  • Odak modu: bu, NVDA'da odak olaylarının varsayılan olarak işlenmesini geçersiz kılmayı sağlar. Bazı web siteleri odak olaylarını kötüye kullanır. Bunları daha rahat kullanmak için odak olaylarını yok sayabilir veya alternatif olarak bir odak olayı alındığında odak moduna otomatik girişi devre dışı bırakabilirsiniz.
  • Canlı bölge modu: Bazı web siteleri canlı bölgeleri kötüye kullanır. Bu seçenek, yalnızca mevcut web sitesi için canlı bölge duyurularının devre dışı bırakılmasına izin verir.
  • Hata ayıklama bip modu: Bu çoğunlukla hata ayıklama amaçları için iyidir. Belirli bir olay (odaklanma, canlı bölge güncellemesi veya başarılı Hızlı Tıklama) gerçekleştiğinde NVDA'nın bip sesi çıkarmasını sağlayabilirsiniz.

Komutlar

Tarayıcı Dolaşımı v2.5'ten başlayarak, yer işaretlerinizi Python komut dosyasıyla özelleştirebilirsiniz. Komut dosyası iki amaç için kullanılabilir:

  1. Mevcut eşleştirme seçeneklerinin yeterli olmadığı durumlarda eşleştirme algoritmasını geliştirmek. Bu, Hızlı Atlama, Hızlı Konuşma, Hızlı Tıklama, hiyerarşik ve Dağınıklığı Atla yer işaretleri için geçerlidir.
  2. Web sayfalarındaki belirli eylemleri otomatikleştirmek amacıyla rastgele Python kodunu çalıştırmak. Bu, Komut Dosyası veya Sayısal Komut Dosyası yer işretleri aracılığıyla yapılabilir.

Komut API'si

Komut dosyanızda aşağıdaki değişkenler sağlanır:

  • p - mevcut paragraf. Bu, paragraph.py içinde tanımlanan "Paragraph" sınıfının bir örneğidir
  • t - current textInfo object.

Paragraflarla çalışmanız önerilir çünkü bunlar 'Metin Bilgisinden daha yüksek düzeyde arayüz sağlarlar.

Komut dosyanızın, geçerli paragrafın özel kuralınızla eşleşip eşleşmediğine karar vermesi gerekir. Şunlardan birini yapabilirsiniz:

  • Eşleşiyorsa 'True', değilse 'False' döndür.
  • Eşleşme olmadığını belirtmek için "None" veya "Return yok" ifadesini döndürün.
  • Aşağıdaki "i" veya önceki "i" paragrafın eşleştiğini ve geçerli paragraf yerine söylenmesi gerektiğini belirtmek için "i" tamsayısını döndürür.
  • Uzaklık ile eşleşmeyi belirtmek için '(i: int, s:str)' demetini döndürün (önceki noktaya bakın) ve TarayıcıDolaşımı'nın 's' mesajını söylemesini sağlayın.
  • Call match() function to indicate a match. This function internally raises an Exception, so that execution of your script will be terminated after calling match. The function is defined as:

      def match(offset: int | TextInfo | Paragraph = None, message: str = None) -> None:
    

Ayrıca herhangi bir modülü içe aktarmanıza ve genel amaçlı komut dosyaları yazmanıza da izin verilir.

Komutunuzun hatalarını ayıklamak için print() ifadesini kullanabilirsiniz: çıktı NVDA günlüğüne yazdırılacaktır.

Örnek komut

  1. Bu komut dosyası, geçerli paragrafın bir bağlantı olup olmadığını ve önceki başlık düzeyi 5'in metninin geçerli paragrafın metniyle başlayıp başlamadığını kontrol eder:

     try:
         if controlTypes.Role.LINK in p.roles and p.previousHeading5.textInfo.text.startswith(p.text):
             print(f"pp5 {p.previousHeading5.textInfo.text}")
             return True
     except NotFoundError:
         return None
    
  2. Bu komut dosyası bir eşleşme gerçekleştirmez ancak sayfadaki son düzenleme kutusunu etkinleştirir:

     p.end.previous.previousEdit.activate()
    
  3. Bu komut dosyası, bir veya iki paragraf ileride olabilen kullanıcı adını bulur; daha sonra yazı tipi boyutunu analiz ederek yorumun başlangıcını bulur; daha sonra "Yanıtla" metnini arayarak yorumun sonunu bulur. Daha sonra yorumun tüm metniyle eşleşir ve eşleşen metinden önce söylenecek kullanıcı adını ekler:

     user = p.next
     if user.text == "downvote":
         user = user.next
     try:
         username = user.text.split()[0]
     except IndexError:
         username = '?'
     pp = p
     begin = None
     for i in range(5):
         fs = pp.attributes.get(ParagraphAttribute.FONT_SIZE, [])
         #print(f"i={i} fs={fs}")
         if '9_pt' in fs:
             begin = pp
             break
         pp = pp.next
     else:
         return
     end = begin
     while end.text != 'reply':
         end = end.next
     match(textInfoRange(begin, end), username)
    
  4. Bu komut dosyası bir jeneratördür, yani ürettiği her şey bir sonraki satır çalıştırılmadan önce uyku zamanı olarak kullanılacaktır. Bu komut dosyası, arka planda engelleyici olmayan bir iş parçacığında yürütülecektir.

    Bu komut dosyası bir dizi eylem gerçekleştirir:

    • Belirli bir ada sahip bir düğme bulur ve ona basar.
    • Açılan iletişim kutusuna girer: p.home.nextEmbeddedObject.activate()
    • Bu iletişim kutusunda yeni odaklanılan öğeyi elde eder: d = getFocusParagraph()
    • Bu iletişim kutusundaki onay kutusunu bulur ve işaretler.
    • Bu iletişim penceresinde ada göre başka bir düğme bulur ve ona basar.

    Bu adımlar 'yeniden dene' fonksiyonu aracılığıyla 20 kez tekrarlanır. Daha sonra 500 ms durakladıktan sonra "Sorguyu Çalıştır" butonunu bulur ve ona basar.

     def waitForDialogAndClickCheckbox():
         try:
             p.home.find("Link Last Used").activate()
             p.home.nextEmbeddedObject.activate()
         except NotFoundError:
             pass
         d = getFocusParagraph()
         c = d.home.nextCheckBox
         if controlTypes.State.CHECKED not in c.obj.states:
             c.activate() 
         d.home.find("Link QCPR Project").activate()
    
     yield from retry(waitForDialogAndClickCheckbox, count=20)
     yield 500
     yield from retry(lambda: p.home.find("Run Query").activate(), count=10)
    
  5. Giriş değişkeni olarak 'level'i aldığı için bu sayısal bir komut dosyasıdır. Bu, sayfanın başından itibaren (veya seviye negatifse sondan itibaren) 'level' düzenleme kutusunu bulur ve üzerinde 'script_editJupyter'ı çağırır.

     if level > 0:
         p = p.home
         for i in range(level):
             p = Paragraph(p.nextEdit.textInfo)
     elif level <= 0:
         level = 1-level
         p = p.end.previous
         tones.beep(500, 50)
         for i in range(level):
             p = Paragraph(p.previousEdit.textInfo)
         else:
             tones.beep(500, 50)
     p.textInfo.obj.currentFocusableNVDAObject = p.textInfo.focusableNVDAObjectAtStart
     p.textInfo.obj.script_editJupyter(None)
    

Yapılandırma

Yer imi tanımları, NVDA yapılandırma dizininde "browserNavRules.json" dosyasında saklanır. Bu dosyayı manuel olarak düzenleyebilir veya birisiyle paylaşabilirsiniz.

NVDA Konfigürasyon dizini, Başlat menüsünü açıp şunu yazarak bulunabilir: NVDA kullanıcı konfigürasyon dizinini keşfedin.

BrowserNav, örnek yer imleri içeren varsayılan yapılandırma dosyasıyla birlikte gelir.

Yarı erişilebilir düzenleme kutularını düzenleme

Pek çok modern web uygulaması, özellikle de diğerleri arasında Jupyter, o kadar erişilemeyen düzenleme kutuları kullanır, ör. boş görünürler, ancak Control+A, Control+C ve Control+V tuş vuruşlarını kullanarak bunların içine ve dışına metin kopyalayabilirsiniz.

BrowserNav, bu düzenleme kutularını daha uygun bir şekilde düzenlemek için deneysel bir özellik sunar. KULLANMAK İÇİN:

  1. Tarayıcı penceresinde düzenleme kutusunu bulun.
  2. NVDA+E'ye basın.
  3. Bu düzenleme kutusunun içeriğini içeren yeni bir pencere açılacaktır.
  4. Bu pencerede o düzenleme kutusunun içeriğini düzenleyin.
  5. İşiniz bittiğinde, erişilebilir düzenleme penceresini kapatmak ve web sayfasındaki düzenleme kutusunu güncellemek için Escape tuşuna basabilirsiniz.
  6. Alternatif olarak Control+Enter, Shift+Enter veya Alt+Enter tuşlarına da basabilirsiniz. Bu, düzenleme penceresini kapatacak, düzenleme kutusunu güncelleyecek ve hareketi web uygulamasına iletecektir.
  7. Düzenleme penceresini değişiklikleri kaydetmeden kapatmak için Alt+F4 tuşlarına basın.
  8. Herhangi bir zamanda, önceden düzenlenmiş metnin içeriği kaybolursa, onu panoya kopyalamak için NVDA+Control+E tuşlarına basın.

Notlar:

  • Tarayıcının durumunu değiştirmeyin, örn. metin düzenleme penceresi açıkken sekmeler arasında geçiş yapmayın ve sekme içindeki diğer öğelere odaklanmayın. Bunu yapmak, BrowserNav'in düzenleme kutusundaki metni doğru şekilde güncellemesini engelleyecektir.
  • Control+Enter, Shift+Enter veya Alt+Enter tuşlarına bastıktan sonra Control, Shift veya Alt değiştiricilerini hemen bıraktığınızdan emin olun. Bunları bir saniyeden fazla tutmak sorunlara neden olur.
  • Bu özellik şu anda deneyseldir. Lütfen yalnızca yaklaşık %90-95 başarı oranı bekleyin.
  • Google Chrome ve Firefox ile kapsamlı bir şekilde test edilmiştir. Diğer tarayıcılarda çalışabilir, ancak bilgi kaybı gibi sorunlarla karşılaşma olasılığı daha yüksektir.

Kaynak kodu

Kaynak kodu http://github.com/mltony/nvda-indent-nav adresinde mevcuttur.