Vak fejlesztő oldotta meg a Windows–Mac váltás akadálymentességi gondját: az AVM sztorija

Egy amerikai rehabilitációs szakember korábban sosem írt kódot, mégis mesterséges intelligencia segítségével olyan alkalmazást épített, amely végre gond nélkül teszi lehetővé, hogy vakok is Windows-t futtassanak Apple Silicon alapú Macen. A Double Tap podcast legújabb adásában Allison Melloy mesélt az AVM (Accessible Virtual Machine) nevű projektjéről.

A Double Tap műsorvezetői, Steven Scott és Shaun Preece rendszeresen foglalkoznak azzal, hogyan boldogulnak a vak és gyengénlátó felhasználók a mindennapi technológiával. A mostani adás középpontjában egy olyan probléma állt, amellyel sok Mac-felhasználó szembesült már: hogyan lehet egy Apple-gépen Windows-t futtatni úgy, hogy a képernyőolvasót használó ne vesszen el a két rendszer között. A Parallels, a VMware Fusion és a régebbi Boot Camp is kínált valamilyen megoldást a Windows Mac alatti futtatására, de – mint a beszélgetésből kiderült – egyik sem volt igazán problémamentes azok számára, akik VoiceOverrel vagy más képernyőolvasóval használják a gépüket.

Mi az AVM, és milyen problémát old meg

Az AVM az Accessible Virtual Machine rövidítése, vagyis „akadálymentes virtuális gép”. A program a Windows ARM-processzorokra optimalizált változatát futtatja virtuális gépként Apple Silicon (M-sorozatú) Maceken. Maga az ötlet – Windows futtatása Mac alatt – nem új, hiszen erre már régóta léteznek kereskedelmi megoldások. Ezekkel Melloy szerint az volt a fő gond, hogy használatukhoz gyakran kisegítő eszközökre, például képernyőolvasó-kompatibilis segédalkalmazásokra volt szükség. Az akadálymentes élmény így inkább csak „hozzátoldott” volt, nem a rendszer részeként tervezték meg.

A legnagyobb bosszúságot azonban egy nagyon konkrét jelenség okozta: a felhasználó gyakran véletlenül lépett át a Windows és a Mac környezet között – például egy óvatlan Command+Tab miatt –, és emiatt nem mindig volt egyértelmű, hogy éppen melyik operációs rendszerben dolgozik. Ha valaki kikapcsolta a képernyőolvasót, hogy elkerülje a két rendszer hangjainak összekeveredését, könnyen megeshetett, hogy csak akkor vette észre a váltást, amikor már elrontott valamit. Melloy pontosan ezt a bizonytalanságot akarta megszüntetni: olyan megoldást szeretett volna, amivel a felhasználó mindig egyértelműen tudja, melyik rendszerben van éppen.

Egy vibe coding-projekt QEMU-alapokon

Az egyik legérdekesebb szál a beszélgetésben az volt, hogyan is született meg az AVM. Melloy saját bevallása szerint nem tekinti magát programozónak: az egész alkalmazást úgynevezett „vibe coding” módszerrel, vagyis természetes nyelvi utasításokkal fejlesztette, a Claude mesterséges intelligencia segítségével, korábbi kódolói tapasztalat nélkül. A munka a Claude webes felületén indult, ahol az AI SwiftUI kódot generált, amit Melloy egyszerűen bemásolt Xcode-ba, Apple fejlesztői környezetébe. Menet közben magát az Xcode kezelését is tanulta, képernyőképeket küldve az AI-nak, amikor elakadt.

A projekt nem ment könnyen. Melloy elmondása szerint a fejlesztés júniusban indult, és az AVM első verziója augusztus 7-én jelent meg – tehát nagyjából két hónapos folyamat volt, tele olyan pillanatokkal, amikor legszívesebben feladta volna. Az első próbálkozás kifejezetten félrement: amit akkor sikerült összerakni, az valójában Linuxot vagy Mac rendszert tudott futtatni virtuális gépként, Windows-t nem. Ennek részben az volt az oka, hogy a Claude akkori modellváltozatai még nem voltak elég erősek ehhez a feladathoz.

A Windows-támogatás eléréséhez ki kellett deríteni, milyen mélyebb architektúrára van szükség. Itt jött a képbe a QEMU, egy nyílt forráskódú géptemulátor és virtualizációs motor, amelyre az UTM nevű, szintén nyílt forráskódú Mac-es virtualizációs alkalmazás is épül. Mivel az UTM fejlesztői nyílt forráskódúvá tették a projektjüket, Melloy ebből tudta megérteni, milyen apró rendszerkomponensekre (könyvtárfájlokra) és keretrendszerekre (framework-ökre) van szükség ahhoz, hogy a Windows összeomlás nélkül fusson a virtuális gépben. Egy ponton a Claude azt is javasolta neki, hogy telepítse fel magát az UTM-et és állítson be benne egy Windows-példányt, csak hogy lássa, milyen fájlokra van szükség. Ez az élmény egyben meg is erősítette Melloyt abban, hogy érdemes egy kifejezetten akadálymentes alternatívát építeni.

