-
-
Save Grayson/1154126 to your computer and use it in GitHub Desktop.
| on isOptionKeyPressed() | |
| return (do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags() & Cocoa.NSAlternateKeyMask > 1'") is "True" | |
| end isOptionKeyPressed |
Hi guys,
Thanks for your examples. I learned more about detecting key pressed.
@kennethrichardson's code works well. And he explained the founctionality of it. But I found key up, down, left and right will trigger the code. I modified a little bit to avoid this situation. I hope it is helpful for guys who face same case.
It works well in my Mac (Catalina 10.15.7).
Thanks.
on getModifierKeyBits()
set modifierKeysDOWN to {command_down:false, option_down:false, control_down:false, shift_down:false, fn_down:false, capslock_down:false}
set modifierBits to do shell script "/usr/bin/python -c 'import Cocoa; print Cocoa.NSEvent.modifierFlags()'"
set modifierBits to modifierBits * 1
if (modifierBits > 0) then
if (modifierBits > 8388607) then
if (modifierBits < 8388609) then
-- fn key is pressed, subtract it away
set modifierBits to modifierBits - 8388608
set fn_down of modifierKeysDOWN to true
end if
end if
if (modifierBits > 1048575) then
if (modifierBits < 1048577) then
-- command key is pressed, subtract it away
set modifierBits to modifierBits - 1048576
set command_down of modifierKeysDOWN to true
end if
end if
if (modifierBits > 524287) then
if (modifierBits < 524289) then
-- option key is pressed, subtract it away
set modifierBits to modifierBits - 524288
set option_down of modifierKeysDOWN to true
end if
end if
if (modifierBits > 262143) then
if (modifierBits < 262145) then
-- ctrl key is pressed, subtract it away
set modifierBits to modifierBits - 262144
set control_down of modifierKeysDOWN to true
end if
end if
if (modifierBits > 131071) then
if (modifierBits < 131073) then
-- shift key is pressed, subtract it away
set modifierBits to modifierBits - 131072
set shift_down of modifierKeysDOWN to true
end if
end if
if (modifierBits > 65535) then
if (modifierBits < 65537) then
-- capslock key is pressed, subtract it away
set modifierBits to modifierBits - 65536
set capslock_down of modifierKeysDOWN to true
end if
end if
end if
return modifierKeysDOWN
end getModifierKeyBitsI use very often lines that start with do shell script in my scripts. Unfortunately, the script won't compile if it contains the use framweork "Cocoa" line. Is there anything I can do about it? I've read that I need to use an NSTask object instead, but I can't figure out the mechanics of it.
This is the code that doesn't work.
use framework "Cocoa"
do shell script "eval $(/usr/libexec/path_helper -s); sendmidi dev SessionKiano ch 2 on 109 127"
Thank you.
EDIT:
I've found the solution:
According to this, I just needed to add below "use framework..." another line: use scripting additions.
Hurray!
Thanks @jimsmart !