มีตัวช่วยค้นหา `ตัวชี้ตำแหน่ง 'ใน Lubuntu หรือไม่ (สำหรับผู้พิการทางสายตา)


9

หนึ่งในสิ่งที่ยากที่สุดสำหรับผู้ที่มีความบกพร่องทางสายตาคือการค้นหาเมาส์เพื่อมองหน้าจอ

ดังนั้นการเปิดใช้งานlocate mouseหรือlocate pointerให้ความสนใจภาพพิเศษ (กระพริบวงกลมสีส้ม / คลื่น) หลังจากกด CTRL (ยากที่จะจับภาพหน้าจอ: ด้านซ้าย)

ค้นหาเมาส์ใน Ubuntu

Xubuntu ไม่มีเครื่องมืออันล้ำค่านี้และ Ubuntu นั้นหนักเกินไปสำหรับฮาร์ดแวร์ 1GB แบบดูอัลคอร์ Gnome มี, มีสามัคคี, มีคอมพ์ได้, มิ้นมีเลย Xubuntu / XFCE ไม่ได้มีมัน

มันไม่เกี่ยวกับเมาส์ที่ใหญ่กว่าซึ่งช่วยได้นิดหน่อย จำเป็นต้องให้ความสนใจการกะพริบบางอย่าง

ใช้ชุดรูปแบบความคมชัดสูง

ถ้า Lubuntu มีมันฉันจะลองเปลี่ยนจาก Xu เป็น Lu


คุณเคยดูที่ Big Cursor ผู้จัดการแพคเกจ Synaptic หรือไม่ มันอาจแก้ปัญหาของคุณ
เร็กซ์

นี่สำหรับ Xubuntu แล้วชื่อก็เปลี่ยนเป็น Lubuntu แต่ย่อหน้ายังคงพูดถึง Xubuntu คุณแน่ใจหรือว่าไม่ใช่คำถามซ้ำสำหรับคำถามอื่นของคุณค้นหาตัวช่วยเหลือเมาส์ใน Xubuntu สำหรับผู้พิการทางสายตา
user.dz

ไม่ฉันไม่คิดว่าชื่อจะเปลี่ยนไปบางทีคุณอาจสับสนกับภาพหน้าจอ ฉันถามก่อนหน้าเกี่ยวกับ Xubuntu ในอีกคำถามหนึ่งอันนี้เกี่ยวกับ Lubuntu แต่สร้างเคล็ดลับเกี่ยวกับ Xubuntu และ Lubuntu
Janghou

คำตอบ:


5
  • ในXubuntuไปที่การตั้งค่าการจัดการ - เมาส์และทัชแพด - ธีม คุณสามารถทำให้ขนาดเคอร์เซอร์ของเมาส์ใหญ่ขึ้นได้

    ชุดเมาส์และทัชแพด Xubuntu

  • นอกจากนี้คุณสามารถดาวน์โหลดชุดรูปแบบเพิ่มเติมสำหรับเมาส์ของคุณที่ทำให้การดูเมาส์ง่ายขึ้น ดูxfce-look.org คุณสามารถเลือกธีมตามรสนิยมของคุณ

    ผมคิดว่านี่เป็นหนึ่งในที่ดีที่สุดที่เหมาะสมกับความต้องการของคุณ: DMZ กับพื้นหลังสีเหลือง Multisized

    สำหรับLubuntu : จากเว็บไซต์ของ wiki นั้น PCManFM และ LxPanel ไม่ได้ใช้ธีมเคอร์เซอร์คุณจะต้องเปลี่ยนเคอร์เซอร์ด้วยตนเอง ดูที่นี่สำหรับรายละเอียดเพิ่มเติม: https://wiki.archlinux.org/index.php/LXDE#Cursors

  • และอีกหนึ่งตัวเลือกเพิ่มเติม: ติดตั้งสภาพแวดล้อม MATEบน Ubuntu ของคุณมันมีน้ำหนักเบาใช้งานบนเครื่อง RAM 512-MB และมีตัวเลือกแฟลชเมาส์ที่คุณกำลังค้นหา

    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 | ฉันมีเครื่องคอมพิวเตอร์


ขอบคุณฉันจะลองดูสิฉันจะลองใช้ธีม Treepata ด้วย
Janghou

ชุดรูปแบบของเมาส์ DMZ / สีเหลืองนั้นใช้ได้ สิ่งนี้พร้อมกับชุดรูปแบบ Treepata (เช่นความสูง / ความคมชัดที่ดีขึ้น) เสนอความช่วยเหลือประเภทที่เหมาะสมสำหรับ Xubuntu ขอบคุณ
จางโจว

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. เปิดใช้งานคอมโพสิต

    Lubuntu

    1. ติดตั้งตัวจัดการแบบรวม

      sudo apt-get install xcompmgr
      
    2. เพิ่มบรรทัดใน

      ~/.config/lxsession/Lubuntu/autostart
      

    Xubuntu

    1. Run xfwm4-tweaks-settings→ Compositor →ตรวจสอบ Enable Compositing ดิสเพลย์

หมายเหตุ

  • คุณจะได้รับพื้นหลังสีดำโดยไม่ต้องประกอบ หากคุณไม่สามารถรับมันไปทำงานพยายามผู้จัดการคอมโพสิตอื่น ๆ เช่น: ,comptoncairo-compmgr

ค้นหาตัวชี้ใน Lubuntu กับ xcompmgr

ค้นหาตัวชี้ในเซสชั่น 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 ฉันมักจะเขียนแนวความคิดระดมสมองประเด็น (BugR ข้อเสนอแนะผลการทดสอบ) ในสคริปต์เดียวกัน เป็นการยากที่จะจำได้เมื่อสลับโครงการ (บริบทใจ) ทำงานหมุน 5w / 5w ในโดเมนที่แตกต่างกัน ในที่สุดฉันก็ไม่กลับมาอีกถ้ามันมีฐานผู้ใช้ไม่มากและมันก็ทำงานได้ดีพอ (ความสนใจจากสาธารณชนหรือทรัพยากรที่ฉันมีเหลืออยู่แค่นั้น BTW ฉันไม่ใช่ผู้ใช้สคริปต์โดยตรง) ดังนั้นตอนนี้เทคโนโลยีที่เคลื่อนไหวอย่างรวดเร็ว: แทนที่ x11, สคริปต์นี้เสียชีวิต, ลดความเป็นเอกภาพ, xkbmod-indicator ตาย, x11 แทนที่, keyboard_modifiers, 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 ของคุณ
Gautam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.