Hello!
Let me start of with thanking for an excellent program, as it solves many peoples problems, and makes working easier for even more
I was wondering if there is a way to map the "Shift" key to a key on my extra USB numpad. I was thinking that I want the "+" key to function the same way as the "Shift" key works on the normal keyboard. The work I do involves a lot of scrolling, both up and down, as well as left to right, so as it is right now, I have to move my hand from my numpad, up to the normal keyboard, when I want to scroll horisontally, as well as when I want to select multiple files/objects/etc.
I have tried lmc_send_keys('+'), but it does't work with just this modifier, it seems.
I hope someone has a solution, that I just might have overlooked!
Thank you!
Mapp Numpad key to act as "Shift" key
Mapp Numpad key to act as "Shift" key
Best Regards,
/Ronin_pH
/Ronin_pH
Re: Mapp Numpad key to act as "Shift" key
You could try to use lmc_send_input to "virtually" press shift on + down and release on + up. But I'm not sure if it affects other regular keys (why holding shift down "virtually" from macro).
Also I think holding regular (+) key down will result to repeated down events for that key - this is windows feature for non-modifier keys.
Try and see...
Also I think holding regular (+) key down will result to repeated down events for that key - this is windows feature for non-modifier keys.
Try and see...
Petr Medek
LUAmacros author
LUAmacros author
Re: Mapp Numpad key to act as "Shift" key
Hello!
The code I have so far looks like this:
(There is of course more code, as I'm mapping "Cut", "Copy", "Paste" etc to my numpad, but wanted to spare you the long scroll)
I have commented out the part of the code that causes "ignore keydown", as this stopped me being able to use the "UP", "DOWN", "LEFT", "RIGHT" etc by just holding the key down.
So naturally I thought, since I now can just hold those keys down, and they repeat that command, maybe putting the shift-modifier on the "+"-key will work now, but it didn't.
Is there any {SHIFT} function that one could use? (Like the {BACKSPACE}, for example).
Thank you for your help!
The code I have so far looks like this:
Code: Select all
-- assign logical name to macro keyboard
lmc_assign_keyboard('MACROS');
-- list all devices
lmc_print_devices();
lmc_set_handler('MACROS',function(button, direction)
-- if (direction == 1) then return end -- ignore keydown
-- Mapping buttons that are not affected by Num Lock
if (button == 8) then lmc_send_keys('{BACKSPACE}') -- Numpad Key "Backspace" => "Backspace"
elseif (button == 9) then lmc_send_keys('{TAB}') -- Numpad Key "Tab" => "Tab"
elseif (button == 13) then lmc_send_keys('{ENTER}') -- Numpad Key "Enter" => "Enter"
elseif (button == 107) then lmc_send_keys('+') -- Numpad Key "+" => "Shift"?
I have commented out the part of the code that causes "ignore keydown", as this stopped me being able to use the "UP", "DOWN", "LEFT", "RIGHT" etc by just holding the key down.
So naturally I thought, since I now can just hold those keys down, and they repeat that command, maybe putting the shift-modifier on the "+"-key will work now, but it didn't.
Is there any {SHIFT} function that one could use? (Like the {BACKSPACE}, for example).
Thank you for your help!
Best Regards,
/Ronin_pH
/Ronin_pH
Re: Mapp Numpad key to act as "Shift" key
Hello again!
I am now noticing that commenting out the
bit, causes "Copy", "Backspace", and other such commands that I have mapped to happen twice: once on keydown, and once on keyup.
Should I maybe group my commands by direction? As in, first have an if-statement for the direction "key is pressed down", and what commands I want to execute in that state, and then another if-statement for the direction "key is not pressed anymore"?
Thank you for your time and help!
I am now noticing that commenting out the
Code: Select all
if (direction == 1) then return end -- ignore keydown
Should I maybe group my commands by direction? As in, first have an if-statement for the direction "key is pressed down", and what commands I want to execute in that state, and then another if-statement for the direction "key is not pressed anymore"?
Thank you for your time and help!
Best Regards,
/Ronin_pH
/Ronin_pH
Re: Mapp Numpad key to act as "Shift" key
I told you to use lms_send_input, not lmc_send_keys. With lmc_send_input you can send just shift and you can send only down or up event.
Some info here: http://www.hidmacros.eu/forum/viewtopic.php?f=12&t=475
Some info here: http://www.hidmacros.eu/forum/viewtopic.php?f=12&t=475
Petr Medek
LUAmacros author
LUAmacros author
Re: Mapp Numpad key to act as "Shift" key
Yes, I know you said that, that's why I asked the following of you:I told you to use lms_send_input, not lmc_send_keys.
I showed the code I have right now because it works in all aspects, except for making Shift work. And can't see how to get a key press to trigger both "Shift On" and "Shift off" in one key press. Hence the question: should I make some code for when I press the keys down, and start triggering key events there, and then have them to stopp triggering in another piece of code where I release the key?Should I maybe group my commands by direction? As in, first have an if-statement for the direction "key is pressed down", and what commands I want to execute in that state, and then another if-statement for the direction "key is not pressed anymore"?
Best Regards,
/Ronin_pH
/Ronin_pH
Re: Mapp Numpad key to act as "Shift" key
With lmc_send_input you can separate sending press or release only. With lmc_send_keys you can't - it always sends press & release.
If you want + key to send shift down on press and shift up on release then you (of course) need to check direction value in the handler and do appropriate lmc_send_input call.
But I still doubt if this "virtual shift down" will work as reguler (e.g. multiselect with mouse). You'll see...
If you want + key to send shift down on press and shift up on release then you (of course) need to check direction value in the handler and do appropriate lmc_send_input call.
But I still doubt if this "virtual shift down" will work as reguler (e.g. multiselect with mouse). You'll see...
Petr Medek
LUAmacros author
LUAmacros author
Re: Mapp Numpad key to act as "Shift" key
I think that this is the best way to do it. This is how I did it for myself:Ronin_pH wrote: ↑15 Dec 2017, 15:48Hello again!
I am now noticing that commenting out thebit, causes "Copy", "Backspace", and other such commands that I have mapped to happen twice: once on keydown, and once on keyup.Code: Select all
if (direction == 1) then return end -- ignore keydown
Should I maybe group my commands by direction? As in, first have an if-statement for the direction "key is pressed down", and what commands I want to execute in that state, and then another if-statement for the direction "key is not pressed anymore"?
Thank you for your time and help!
Code: Select all
--when keyDown
if (direction == 1) then
if (button == 16) then lmc_send_input(16, 0, 0) --press Shift key
elseif (button == string.byte('A')) then lmc_send_input(65, 0, 0) --press "a" key
else return end
end
--when keyUp
if (direction == 1) then return end --now ignore keyDown
if (button == 16) then lmc_send_input(16, 0, 2) --release Shift key
elseif (button == 65) then lmc_send_input(65, 0, 2) --release "a" key
elseif (button == 55) then lmc_send_input(55, 0, 0) --normal keys. Just do sth once(when keyUp)
else print('Not yet assigned: ' .. button)
end