Чи є помічник "Знайти вказівник" у Lubuntu (для людей із вадами зору)


9

Однією з найскладніших речей для людей із вадами зору є розташування миші, яка дивиться до екрана.

Тому увімкніть locate mouseабо locate pointerнадайте додаткову зорову увагу (миготіння помаранчевого кола / хвилі) після натискання CTRL. (важко впіймати скріншот: зліва)

Знайдіть мишу в Ubuntu

Xubuntu не має цього безцінного інструменту, а Ubuntu занадто важкий для двоядерного старого обладнання 1 Гб. У Гнома є, у Єдності є, у Compiz є, у Mint є. У Xubuntu / XFCE його немає.

Справа не в більшій миші, яка трохи допомагає. Потрібна деяка миготлива увага.

Використання теми з високим контрастом.

Якщо Lubuntu має його, я вважаю, що перейшов з Xu на Lu.


Ви шукали менеджера пакунків Synaptic для Big Cursor? Це може вирішити вашу проблему.
Рекс

Це було для Xubuntu, тоді заголовок було змінено на Lubuntu, але параграфи все ще говорять про Xubuntu. Ви впевнені, що це не дублікат для вашого іншого питання. Знайдіть помічника миші в Xubuntu для людей із вадами зору
user.dz

Ні, я не думаю, що заголовок змінився, можливо, ви його плутаєте зі скріншотом. Я запитав раніше про Xubuntu в іншому запитанні, це питання про Lubuntu, але генерую поради щодо Xubuntu та Lubuntu.
Janghou

Відповіді:


5
  • У Xubuntu перейдіть до диспетчера налаштувань - миші та тачпада - теми . Там ви можете збільшити розмір курсору миші.

    Набори миші та тачпада Xubuntu

  • Також ви можете завантажити додаткові теми для своєї миші, що полегшує перегляд миші. Дивіться xfce-look.org . Ви можете вибрати тему на свій смак.

    Я думаю, що цей варіант найкраще відповідає вашим потребам: DMZ з жовтим фоном мультирозмір .

    Що стосується Lubuntu : За його вікі-сайтом, PCManFM і LxPanel не використовують тему курсору, вам доведеться змінити курсор вручну. Тут можна дізнатися більше: https://wiki.archlinux.org/index.php/LXDE#Cursors

  • І ще один варіант: встановіть середовище MATE на Ubuntu, це легкий запуск оперативної пам’яті 512 Мб оперативної пам’яті та має опцію спалаху миші, яку ви шукаєте.

    sudo apt-add-repository ppa:ubuntu-mate-dev/ppa 
    sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate 
    
    sudo apt-get update && sudo apt-get upgrade 
    sudo apt-get install ubuntu-mate-core ubuntu-mate-desktop
    

    Якщо ви хочете мати лише одне середовище, ви навіть можете завантажити та встановити Ubuntu Mate версію як єдину ОС (Але зауважте, що Canonical офіційно не підтримується).

    https://ubuntu-mate.org/longterm/

    Після встановлення середовища MATE ви можете встановити спалах миші:

    1. Перейдіть до Меню та виберіть НалаштуванняМиша та тачпад .
    2. Увімкніть галочку поруч із пунктом " Показати положення вказівника при натисканні клавіші управління ".

    Детальніше див. За посиланням: Швидко знайдіть вказівник миші в Linux Mint / Ubuntu | У мене є ПК .


Thx, я спробую, я також спробую тему Treepata.
Janghou

Тема DMZ / жовта миша чудово. Це разом із темою Treepata (наприклад, поліпшення високої / контрастної форми) пропонує відповідний тип допомоги для Xubuntu. Thx
Janghou

