Tuesday, September 15, 2026

Silicon Graphics bölüm iki: Mouse wheel.

SGI O2’yi yeniden kullanmaya başladıktan sonra karşıma çıkan küçük fakat günlük kullanımda rahatsız edici sorunlardan biri fare tekerleğiydi. Makinenin özgün iki tuşlu faresi sorunsuzdu; ancak web sayfalarında ve uzun sistem belgelerinde kaydırma çubuğunu sürekli tutup çekmek pek kullanışlı değildi. Elimde gerçek PS/2 bağlantılı, tekerlekli bir Logitech M-SBF96 bulunduğu için önce bunu IRIX’e tanıtmayı denedim.

Sonuçta tekerleği IRIX’in X sunucusuna kadar eksiksiz ulaştırdım. Bununla birlikte, eski X/Motif dünyasında “işletim sistemi tekerleği görüyor” ile “her uygulama kaydırıyor” ifadelerinin aynı anlama gelmediğini de uygulamalı olarak görmüş oldum.

İlk engel: IRIX 6.5’te pcmouse_mode yoktu

IRIX’te PS/2 tekerlek desteği için kullanılan ayar pcmouse_mode. Ancak O2’de kurulu temel IRIX 6.5 sürümünde şu komut çalışmıyordu:

systune pcmouse_mode 1

Sistem, parametrenin bulunmadığını bildiriyordu. uname çıktısı makinenin eski temel 6.5 kurulumunda olduğunu gösterdi. Bu nedenle fareyi değiştirmek ya da X ayarlarıyla oynamak tek başına yeterli değildi; önce daha yeni bir IRIX güncellemesine geçmek gerekiyordu.

irixboot ortamını yeniden ayağa kaldırmak

Daha önce Windows 11, Vagrant ve VirtualBox üzerinde kurduğum irixboot ortamını kullandım. CH552 tabanlı bir DDC/CI kartıyla VGA–HDMI geçişini denediğim sırada bilgisayar kilitlenince Vagrant’ın makine indeksi de bozulmuştu. İndeks düzeltildikten sonra sanal makine yeniden açıldı:

E:\Program\SGI\irixboot>vagrant up

Ready to network boot 'o2'
*** Partitioners found:
bootp():/overlay30/stand/fx.64
bootp():/overlay30/stand/fx.ARCS
*** Paths for Inst:
irixboot:foundation/dist
irixboot:overlay30/dist

irixboot running at 192.168.1.109

Buradaki önemli noktalar, Windows tarafındaki irixboot sunucusunun 192.168.1.109 adresinde çalışması ve iki yazılım kaynağının birlikte kullanılmasıydı:

irixboot:foundation/dist
irixboot:overlay30/dist

IRIX 6.5.30 overlay kurulumu

O2’yi ağ üzerinden miniroot ortamına başlattım ve Inst 4.1 ana menüsüne ulaştım. Varsayılan kaynak Overlay 30 dağıtımıydı.

IRIX Inst 4.1 ana menüsü ve 192.168.1.109 overlay30 dağıtımı
Inst 4.1, Overlay 30 dağıtımını irixboot sunucusundan okurken.

Overlay tek başına temel ürünlerin tamamını içermediğinden Foundation dağıtımını da açtım. Kurulum bakım akışını (maintenance stream) seçmemi istedi. Mevcut O2 donanımını ve yazılım davranışını korumak istediğim için özellik akışı yerine bakım akışında kaldım.

IRIX maintenance ve feature stream seçim ekranı
6.5.30 güncellemesinde maintenance ve feature akışlarının seçimi.

Inst, açık dağıtımlar arasında hem Overlay 30’u hem de Foundation’ı gösterdi. Daha önce hazırladığım bazı Nekoware arşivleri de listede bulunuyordu; bunlar işletim sistemi yükseltmesinin parçası değildi.

IRIX Inst overlay ürün açıklamalarını okurken görülen uyarılar
Overlay ürün açıklamaları okunurken bazı eski IDB kayıtları uyarı verdi; işlem buna rağmen tamamlandı.
IRIX Inst açık yazılım dağıtımları listesi
Overlay ve Foundation kaynakları aynı Inst oturumunda açık.

Mevcut kurulumu koruyup uygun yükseltmeleri seçtikten sonra çakışma kontrolü yaptım. No conflicts sonucunu aldıktan sonra go komutuyla kurulumu başlattım. Dosya setlerinin okunması, ön kurulum kontrolü ve çıkış komutlarının çalışması özellikle son yüzde birkaçlık bölümde uzun sürdü; bu aşamada işlemi kesmemek gerekiyor.