A fejlesztés közben rendszeresen összeakadt a Claude-dal is: amikor az AI körben forgott ugyanazon próbálkozásokkal, Melloy egyenesen rászólt, hogy inkább keressen rá a hibára az interneten, ahelyett hogy tovább próbálkozna vakon. Elmondása szerint a Fable nevű, legújabb Claude-modellel ez a fajta korrekció már sokkal ritkábban szükséges, mert az AI önállóbban ismeri fel, ha rossz irányba indult el, és időnként saját magát is leállítja egy hibás kódrészlet beillesztése előtt.

A fejlesztés egyik tanulsága az volt, mennyire fontos a részletekre figyelni. Az első kiadott verzióban például a képernyőkép nagyon kicsi volt, és az egér nem működött megfelelően – vagyis a program, amelyet egy vak fejlesztő épített, épp a látó felhasználók számára nem volt igazán használható. Melloy ezt utólag maga is a fejlesztés egyik tanulságos, ironikus pillanataként említette, és gyorsan javította is.

Hogyan érzi a felhasználó, melyik rendszerben van

A beszélgetés egyik legrészletesebb szakasza a kezelésről szólt, hiszen ez volt az a pont, amiért az egész projekt elindult. Az AVM-ben a virtuális gép elindítása után a felhasználó egy billentyűkombinációval (Command+Shift+S) „bezárkózhat” a Windows-környezetbe: ilyenkor a rendszer hangja kimondja, hogy „Windows keyboard on”, egyértelműen jelezve, hogy melyik rendszer fogadja a billentyűleütéseket. Innentől a billentyűzet a Windows szabályai szerint viselkedik – ez azt is jelenti, hogy a Windows billentyű helyén a Mac Command billentyűje működik, ehhez kellett hozzászokni.

Fontos részlet, hogy Windows-módban a Caps Lock billentyű a képernyőolvasó módosítóbillentyűjeként működik, ami – Melloy elmondása szerint – önmagában is komoly fejlesztői munkát igényelt. A Windows oldalán ráadásul a felhasználók a saját, megszokott MacBook billentyűzetüket használhatják külső billentyűzet nélkül is, ami különösen azoknak fontos, akik útközben, laptopot használva dolgoznak.

Amikor a felhasználó vissza szeretne térni a Mac oldalára, a Command+Control+Escape kombinációval léphet ki a Windows-módból: ilyenkor a rendszerhang bemondja, hogy „Mac keyboard on”. Eközben a Windows a háttérben tovább fut – ha éppen egy fájl letöltése zajlott, az zavartalanul folytatódik –, és amikor a felhasználó vissza akar térni, egy Command+Shift+E kombinációval újra „belép” a Windows-környezetbe. A lényeg, hogy a rendszer minden váltásnál egyértelmű hangos visszajelzést ad arról, melyik oldalon vagyunk éppen, így nem fordulhat elő az a korábbi tapasztalat, hogy valaki azt hiszi, Windowsban dolgozik, miközben valójában már visszakerült a Mac felületére.

Melloy a fejlesztés során maga is új szemléletet kapott az efféle hangjelzések fontosságáról: elmondása szerint korábban sosem tulajdonított nagy jelentőséget az apró rendszerhangoknak, de most rájött, mennyire hasznos „viszonyítási pontként” szolgálhat egy-egy jelzőhang. Emellett szó esett arról is, hogy hol van helye a program saját, önmagát felolvasó (self-voicing) funkcióinak, és hol kell inkább a képernyőolvasóra hagyatkozni. Melloy szerint az AVM-ben ez utóbbi a fő szabály, hiszen a felhasználók túlnyomó többsége VoiceOvert fog használni – a self-voicing funkciókat csak ott érdemes bevetni, ahol azok valóban indokoltak.

Kompatibilitás és rendszerkövetelmények

Az AVM futtatásához Apple Silicon, tehát M-sorozatú processzorral szerelt Mac szükséges, macOS Ventura (13-as verzió) vagy újabb rendszerrel – ez visszamenőleg egészen az első M1-es Macekig kompatibilitást jelent. A virtuális gépnek szánható erőforrások (memória, processzormagok, tárhely) mennyisége a gép teljesítményétől függ: Melloy elmondása szerint a Windows-oldal a Mac erőforrásainak akár feléig is felhasználhat memóriát, processzormagot és tárhelyet. Egy erősebb MacBook Prón – saját bevallása szerint – minden eddiginél erősebb Windows-gépet sikerült „életre keltenie”: példaként említette, hogy a JAWS képernyőolvasó telepítése ezen a virtuális gépen gyorsabban lezajlott, mint néhány gyengébb, fizikai Windows-gépen.