5
  1. Завантажте locate-pointer.c

    wget https://gist.githubusercontent.com/sneetsher/d6d35b6181aa70c27a85/raw/dd874ac535d511c675724fa30d9e12ba5b810c37/locate-pointer.c
    
  2. Встановити вимоги до збірки

    sudo apt-get install build-essential libx11-dev libcairo2-dev
    
  3. Побудуйте його

    gcc `pkg-config --cflags x11 cairo` locate-pointer.c -o locate-pointer `pkg-config --libs x11 cairo` -lm
    
  4. Скопіюйте його в систему bin/

    sudo cp locate-pointer /usr/local/bin/
    
  5. Створіть ярлик для запуску

  6. Увімкнути композицію

    Лубунту

    1. Встановіть складений менеджер

      sudo apt-get install xcompmgr
      
    2. Додайте для нього рядок

      ~/.config/lxsession/Lubuntu/autostart
      

    Xubuntu

    1. Виконати xfwm4-tweaks-settings→ Композитор → Поставити прапорець увімкнути показ композиційного відображення

Примітки

  • У вас вийде чорний фон без композиту. Якщо ви не змогли змусити його працювати, спробуйте іншого композиційного менеджера, наприклад: compton, cairo-compmgr.

locate-pointer у Lubuntu з xcompmgr

locate-pointer у сеансі Xubuntu

Ось повний код, про locate-pointer.cвсяк випадок, коли ламається посилання.

/*
 * locate-pointer.c
 * Some windows manager missing option to locate mouse pointer as accessibity feature.
 * To get transparent window need to activate `composite` service for wm.
 * Coded in c / xlib so it can work in most wm's.
 * 
 * Coded by:    Abdellah Chelli
 * Date:    January 2015
 *
 * Original code by:    Bernhard R. Fischer <bf@abenteuerland.at>
 *          Cairo graphics and X11/Xlib motion example.
 *          https://www.cypherpunk.at/2014/11/cairo-graphics-and-x11xlib/
 *
 * gcc `pkg-config --cflags x11 cairo` locate-pointer.c -o locate-pointer `pkg-config --libs x11 cairo` -lm
 */

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <cairo.h>
#include <cairo-xlib.h>

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int cairo_check_event(cairo_surface_t *sfc, int block, double *mx, double *my)
{
   char keybuf[8];
   KeySym key;
   XEvent e;
   XSync(cairo_xlib_surface_get_display(sfc),False);
   for (;;)
   {
      if (block || XPending(cairo_xlib_surface_get_display(sfc)))
         XNextEvent(cairo_xlib_surface_get_display(sfc), &e);
      else 
         return 0;

      switch (e.type)
      {
         case ButtonPress:
            return -e.xbutton.button;
         case KeyPress:
            XLookupString(&e.xkey, keybuf, sizeof(keybuf), &key, NULL);
            return key;
         case  MotionNotify:
            *mx = e.xmotion.x;
            *my = e.xmotion.y;

         default:
            //fprintf(stderr, "Dropping unhandled XEevent.type = %d.\n", e.type);
            return 0;
      }
   }
}


static void fullscreen(Display* dpy, Window win)
{
  Atom atoms[2] = { XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False), None };
  XChangeProperty(dpy, win, XInternAtom(dpy, "_NET_WM_STATE", False),
                  XA_ATOM, 32, PropModeReplace, (unsigned char*) atoms, 1);
}


