## Need Help Finishing a Macros Keyboard for Math

Announcements, questions
Rwelk137
Posts: 5
Joined: 25 Jan 2018, 07:46

### Need Help Finishing a Macros Keyboard for Math

So I've always found it super annoying that the default keyboard has never been optimized well for typing out math equations for anything past pre-algebra. In order to use parentheses or exponents you always have to first hit shift. Same with adding anything together, because + is the second function of the = key. So when I hit college, I got a cheap numeric keyboard and spent a weeknight plugging in macros for HIDmacros. Then it just stopped working. Maybe it was a computer update. I don't know, and don't particularly care. Now I've been browsing forum threads learning how to use Lua, and rebuilding my macros. Everything has been working almost great. There's just a few keys left that I gotta nail down, and everything will be good. This is my script so far:

Code: Select all

-- assign logical name to my external keyboard
lmc_device_set_name('MathCros', '2F1C1E94');

-- define callback for whole device
lmc_set_handler('MathCros',function(button, direction)
if (direction == 1) then return end  -- ignore down
if     (button == 97) then lmc_send_keys('sec(')
elseif (button == 98) then lmc_send_keys('csc(')
elseif (button == 99) then lmc_send_keys('cot(')
elseif (button == 100) then lmc_send_keys('sin(')
elseif (button == 101) then lmc_send_keys('cos(')
elseif (button == 102) then lmc_send_keys('tan(')
elseif (button == 103) then lmc_send_keys('log(')
elseif (button == 104) then lmc_send_keys('ln(')
elseif (button == 105) then lmc_send_keys('pi')
elseif (button == 13) then lmc_send_keys('/')

elseif (button == 109) then lmc_send_keys('^{ }')
elseif (button == 107) then lmc_send_keys('\sqrt{ }')
elseif (button == 111) then lmc_send_keys('(')
elseif (button == 106) then lmc_send_keys(')')

else print('Not yet assigned: ' .. button)
end
end)
Running down the list, everything seems pretty normal. A lot of sines, cosines, logarithms, and stuff. It's at the line for the buttons 109 onward that I need help with. The first key is supposed to be a carrot for exponents. The next one is for typing out square roots. Then the final two are for opened and closed parentheses, respectively. If anybody has any idea of how I can make those keys work, it would be great. Preferably even without the closed bracket ( } ), but if that's not doable, I understand. I'm a real noob at coding.
Last edited by Rwelk137 on 25 Jan 2018, 08:50, edited 1 time in total.

Rwelk137
Posts: 5
Joined: 25 Jan 2018, 07:46

### Re: Need Help Finishing a Macros Keyboard for Math

I'm also unsure of the parentheses for all the other keys. When I try the keys in Word and Notepad, the letters are spit out without the ( , and the final two keys do nothing as well. I'm well aware that in most, if not all, coding languages, every sort of bracket or parenthesis needs a buddy at the end, or everything can break. So if those last two macros are undoable, I understand. I'm really trying to get the exponents and square roots to work, 'cause tht's what really started me working on this project. Once again, thanks a lot for all the help anybody can give.

Posts: 567
Joined: 01 Nov 2010, 13:00
Location: Prague, Czech republic
Contact:

### Re: Need Help Finishing a Macros Keyboard for Math

The problem is that ^ is used as Ctrl modifier and {} for special key names.
For this kind of keys I would go for lmc_send_input.
Have a look at http://www.hidmacros.eu/forum/viewtopic.php?f=12&t=475 and try e.g.

Code: Select all

lmc_send_input(16, 0, 0) -- press shift
lmc_send_input(54, 0, 0) -- press 6
lmc_send_input(54, 0, 2) -- release 6
lmc_send_input(16, 0, 2) -- release shift

to send ^

For complete list of vk_codes even use that MSDN link or google "Virtual key codes", e.g. http://cherrytree.at/misc/vk.htm
Petr Medek
LUAmacros author

Rwelk137
Posts: 5
Joined: 25 Jan 2018, 07:46

### Re: Need Help Finishing a Macros Keyboard for Math

Thanks a lot. Turns out, the homework software I'm using only requires me to type sqrt without the \ and brackets to work. Everything else went smoothly. I can automatically call both parentheses, and exponentiate. Here's the code for anybody who wants to use it for themselves if they stumble upon this thread.

Code: Select all

-- assign logical name to macro keyboard
lmc_assign_keyboard('MACROS');

-- define callback for whole device
lmc_set_handler('MACROS',function(button, direction)
if (direction == 1) then return end  -- ignore down
if     (button == 97) then lmc_send_keys('sec(')
elseif (button == 98) then lmc_send_keys('csc(')
elseif (button == 99) then lmc_send_keys('cot(')
elseif (button == 100) then lmc_send_keys('sin(')
elseif (button == 101) then lmc_send_keys('cos(')
elseif (button == 102) then lmc_send_keys('tan(')
elseif (button == 103) then lmc_send_keys('log(')
elseif (button == 104) then lmc_send_keys('ln(')
elseif (button == 105) then lmc_send_keys('pi')
elseif (button == 13) then lmc_send_keys('/')
elseif (button == 107) then lmc_send_keys('sqrt')

elseif (button == 109) then
lmc_send_input(16, 0, 0) -- press shift
lmc_send_input(54, 0, 0) -- press 6
lmc_send_input(54, 0, 2) -- release 6
lmc_send_input(16, 0, 2) -- release shift, types ^
elseif (button == 111) then
lmc_send_input(16, 0, 0) -- press shift
lmc_send_input(57, 0, 0) -- press 9
lmc_send_input(57, 0, 2) -- release 9
lmc_send_input(16, 0, 2) -- release shift, types (
elseif (button == 106) then
lmc_send_input(16, 0, 0) -- press shift
lmc_send_input(48, 0, 0) -- press 0
lmc_send_input(48, 0, 2) -- release 0
lmc_send_input(16, 0, 2) -- release shift, types )

else print('Not yet assigned: ' .. button)
end

lmc.minimizeToTray = true
end)
The last little bit just minimizes the program to the tray as per the instructions here: http://www.hidmacros.eu/forum/viewtopic.php?f=12&t=270 It was something that I really liked from HIDMacros, and I'm glad I can use it with Lua too.

There are a few last quality of life things I want to work on, but this is the code that as far as I'm aware, anybody with a cheap numpad can use. Thanks to u/Trit for their attempt that I could piggyback off of (http://www.hidmacros.eu/forum/viewtopic.php?f=10&t=574), and most of all, thanks to Petr for not only helping me out here, but also for making such a great program!