Custom cursor

Cross hair is cool but I find myself constantly wondering if I am really above what I want to click on.

Tried big cursor, too big, not a size thing.

A box would be awesome, any way to modify the mouse cursor?

I see this file
ops.generic.cursor.dat

Can’t open it though, tried open with 7zip renaming to handful of image types, no luck yet

Apparently blender used to just use the precision cursor that windows uses. That would be nice if it still did, easy to change that

Edit:
OK so I can change stuff like the cursor if I play around with what I am going to call the blender source files, pretty sure that what they are, and building it myself afterwards.

https://wiki.blender.org/wiki/Building_Blender

Big thanks to @Harley for making me aware of this and telling me where to look for cursor stuff (wm_cursors.c)

So I did a little tiny bit of research and apparently a hex editor is the type of thing that would reveal what filetype these .dat are.

Opening the smallest .dat file in the icons directory, brush.paint_vertex.alpha.dat, showed me what all of them have in common, which I am assuming is the file signature.

Problem is I have no experience, obviously, and it isn’t listed anywhere. Any help opening these .dat files? I really, really, appreciate any help.

Would be really great to change the mouse cursor. Instead of a crosshair blocking the vertex I want to select, a simple box around the bounds of the selection area, with a transparent interior, is very much an improvement.

This way, my mind gets a visual cue that the vertex is inside of my cursor, it is a completely subliminal event, rather than an active effort to try and get a headshot of the vertex when I am trying to select it.

I figure I will also give it some asymmetry if possible, in one corner, to make it a little more visible without actively searching for it.

This is what the hex editor shows for the vertex alpha paint icon, the handful of other .dat files that I opened in the icon directory share this.

56 43 4F 00 FF FF 00 00

text is
VCO�ÿÿ��
or
VCO ÿÿ

I can’t give you the help that you need, but just wanted to comment that it might be good to have some cursor options built into Blender. At the very least, maybe color inversion option so that it’s always visible no matter the color underneath.

You are still looking in the wrong place, examining those “.dat” files. The icons are not related to the cursors.

If you are able to view and edit the blender source in some way, you want to look at
…\blender\windowmanager\intern\wm_cursors.c

The particular cursor you are trying to change is on, or close to, line 540. There are comments describing the format of the cursors in the same file at around line 327

1 Like

Great thanks I left my earlier post about the dat files intact and put an edit about this new attempt I’m about to embark on at the beginning

No worries.

I still stand by my advice though, to not worry too much about the technicalities of replacing that cursor in the blender source. Instead, design the cursor in an image editor. Once you have something you like then post an image of it to this thread and ask for opinions. Some people will love it, some will yell at you that you suck (LOL). But some will give great feedback, and might give you things to help improve it. Or someone will propose something you hadn’t thought of that works better. In the end you might come up with a design that is so obviously better than what we have now that it will get replaced.

1 Like

Well I figured I had to be able to use it first to get something worth posting, currently building it, fingers crossed. Here’s what I went with for a first draft, big and small are the same, when I get something I like I’ll make the big one a little nicer maybe and make a video or something.

static char bitmap[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f,
0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
0x08, 0x10, 0x08, 0x10, 0x08, 0x1c, 0x08, 0x0c,
0xf8, 0x17, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00,
};

static char mask[] = {
0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0xfc, 0x3f,
0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30,
0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x3c, 0x0c, 0x1c,
0xfc, 0x3f, 0xf8, 0x77, 0x00, 0xe0, 0x00, 0xc0,
};

static char bitmap[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x03,
0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03,
0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03,
0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03,
0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03,
0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03,
0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03,
0xc0, 0x00, 0xf0, 0x03, 0xc0, 0x00, 0xf0, 0x03,
0xc0, 0x00, 0xf0, 0x00, 0xc0, 0x00, 0xf0, 0x00,
0xc0, 0xff, 0x3f, 0x03, 0xc0, 0xff, 0x3f, 0x03,
0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c,
0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

static char mask[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x03,
0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f,
0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f,
0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f,
0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f,
0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f,
0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f,
0xf0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x0f,
0xf0, 0x00, 0xf0, 0x0f, 0xf0, 0x00, 0xf0, 0x0f,
0xf0, 0x00, 0xf0, 0x03, 0xf0, 0x00, 0xf0, 0x03,
0xf0, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x0f,
0xc0, 0xff, 0x3f, 0x3f, 0xc0, 0xff, 0x3f, 0x3f,
0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc,
0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0,
};

It might be a littler easier to imagine what it looks like if you posted a copy of the IMAGE of the cursor. LOL

3 Likes

Yeah I was sitting there waiting for it to finish building, excited that I got something going so fast I expected to take a few days to get going.

It works, a little funky. Needs a bit of work. The selection is way outside of the cursor, the stuff under the bitmap and mask code probably affects this?

Can copy paste code into that cursor maker. Really handy. Thanks a ton dude, it would have taken forever to find what I needed to change without being told exactly what file and exactly what line.

PrtScn wasn’t capturing my cursor so this is a snapshot from vlc of a video from OBS, so poor quality

Hey, that’s kinda neat - looks like a magnifying glass.

The location of the “hotspot” is specified in the cursor data. You assigned that bitmap and mask data to a structure. Two members are small_hotx and small_hoty. I’m guessing you’d want to assign 7 to both of them (top-left corner is 0,0) to put it in the center. And 15 and 15 to big_hotx and big_hoty while you are at it.

1 Like

Yeah that’s what it’s set to I didn’t change it. The whole thing is way bigger on all sides, and it’s no different in the normal beta either. I guess thats just the way it is.

What I mean is, if I single click, way far away from a vert, like the same distance away as the size of the 3dcursor, it selects it. Works fine, always selects the closest vert when there’s a bunch of them close together.

Wouldn’t mind turning down the… Deadzone? Alivezone? On the select tool for when I want to click empty space to deselect. Low on the list of things.

Going to make some cursors tomorrow, using the whole 16x16 space since I know how to place the hotspot now