-
-
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 getModifierKeyBits
I 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 !