A gyengébb, kevesebb memóriával rendelkező, alacsonyabb kategóriás Apple-eszközök esetében – a beszélgetésben említett példa szerint mindössze 8 gigabájt RAM-mal – a műsorvezetők és Melloy is óvatosabban fogalmaztak. Itt a Windows-oldalnak jutó, felezett memória valószínűleg csak alapfeladatokra lesz elég, a pontos kompatibilitás pedig még kipróbálásra vár. Az AVM használatához emellett szükség van egy Windows telepítőfájlra (ISO-ra, vagyis a Windows telepítéséhez szükséges lemezkép-fájlra) a Microsoft oldaláról, valamint egy érvényes Windows-licencre – utóbbi nélkül a rendszer működik ugyan egy ideig, de folyamatosan emlékeztetni fog a licencelés hiányára.

Amit még nem tud, és ami jöhet

Melloy nyíltan beszélt az AVM jelenlegi korlátairól is. Az egyik legnagyobb hiányosság, hogy a Windows-oldal egyelőre nem támogatja a braille-kijelzőket – erre, saját szavai szerint, egyszerűen még nem jutott ideje. Ez a roadmap (fejlesztési ütemterv) egyik fontos pontja: USB-eszközök közül jelenleg a billentyűzet és az egér működik, de a tervek között szerepel a szélesebb körű USB- és Bluetooth-eszköz-támogatás is, beleértve a braille-kijelzőket, a fejhallgatókat, és – mivel Melloy régóta elsősorban a játékok miatt ragaszkodik a Windows-hoz – a kontrollereket is, hiszen sok modern játék kontrolleres irányítást igényel.

A fejlesztő egyelőre a projekt saját GitHub-oldalán teszi elérhetővé az AVM-et, ahol a legfrissebb kiadás linkje található. Saját domain- és márkanevet egyelőre nem választott a projektnek, ez még nyitott kérdés – a műsorban tréfásan fel is vetették, hogy talán érdemes lenne a hallgatóktól ötletet kérni rá.

Ki áll a projekt mögött, és mit jelent ez tágabb kontextusban

Allison Melloy civilben nem szoftverfejlesztő, hanem foglalkozási rehabilitációs szakember: jelenleg Ohio állam látássérültekért felelős szolgáltatási vezetőjeként dolgozik, közel 17 éve a szakmában. Ez a háttér magyarázza, miért olyan fontos neki, hogy a fogyatékkal élők valóban hozzáférjenek a munkaerőpiachoz szükséges digitális készségekhez. Ma már gyakorlatilag minden munkakörhöz szükség van alapvető számítógépes ismeretekre, még a hagyományosan kevésbé számítógépes szakmákban is, hiszen már az álláskeresés is jellemzően online zajlik.

A beszélgetés végén szó esett arról is, hogy a mesterséges intelligencia – és különösen az olyan „vibe coding” eszközök, mint a Claude – miért szólítja meg ilyen erősen a vakok és gyengénlátók közösségét. Az érvelés szerint a felhő alapú AI-eszközök használatához elég egy böngésző és egy szerény teljesítményű gép, így a belépési küszöb alacsony. Ez a vak közösség számára történelmileg is ismerős tapasztalat: a képernyőolvasók és braille-kijelzők generációi óta tudják, mekkora jelentősége lehet egy-egy technológiai előrelépésnek a mindennapi önállóság szempontjából. Melloy szerint AI nélkül, Xcode-ot és Swiftet évekig tanulva sem lett volna esélye eljutni egy ilyen alkalmazás megépítéséig – az AI-eszközök viszont lehetővé tették, hogy az ötletek megfogalmazására és a tesztelésre koncentráljon, a kód megírását pedig rábízza a modellre.

Összegzés

Az AVM egyelőre egy kis, egyfős, GitHub-on terjesztett projekt, komoly hiányosságokkal: nincs braille-támogatás, a szélesebb USB- és Bluetooth-eszközpark kompatibilitása pedig még kidolgozás alatt áll. Ugyanakkor jó példa arra, hogy egy konkrét, jól körülhatárolt akadálymentességi problémára – a Windows és Mac közti bizonytalan váltásra – mesterséges intelligencia segítségével, formális programozói képzettség nélkül is lehet működő megoldást építeni. Aki kipróbálná, Apple Silicon alapú, Ventura vagy újabb macOS-t futtató gépre, saját Windows-telepítőre és érvényes licencre lesz szüksége.

Ez a cikk a Double Tap podcast 2026. augusztus 18-i adása alapján, mesterséges intelligencia felhasználásával készült, ezért apróbb pontatlanságokat tartalmazhat.

Szólj hozzá!

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük