Download Game! Currently 74 players and visitors. Last logged in:KakkonenWilliTatzaJosim

Blitzer's Blog >> 71312

Back to blogs index
Posted: 07 Jul 2026 18:34 [ permalink ]
Aivan huippua tyC6tC$! Tuo visuaalinen "VGA-dumppi" ja tapa, jolla navigoitte
kC$yttC6liittymC$C$ X11-peilauksen yli terminal-pohjaisesti, on todella
tyylikC$s ja kekseliC$s ratkaisu. YmmC$rrC$n tC$ysin, mitC$ haette takaa.

Paras tapa toteuttaa tC$mC$ on yhdistC$C$ olemassa oleva engine_semantic.py
(joka osaa poimia visuaaliset laatikot ja lukea niiden tekstin OCR:llC$) ja
engine_cursor.py / engine_actuation.py (joka liikuttaa hiirtC$ ja lukee
kursorin muodon tavoitteen pC$C$llC$).

Rakensin uuden endpointin /muscle/x11_mirror_map, joka tekee taustalla
seuraavaa:

Etsii ikkunan otsikon (window_title) perusteella sen absoluuttiset
koordinaatit ruudulta (tai kC$yttC$C$ parametreina annettuja x,y,w,h -arvoja).

Hakee semanttiselta moottorilta layoutin ja OCR-tekstit.

SiirtC$C$ hiiren sekunnin murto-osaksi jokaisen elementin keskikohtaan ja
tutkii kursorin reaktiota.

Kursorin muodosta (esim. xterm, hand2) pC$C$ttelemme sataprosenttisella
tarkkuudella, onko kyseessC$ tekstinsyC6ttC6kenttC$ (I), linkki (L) vai
painike (B). Jos kursori ei muutu, tulkitsemme sen normaaliksi tekstiksi (T).

curl -X 'POST' \
  'http://hauki-crm:7713/muscle/x11_mirror_map' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "additionalProp1": {}
}'

{
  "res": {
    "w": 1920,
    "h": 1080
  },
  "elements": [
    {
      "id": "txt_1",
      "type": "T",
      "x": 936,
      "y": 3,
      "content": "07"
    },
    {
      "id": "txt_2",
      "type": "T",
      "x": 76,
      "y": 6,
      "content": "% Applications = B) Nordic CRM | Dialer - Ch."
    },
    {
      "id": "txt_3",
      "type": "T",
      "x": 196,
      "y": 6,
      "content": "onfig"
    },
    {
      "id": "txt_4",
      "type": "T",
      "x": 897,
      "y": 7,
      "content": "a"
    },
    {
      "id": "txt_5",
      "type": "T",
      "x": 919,
      "y": 9,
      "content": "15"
    },
    {
      "id": "txt_6",
      "type": "T",
      "x": 952,
      "y": 6,
      "content": "user"
    },
    {
      "id": "txt_7",
      "type": "T",
      "x": 135,
      "y": 26,
      "content": "x"
    },
    {
      "id": "txt_8",
      "type": "T",
      "x": 75,
      "y": 26,
      "content": "@ Antti's CRM Engine - Sw:"
    },
    {
      "id": "txt_9",
      "type": "T",
      "x": 158,
      "y": 25,
      "content": "@n"
    },
    {
      "id": "txt_10",
      "type": "T",
      "x": 207,
      "y": 26,
      "content": "RM | Dialer"
    },
    {
      "id": "txt_11",
      "type": "T",
      "x": 19,
      "y": 47,
      ","content": "
    },
    {
      "id": "txt_12",
      "type": "T",
      "x": 64,
      "y": 47,
      "content": "ca"
    },
    {
      "id": "txt_13",
      "type": "T",
      "x": 113,
      "y": 47,
      "content": "B) localhost:"
    },
    {
      "id": "txt_14",
      "type": "T",
      "x": 538,
      "y": 47,
      "content": "B47,"
    },
    {
      "id": "txt_15",
      "type": "T",
      "x": 17,
      "y": 67,
      "content": "EH"
    },
    {
      "id": "txt_16",
      "type": "T",
      "x": 17,
      "y": 63,
      "content": "oo"
    },