IRIX Inst seçili yükseltme paketleri ve disk alanı özeti
Kurulum öncesi seçili alt sistemler ve disk alanı özeti.
IRIX 6.5.30 ön kurulum kontrolü
Dosya setleri okunurken ve pre-installation check çalışırken.

Kurulum tamamlandıktan sonra O2 yeniden başlatıldı. Sürüm kontrolü artık şu sonucu veriyordu:

uname -aR
6.5.30m

Buradaki m, bakım akışını kullandığımızı gösteriyor.

Doğru PS/2 fare modu

Logitech M-SBF96, iki ana tuşa ve basılabilir bir tekerleğe sahip klasik üç tuşlu PS/2 fare. Yan tuşları bulunmadığı için uygun protokol modu 1:

systune pcmouse_mode 1

Değişiklik onaylandıktan sonra sistemi yalnızca yeniden başlatmakla kalmayıp tamamen kapatıp tekrar açtım. pcmouse_mode 2 de denendi; ancak bu mod tekerleğe ek olarak yan tuşları bulunan daha gelişmiş fare protokolü içindi ve bu fare açısından bir yarar sağlamadı.

Logitech M-SBF96 PS/2 optik tekerlekli fare
Denemelerde kullanılan Logitech M-SBF96 PS/2 optik fare.

Tekerlek gerçekten algılanıyor mu?

Fare işaretçisi, sol ve sağ tuş ile tekerleğe basma işlevi çalışıyordu; fakat tekerlek çevrildiğinde pencereler kaymıyordu. Sorunun sürücüde mi yoksa uygulamalarda mı olduğunu ayırmak için X olaylarını gösteren xev aracına ihtiyaç vardı. Sistem üzerinde bulunmadığı için kurulum medyasındaki IDB kayıtlarını Windows tarafında aradım:

vagrant ssh -c "grep -i '/xev' /irix/foundation/dist/*.idb"

Sonuç, ikili dosyanın x_eoe.sw.Xgifts alt sisteminde bulunduğunu gösterdi:

usr/bin/X11/xev ... x_eoe.sw.Xgifts

Bu paket Foundation dağıtımında vardı fakat yüklü eoe.sw.base sürümüyle uyumsuz olarak işaretleniyordu.

x_eoe.sw.Xgifts ile eoe.sw.base çakışması
Inst, eski Xgifts paketi ile güncel temel sistem arasında uyumsuzluk bildiriyor.

Overlay ve Foundation dağıtımlarını yeniden açmak sorunu çözmedi; gerekli kaynaklar zaten açıktı. prereqs adlı bir paket de yoktu. Buradaki mesele eksik bağımlılık değil, Xgifts’in eski sürüm numarası nedeniyle konmuş uyumsuzluk kuralıydı.

IRIX Inst Xgifts tek paket çakışması
Tüm dağıtımlar açık olmasına rağmen kalan tek Xgifts uyumsuzluğu.

Yalnızca bu isteğe bağlı demo alt sistemi seçiliyken Inst’in kural denetimini geçici olarak devre dışı bıraktım:

set rulesoverride on
go

Bu seçenek genel kurulumlarda gelişigüzel kullanılmamalı. Burada seçim listesini kontrol ettikten sonra yalnızca x_eoe.sw.Xgifts ve içindeki küçük xev aracı için kullandım.

Kesin teşhis: Button 4 ve Button 5

Kurulumdan sonra şu komut çalıştı:

/usr/bin/X11/xev

Event Tester penceresinin üzerinde tekerleği çevirdiğimde yukarı yönde button 4, aşağı yönde button 5 olayları oluştu. Diğer tuşlar da beklenen şekildeydi:

  • 1: sol tuş
  • 2: tekerleğe basma/orta tuş
  • 3: sağ tuş
  • 4: tekerlek yukarı
  • 5: tekerlek aşağı
IRIX xev Event Tester button 5 tekerlek olayları
xev çıktısında tekerleğin aşağı hareketi ButtonPress/Release button 5 olarak görülüyor.

Bu ekran teşhisin en önemli noktasıydı: PS/2 fare, çekirdek ayarı ve Xsgi düzgün çalışıyordu. Kaydırmama sorunu artık donanım ya da sürücü sorunu değildi.

Netscape için X resource eşlemesi

Netscape 4, Button 4 ve 5 olaylarını kendiliğinden kaydırma olarak yorumlamıyor. Kullanıcıya özel ~/.Xdefaults dosyasına aşağıdaki eşlemeyi ekledim:

Netscape*drawingArea.translations: #override \
 None<Btn4Down>: LineUp()LineUp()LineUp() \n\
 None<Btn5Down>: LineDown()LineDown()LineDown()

