sioyek icon indicating copy to clipboard operation
sioyek copied to clipboard

Override default key bindings, not add to them

Open nzeh opened this issue 1 year ago • 5 comments

I'm really liking sioyek. What I'm trying to do now is to add completely custom keybindings that override the default ones. It seems to me that the bindings in keys_user only add to the existing ones. Is there a way to replace existing ones?

I have a partial answer, but it's not good enough for what I'm trying to do: If I want to rebind key to a new command, all I have to do is add a line

to my config. Here is where it gets weird: In the default config 'v' stands for visual select. I am trying to make this a prefix to mean "View something". Like "View portal window", "View preview", ... I want to have bindings like 'vp', 'v', ... for them, in the same spirit as 'gg', ... If I just add bindings for 'vp', ..., then they never get executed because the moment I press 'v', it gets interpreted as "enter visual select mode", not as a prefix. I tried to first unbind 'v' using 'noop v'. This works to no longer trigger select mode, but it still doesn't allow me to use 'v' as a prefix key. I guess it is now explicitly bound to 'noop', which does nothing.

Is there currently a way to achieve what I want? If not, can a future version include some mechanism to delete existing bindings? This would be awesome.

nzeh avatar Nov 10 '24 18:11 nzeh

I think this is already fixed in the development branch.

ahrm avatar Nov 10 '24 18:11 ahrm

Ah ok. Thanks. I'll have to install that one then. Any prediction when this will become stable?

nzeh avatar Nov 10 '24 18:11 nzeh

Unfortunately no.

ahrm avatar Nov 10 '24 18:11 ahrm

That's fine. Thanks for sharing sioyek with the world.

nzeh avatar Nov 10 '24 21:11 nzeh

I think this is already fixed in the development branch.

~~Using the development branch, still doesn't appear to be working. My specific usecase:~~

I'm binding move_right to o then binding open_document to x.

I would expect open_document to be overwritten, and move_right to stay. What happens is both o and x are bound to open_document and o is bound to move_right. When pressing o, it only activates open_document.

I have tried multiple position orders in keys_user.config as well as using the noop binding. The former has no effect and the latter only completely disables the key, which is not what I want.

Edit: fixed issue, seemed to be a comment interfering. For others, I am defining move_right first and open_document second, no noop.

7910f6ba7ee4 avatar Jan 24 '25 16:01 7910f6ba7ee4