Juntando informações de acessibilidade de um aplicativo

Um programa que deseja fazer uso de chamadas de ATK provavelmente precisaria de uma (ou mais) das seguintes coisas:

  1. Criar um monitorador de evento, por exemplo com a função atk_add_focus_tracker():

    atk_add_focus_tracker (_my_focus_tracker);

    sendo _my_focus_tracker() uma função com esse protótipo:

    void _my_focus_tracker (AtkObject *aobject);
  2. Configurar um listener de eventos globais, com atk_add_global_event_listener():

    mouse_watcher_focus_id =   atk_add_global_event_listener(_my_global_listener,"Gtk:GtkWidget:enter_notify_event");
    

    sendo que _my_global_listener tem o protótipo de um Glib GSignalEmissionHook. Esse exemplo faria com que _my_global_listener() fosse chamado sempre que um sinal enter_notify_even ocorrer em um objeto GtkWidget.

  3. Acessar o objeto de nível superior do ATK com a chamada de função a seguir.

    AtkObject *root_obj = atk_get_root();

    Isso retorna um AtkObject que contém todas as janelas de nível superior no programa atualmente em execução. O usuário poderia, então, navegar pela hierarquia de objeto acessando o filho do objeto raiz, o qual corresponde às janelas de nível superior.