Netscape*globalNonTextTranslations: #override \
 None<Btn4Down>: LineUp()LineUp()LineUp() \n\
 None<Btn5Down>: LineDown()LineDown()LineDown()

Ayarları çalışan X oturumuna yüklemek için:

xrdb -merge $HOME/.Xdefaults

Netscape tamamen kapatılıp yeniden açıldığında tekerlek çalıştı. Üç satırlık hareket biraz gecikmeli ve basamaklı hissettirdiği için LineUp()/LineDown() tekrar sayısı bir veya ikiye indirilebilir. Windows’taki modern piksel tabanlı yumuşak kaydırmayı beklememek gerekiyor; Netscape 4 burada satır tabanlı Motif eylemleri kullanıyor.

Klavye haritasını düzeltmek

.Xdefaults içindeki satır devamı karakterlerini yazarken ters bölü tuşunun yanlış eşlendiği de ortaya çıktı. IRIX’in derlenmiş klavye haritaları arasında hem en_US.xkm hem de US.xkm vardı. Düz Amerikan düzenini yeniden yüklemek için:

setxkeymap US

Bu işlemden sonra Türkçe fiziksel klavyede Enter’ın solundaki tuş, IRIX’in US haritasında yeniden ters bölü üretti. Ayarın her oturumda uygulanması için $HOME/.sgisession dosyasına şu satır eklenebilir:

/usr/bin/X11/setxkeymap US

Neden her IRIX uygulaması kaymıyor?

xev tekerlek olaylarının sistem tarafından üretildiğini kanıtlasa da eski X dünyasında “Button 4/5 her yerde kaydırma demektir” şeklinde işletim sistemi çapında zorunlu bir standart yok. Netscape kendi LineUp() eylemini, başka bir Motif uygulaması farklı bir eylemi kullanabiliyor. winterm tekerleği kabul ederken System Manager içindeki Guide penceresinin kabul etmemesi bu yüzden.

xprop WM_CLASS ile pencere sınıfını sorguladığımda System Manager için şu sonuç geldi:

sysmgr, Sysmgr

Her uygulamaya ayrı .Xdefaults kuralı yazmak mümkün olsa da ölçeklenebilir bir çözüm değil. Sistem çapında doğru yaklaşım, Button 4/5 olaylarını aktif pencereye klavye kaydırma olayları olarak gönderen imwheel benzeri bir ara katman kullanmak.

imwheel araması ve mevcut durum

Önce kurulu sistem ve yerel arşivler tarandı:

which imwheel
find /usr /opt -name imwheel -type f -print

vagrant ssh -c "find /irix -type f | grep -i imwheel"
vagrant ssh -c "grep -Ril imwheel /irix 2>/dev/null | head -20"

Hiçbir sonuç çıkmadı. Güncel Nekoware paket listesinde de hazır bir IRIX imwheel paketi bulunmuyor. Makinede cc ve gcc de kurulu olmadığı için kaynak kodu doğrudan derlemek mümkün değildi. Yüklü compiler_eoe bileşenleri bir C derleyicisinin kendisi değil, IRIX’in çalışma ve temel derleme ortamı parçalarıydı.

Bu noktadaki durum:

  • O2, IRIX 6.5.30m’e yükseltildi.
  • pcmouse_mode 1 etkin.
  • Logitech M-SBF96 tekerleği Xsgi altında Button 4/5 üretiyor.
  • Netscape ve tekerlek olaylarını anlayan uygulamalarda kaydırma çalışıyor.
  • Eski Motif uygulamalarının tamamı için sistem-geneli çeviri henüz yok.
  • Bir sonraki adım MIPSPro/GCC kurarak imwheeli IRIX üzerinde derlemek veya IRIX hedefli bir ikili hazırlamak.

Sonuç

Başlangıçta basit bir fare ayarı gibi görünen iş, IRIX’in temel sürümünden 6.5.30m’e ağ üzerinden yükseltilmesine, eski bir X demo paketinin kontrollü biçimde kurulmasına ve X olay zincirinin katman katman incelenmesine dönüştü. En değerli sonuç, sorunun tam yerini ayırabilmek oldu: tekerlek donanımı ve Xsgi görevini yapıyor; geriye 1990’ların uygulama araç takımlarının Button 4/5 olaylarını nasıl yorumladığı kalıyor.

Bir sonraki bölümde derleyici ortamını tamamlayıp imwheeli SGI O2 üzerinde çalıştırmayı deneyeceğim. Başarılı olursa uygulama başına X resource yazmak yerine tek bir oturum servisiyle gerçek anlamda sistem-geneli tekerlek desteğine yaklaşmış olacağız.