cairo_surface_t *cairo_create_x11_surface(int *x, int *y, double* mx, double *my)
{
   Display *dsp;
   Drawable da;
   Screen *scr;
   int screen;
   cairo_surface_t *sfc;

   XVisualInfo vinfo;
   XSetWindowAttributes win_attr;
   int mousex, mousey;

   if ((dsp = XOpenDisplay(NULL)) == NULL)
      exit(1);
   //XSynchronize(dsp,True);
   screen = DefaultScreen(dsp);
   scr = DefaultScreenOfDisplay(dsp);

   XMatchVisualInfo(dsp, screen, 32, TrueColor, &vinfo);
   win_attr.colormap = XCreateColormap(dsp, DefaultRootWindow(dsp), vinfo.visual, AllocNone);
   win_attr.background_pixel = 0;
   win_attr.border_pixel = 0;

   *x = WidthOfScreen(scr), *y = HeightOfScreen(scr);

   da = XCreateWindow(dsp, DefaultRootWindow(dsp),
           0, 0, *x, *y, 0, vinfo.depth, InputOutput,
           vinfo.visual,
           CWColormap | CWBorderPixel | CWBackPixel, &win_attr);

   fullscreen (dsp, da);

   XSelectInput(dsp, da, PointerMotionMask | ButtonPressMask | KeyPressMask);
   XMapWindow(dsp, da);

   sfc = cairo_xlib_surface_create(dsp, da, vinfo.visual, *x, *y);
   cairo_xlib_surface_set_size(sfc, *x, *y);

   Window rw=DefaultRootWindow(dsp);
   Window cw=da;
   int rx, ry;
   unsigned int mr;
   XQueryPointer(dsp, da, &rw, &cw, &rx , &ry, &mousex, &mousey, &mr);
   *mx = mousex;
   *my = mousey;

   return sfc;
}


void cairo_close_x11_surface(cairo_surface_t *sfc)
{
   Display *dsp = cairo_xlib_surface_get_display(sfc);

   cairo_surface_destroy(sfc);
   XCloseDisplay(dsp);
}

int main(int argc, char **argv)
{
   cairo_surface_t *sfc;
   cairo_t *ctx;
   int x, y;
   struct timespec ts = {0, 5000000};

   double mx, my;
   int c = 0;
   double dr0, dr1, dr2, a;

   int running;

   x = y = 0;

   sfc = cairo_create_x11_surface(&x, &y, &mx, &my);
   ctx = cairo_create(sfc);

   for (running = 1; running;)
   {

      dr0 = 20 * sin(c*M_PI/180.0);
      dr1 = 20 * sin((c+45)*M_PI/180.0);
      dr2 = 20 * sin((c+90)*M_PI/180.0);
      a = c*M_PI/720.0;

      cairo_save (ctx);
      //cairo_set_source_rgba (ctx, 0, 0, 0, 1);
      //cairo_set_operator (ctx, CAIRO_OPERATOR_SOURCE);
      cairo_set_operator (ctx, CAIRO_OPERATOR_CLEAR);
      cairo_paint (ctx); 
      cairo_restore (ctx);

      cairo_push_group(ctx);
      cairo_translate(ctx, mx, my);
      cairo_rotate(ctx,a);
      cairo_translate(ctx, -mx, -my);
      cairo_set_source_rgba(ctx, 0, 0, 0, 0.1);
      cairo_paint(ctx);

      cairo_set_line_join (ctx, CAIRO_LINE_JOIN_MITER);
      cairo_set_source_rgba(ctx, 1, 0, 0, 1);
      cairo_set_line_width (ctx, 30);
      cairo_move_to (ctx, mx-50, my-100-dr0);
      cairo_rel_line_to (ctx, 50, 30);
      cairo_rel_line_to (ctx, 50, -30);
      cairo_move_to (ctx, mx+100+dr0, my-50);
      cairo_rel_line_to (ctx, -30, 50);
      cairo_rel_line_to (ctx, 30, 50);
      cairo_move_to (ctx, mx+50, my+100+dr0);
      cairo_rel_line_to (ctx, -50, -30);
      cairo_rel_line_to (ctx, -50, 30);
      cairo_move_to (ctx, mx-100-dr0, my+50);
      cairo_rel_line_to (ctx, 30, -50);
      cairo_rel_line_to (ctx, -30, -50);
      cairo_stroke(ctx);
      cairo_set_source_rgba(ctx, 1, 0, 0, 0.5);
      cairo_move_to (ctx, mx-50, my-150-dr1);
      cairo_rel_line_to (ctx, 50, 30);
      cairo_rel_line_to (ctx, 50, -30);
      cairo_move_to (ctx, mx+150+dr1, my-50);
      cairo_rel_line_to (ctx, -30, 50);
      cairo_rel_line_to (ctx, 30, 50);
      cairo_move_to (ctx, mx+50, my+150+dr1);
      cairo_rel_line_to (ctx, -50, -30);
      cairo_rel_line_to (ctx, -50, 30);
      cairo_move_to (ctx, mx-150-dr1, my+50);
      cairo_rel_line_to (ctx, 30, -50);
      cairo_rel_line_to (ctx, -30, -50);
      cairo_stroke(ctx);
      cairo_set_source_rgba(ctx, 1, 0, 0, 0.3);
      cairo_move_to (ctx, mx-50, my-200-dr2);
      cairo_rel_line_to (ctx, 50, 30);
      cairo_rel_line_to (ctx, 50, -30);
      cairo_move_to (ctx, mx+200+dr2, my-50);
      cairo_rel_line_to (ctx, -30, 50);
      cairo_rel_line_to (ctx, 30, 50);
      cairo_move_to (ctx, mx+50, my+200+dr2);
      cairo_rel_line_to (ctx, -50, -30);
      cairo_rel_line_to (ctx, -50, 30);
      cairo_move_to (ctx, mx-200-dr2, my+50);
      cairo_rel_line_to (ctx, 30, -50);
      cairo_rel_line_to (ctx, -30, -50);
      cairo_stroke(ctx);
      cairo_pop_group_to_source(ctx);
      cairo_paint(ctx);
      cairo_surface_flush(sfc);

      switch (cairo_check_event(sfc, 0, &mx, &my))
      {
         case 0xff1b:   // Esc
         case -1:       // left mouse button
            running = 0;
            break;
      }

      c++;
      nanosleep(&ts, NULL);
   }

   cairo_destroy(ctx);
   cairo_close_x11_surface(sfc);
   return 0;
}

