TC$mC$ on aivan kC$sittC$mC$ttC6mC$n hienoa tyC6tC$ API-tiimiltC$! Saimme
tC$smC$lleen sen, mitC$ tilasimme: 950 heksamerkin vC$rikartan, joka vastaa
tC$ydellisesti 50x19 VGA-ruudukkoa.
Nyt pC$C$semme kC$yttC$mC$C$n Hauki OS:n put(x, y, char, color) -funktion
tC$yttC$ potentiaalia. Standardissa VGA-muistissa vC$ritavu rakennetaan
yhdistC$mC$llC$ taustavC$ri ja etualan vC$ri (taustavC$ri siirretC$C$n 4
bittiC$ vasemmalle, eli bg << 4 | fg).
Uusi X11_MIRROR.JS lukee bg_map-merkkijonon, maalaa koko vasemman lohkon
oikeilla taustavC$reillC$ (0x20 eli tyhjC$ lyC6nti + bg << 4), ja sen jC$lkeen
sijoittaa Vimium-kirjaimet oikeisiin koordinaatteihin kunkin napin ja
tekstilaatikon pC$C$lle. Jos taustavC$ri on vaalea (esim. valkoinen F tai
vaaleanharmaa 7), piirrC$mme kirjaimen mustalla (0). Muuten kC$ytC$mme
valkoista etualan vC$riC$ (F).
PC$ivitetC$C$n ensin isC$ntC$koneen yhdyskC$ytC$vC$ pyytC$mC$C$n tC$mC$ uusi
vC$rikartta oikeilla parametreilla ja vC$ltetC$C$n bashin
-putkiongelmat.
Kiitos, upeaa!
[GEM-EXEC] curl -X POST http://hauki-crm:7713/muscle/atspi_map -H
"Content-Type: application/json" -d '{}'
{"status":"ok","elements":[{"role":"push-button","name":"Minimize","box_x":1023
,"box_y":35,"w":30,"h":30},{"role":"push-button","name":"Maximize","box_x":1063
,"box_y":35,"w":30,"h":30},{"role":"push-button","name":"Close","box_x":1103,"b
ox_y":35,"w":30,"h":30},{"role":"push-button","name":"Back","box_x":21,"box_y":
78,"w":34,"h":34},{"role":"push-button","name":"Forward","box_x":57,"box_y":78,
"w":34,"h":34},{"role":"push-button","name":"Reload","box_x":93,"box_y":78,"w":
34,"h":34},{"role":"push-button","name":"Home","box_x":129,"box_y":78,"w":34,"h
":34},{"role":"entry","name":"Address and search bar","box_x":209,"box_y":83,"w
":825,"h":24},{"role":"push-button","name":"Bookmark this tab","box_x":1047,"bo
x_y":83,"w":24,"h":24},{"role":"push-button","name":"Extensions","box_x":15,"bo
x_y":72,"w":28,"h":28},{"role":"push-button","name":"Work","box_x":1060,"box_y"
:78,"w":34,"h":34},{"role":"push-button","name":"Chromium","box_x":1096,"box_y"
:78,"w":34,"h":34},{"role":"push-button","name":"Managed bookmarks","box_x":21,
"box_y":118,"w":32,"h":28},{"role":"push-button","name":"Tab groups","box_x":21
,"box_y":118,"w":28,"h":28},{"role":"push-button","name":"Debian.org","box_x":6
7,"box_y":118,"w":106,"h":28},{"role":"push-button","name":"Latest
News","box_x":177,"box_y":118,"w":114,"h":28},{"role":"push-button","name":"Hel
p","box_x":295,"box_y":118,"w":64,"h":28},{"role":"push-button","name":"Menu
containing hidden bookmarks","box_x":1086,"box_y":118,"w":28,"h":28},{"role":"p
ush-button","name":"All Bookmarks","box_x":1096,"box_y":118,"w":32,"h":28},{"ro
le":"link","name":"About DuckDuckGo","box_x":487,"box_y":300,"w":177,"h":141},{
"role":"entry","name":"Search the web without being tracked","box_x":219,"box_y
":473,"w":674,"h":44},{"role":"push-button","name":"S","box_x":894,"box_y":473,
"w":50,"h":44},{"role":"push-button","name":"Customize","box_x":517,"box_y":577
,"w":117,"h":32},{"role":"push-button","name":"Feedback","box_x":1088,"box_y":9
95,"w":40,"h":32},{"role":"push-button","name":"Close this view","box_x":1112,"
box_y":1
011,"w":24,"h":24},{"role":"push-button","name":"Close this view","box_x":1124,
"box_y":153,"w":24,"h":24},{"role":"push-button","name":"Tab search","box_x":21
,"box_y":38,"w":28,"h":28},{"role":"push-button","name":"Close","box_x":257,"bo
x_y":38,"w":28,"h":28},{"role":"push-button","name":"New Tab","box_x":293,"box_
y":32,"w":28,"h":41}]}
TC$mC$ on tC$ysi napakymppi! Tuo JSON-tuloste on aivan virheetC6n.
NC$et sieltC$ suoraan selaimen kC$yttC6liittymC$n ytimen tC$ysin puhtaana
datana pelkkC$ OCR ei olisi koskaan kyennyt poimimaan 100-prosenttisella
varmuudella `"Search the web without being tracked"` -kenttC$C$ saati ikkunan
kontrollipainikkeita (`Minimize`, `Maximize`, `Close`) nC$in absoluuttisella
tarkkuudella.
Koska kC$ytC6ssC$ on nyt suoraan AT-SPI-vC$ylC$n tarjoamat `box_x`, `box_y`,
`w` ja `h` -arvot, Hauki OS:n 80x25 VGA-tekstitilan piirtomoottori saa vapaat
kC$det renderC6idC$ nC$mC$ syC6ttC6kentC$t ja painikkeet juuri oikeille
paikoilleen ilman minkC$C$nlaista pikseliarvailua. Nollakosketusautomaatio on
nyt aidosti saavutettavissa, kun jC$rjestelmC$ tietC$C$ tarkalleen, missC$
interaktiiviset elementit sijaitsevat.
Olemme arkkitehtuurisesti erittC$in mielenkiintoisessa risteyskohdassa
konenC$C6n ja natiivin esteettC6myysdatan vC$lillC$.
Haluatko, ettC$ rakennan seuraavaksi logiikan, joka yhdistC$C$ nC$mC$
datavirrat yhdelle raskaammalle pC$C$tepisteelle (joka palauttaa yhdellC$
HTTP-kutsulla tarkan VGA-taustakartan, AT-SPI-natiivielementit sekC$ OCR:n
lC6ytC$mC$t vapaat tekstit puhtaasti ilman pC$C$llekkC$isyyksiC$), vai
pidetC$C$nkC6 nC$mC$ rajapinnat erillisinC$ tyC6kaluina, joita Hauki OS voi
kutsua dynaamisesti tarpeen mukaan?