JoepVanlier / Hackey-Trackey

A LUA tracker plugin for REAPER 5.x and up. Designed to mimick the pattern editor in Jeskola Buzz.
MIT License
130 stars 10 forks source link

"CTRL + - to disable advanced options for this column" doesn't work #95

Closed cjunekim closed 1 year ago

cjunekim commented 1 year ago

Hello,

According to the README.md,

CTRL + +/-  Enable/disable advanced options for this column

Hitting CTRL with Num Plus really enables advanced options for the column. CTRL with ordinary Plus doesn't seem to do anything.

However, hitting CTRL with Num Minus doesn't disable advanced options, but instead plays the transport. Hitting CTRL with ordinary Minus inserts OFF notes to all the channels.

Tested on Window 10, Reaper v6.73, Hackey-Trackey v3.18

cjunekim commented 1 year ago

I think I found the cause of this malbehaviour, but I don't understand that part's true intention.

From tracker.lua file at https://github.com/JoepVanlier/Hackey-Trackey/blob/5a06b89124a1ad8ca9c7348fbb8b19a4e9724016/Tracker/tracker.lua#L1473 and https://github.com/JoepVanlier/Hackey-Trackey/blob/5a06b89124a1ad8ca9c7348fbb8b19a4e9724016/Tracker/tracker.lua#L1524 :

  if keyset == "default" then
    --                    CTRL    ALT SHIFT Keycode
    ......
    keys.playfrom       = { 1,    0,  0,    13 }            -- Ctrl + Enter
    ......  
    keys.showLess       = { 1,    0,  0,    13 }            -- CTRL + -

As you see, the keycodes for playfrom and showLess are the same. It seems like playfrom is handled first and showLess is ignored.

As far as I know, the numpad Minus' keycode is 269. I guess it is somehow handled as if one byte value and hence it overflows and wraps around to 13, which equals to 269-256.

cjunekim commented 1 year ago

After some research, it seems to be Reaper's bug. There are some strange things in gfx_getchar's return value.

There is no other way to discern ctrl+enter and ctrl+-(numpad). There are many other overlaps, for example ctrl+i and ctrl+tab. I believe there are a few dozens.

Hence, I suggest we change the default keymapping and choose a different one.

I posted a bug report for this at the reaper forum. https://forum.cockos.com/showthread.php?t=275130

JoepVanlier commented 1 year ago

Good catch! Funny that I never noticed this. What would you suggest as alternative binding?

cjunekim commented 1 year ago

Maybe, ctrl+, and ctrl+. for decrease and increase column, for their duality and left/right metaphor by the keyboard(<> are their shift keys).

keys.showMore       = { 1,    0,  0,    46 }            -- CTRL + .
keys.showLess       = { 1,    0,  0,    44 }            -- CTRL + ,

I confirmed that this key pattern isn't used anywhere in the tracker.lua code.

JoepVanlier commented 1 year ago

Maybe, ctrl+, and ctrl+. for decrease and increase column, for their duality and left/right metaphor by the keyboard(<> are their shift keys).

keys.showMore       = { 1,    0,  0,    46 }            -- CTRL + .
keys.showLess       = { 1,    0,  0,    44 }            -- CTRL + ,

I confirmed that this key pattern isn't used anywhere in the tracker.lua code.

I like that idea. Either that, or switch playFrom to CTRL + ALT + Enter. Do you want to make a PR for it, or should I?

JoepVanlier commented 1 year ago

Decided to go with rebinding PlayFrom instead (see https://github.com/JoepVanlier/Hackey-Trackey/pull/96). Thank you for the bug report. Note that if you prefer your own keyset, you can add a few lines to userkeys.lua to get exactly the keymapping you want. I'm closing this as resolved, but please don't hesitate to let me know if there are further issues!