I am a blind programmer, and I discovered that I can create drawings by writing SVG code. I have a laser cutter at home and I used it to make toys.
Since I cannot see, I write every line and curve where I want the cut to occur. I can’t see the design, so the computer reads aloud all the code I write. Then, I cut a piece and check what corrections are needed.
This has worked for years, but I am having trouble with different scaling for the X and Y axes. My machine’s original software (CorelLaser) cannot scale X and Y differently, so I am looking for another solution.
I managed to install and connect MeerK40t on an Ubuntu Linux laptop, and I can get through the middle of the process—importing the file, selecting elements, assigning them to an operation, and setting the cutting speed. However, I cannot transfer the operation to the cuter.
My designs are simple, and I can define colors and lines via code. I often need to group paths to move them across the bed or rotate them to fit the available space correctly. In some cases, I need to scale a part so I don’t have to rewrite every coordinate.
I just want to set the speed and send the design directly to the cutter.
The MeerK40t interface was designed for mouse operation, but I need to use the keyboard. I need the screen reader to announce the names of the controls, but many of them are images without descriptions.
I tried adding buttons to the interface by editing the program’s source files, but I only ended up generating a multitude of errors.
It is possible to navigate the menus and even operate some buttons and controls, but most are “invisible” to the screen reader. When I try to send commands to the console, the focus gets stuck inside the command box, and I cannot read the output.
.
When I press the “home” button, the head moves to the starting position, so the machine is correctly connected to the software. So I tried using meerk40t --console with these commands:
element* select
classify
operation0 speed 15
spool
start
But nothing gets sent to the spooler.
In gnome-terminal, sending commands returns a bunch of timestamps—which are annoying when you want to read a dozen lines and the screen reader insists on announcing the time before reading each line. So, I wrote a small server in Go to access the terminal via the browser, allowing me to filter out those unwanted elements. This way, I can clear elements and operations, load the file, select and sort the elements, and view the operation to assign the cutting speed. It works up to this point.
With the help of a sighted person, we managed to send a job to the cutter, and it worked correctly. So, we know it works. It’s just a lack of software accessibility or something in the SVG file I need to change.
I’ve noticed that when I save the project, information such as the cutting speed remains written in the file. However, a set of coordinates is included alongside the drawing, so I can’t simply swap one drawing for another within the project because of these codes that I can’t reproduce.
My dream would be to do something like:
meerk40t cut "draw.svg" speed=15
I tried K40 Whisperer, but my screen reader can’t read absolutely anything in it—it doesn’t even announce the window title. However, I know it installed correctly because some keyboard shortcuts—like returning the laser to the home position—actually work!
Here is an example of a flat-pattern box design:
<svg width="60cm" height="40cm" viewBox="0 0 600 400" xmlns="http://www.w3.org/2000/svg" version="1.1">
<g stroke="#ff0000" stroke-width="1" fill="none">
<!-- planified box 151x181 -->
<g transform="translate(13, 3)">
<path d="M 30.5 30.5 v -20 l 0.5 -0.5 v -10 h 89 v 10 l 0.5 0.5 v 20 h 0.5 v -30 h 19.5 v 30 l 0.5 0.5 h 10 v 119 h -10 l -0.5 0.5 v 30 h -19.5 v -30 h -0.5 v 20 l -0.5 0.5 v 10 h -89 v -10 l -0.5 -0.5 v -20 h -0.5 v 30 h -19.5 v -30 l -0.5 -0.5 h -10 v -119 h 10 l 0.5 -0.5 v -30 h 19.5 v 30 h 0.5 z" />
</g>
</g>
</svg>
Thank you for your attention and effort.
Ângelo Beck