1
Це трохи неприємно, що список справ був написаний майже 5 років тому і його ще не було вирішено. Мені теж погано, але принаймні я щось роблю через рік-два макс.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, Que Sera Sera. Я завжди пишу свої ідеї, проблеми (помилка, зворотній зв'язок, результати тестування) мозку одним і тим же сценарієм. Важко запам’ятати при переключенні проектів (розумний контекст), працюючи поворотом 5 Вт / 5 Вт у різних областях. Зрештою, я не повертаюся, якщо у нього немає багато користувачів, і він просто працює достатньо (суспільний інтерес або просто марна витрата ресурсів, BTW Я не є прямим користувачем мого сценарію). Отож, зараз техніка рухається швидко: замінено x11, цей сценарій помер, зникла єдність, помер xkbmod-індикатор, замінено x11, клавіатурні_модифікатори, перезапис todo для оновлених gtk, ..: D
user.dz

3

Існує простий і брудний трюк з використанням "yad", який є інструментом для генерації відносно простих вікон. (Це виделка від зенності)

Отже, якщо ви створюєте сценарій на своєму, скажімо, $ HOME / bin, із таким вмістом:

yad --picture  --width=68 --height=68 --no-buttons --size=fit --filename=ANY_PICTURE_YOU_LIKE --timeout=1 --mouse --undecorated  --on-top  > /dev/null 2>&1 

Значення ширини та висоти повинно бути на 4 пікселі більше, ніж фактичний розмір зображення.

Він на секунду накладе малюнок на позиції миші, якщо малюнок - анімований gif, ви отримаєте щось досить схоже на те, що вам потрібно просити.

Вам просто потрібно зіставити ярлик клавіатури на ваш новий додаток.

На preloader.net є кілька приємних анімацій (я не перевіряв проблеми з авторськими правами)

Сподіваюся, це допомагає.


Не працює з i3):
Jezor

Це дійсно круто. Чи є спосіб змусити його слідувати за мишкою?
Особа93

1
Гарний трюк! @Jezor, він працює і в i3. Вам просто потрібно зробити вікно плаваючим, використовуючи for_window [class="Yad"] floating enableу вашому i3-конфігурації.
Гаутам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.