Flags for onMouseMove
-
does this help?
onMouseMove; flags = 256 onLButtonDown; flags = 258 onLButtonUp; flags = 256 onRButtonDown; flags = 264 onRButtonUp; flags = 256 onRButtonDown; flags = 264 onMouseMove; flags = 264 # misses the up but changes to move flag onMouseMove; flags = 256 onRButtonDown; flags = 264 onRButtonUp; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onLButtonDown; flags = 258 onLButtonUp; flags = 256 onMouseMove; flags = 256 onLButtonDown; flags = 258 onLButtonUp; flags = 256
-
On Mac the flags are a (undocumented in SU) bit-map. Experimentally, 10 (2 decimal) is left button, 1000 (8 decimal) is right button. It's never been clear to me what they meant you do to with a bit-map that isn't documented!
-
Actually, I need the value of flags, for the
onMouseMove
method when the Left button is down.Apparently nothing that has a bit value of 1.
Fredo
-
Fredo, the flags were in there, the flag is 258...
onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 258 #left down starts here onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 258 #left down onMouseMove; flags = 256 #left down released here onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 onMouseMove; flags = 256 Key Tool Deactivated.
-
Thanks very much
On Windows, the bitmask logic for
onMouseMove
is:- Left button down -> 1 (i.e.
flags & 1 == 1
) - Shift down -> 4
- Ctrl down -> 8
- Alt down -> 32
This logic also applies toonLButtonDown
(alwasy contains 1) andonLButtonUp
On Mac, the bitmask logic seems different. The flags always include 256, and the button and modifiers are adding to that:
- Left button down -> 2 (i.e.
flags & 2 == 2
) - Shift down -> ?
- Ctrl down -> ?
- Alt down -> ?
John: would be kind to check what are the value of flags for the 3 modifiers. Also, check the flags on the methods
onLButtonDown
andonLButtonUp
to see if they respect the logic too.Thanks
Fred
- Left button down -> 1 (i.e.
-
hi Fredo it's not so straight forward...
there are two ways to get RButtonDown on a mac and I think they have different flags...
but every mouse in the house has one fault or another...
this one has a broken RButton...I'll update when I fix or buy a new mouse...
Key Tool Activated. 256 = onMouseMove "LButtonDown" 258 = onMouseMove with onLButtonDown "LButtonUP" onKeyDown; Key code; 262144 ( VK_CONTROL ) "RButtonDown" 262409 = onMouseMove with onRButtonDown using control LButton onKeyUp ; Key code; 262144 ( VK_CONTROL ) 264 = onMouseMove with onRButtonDown 256 = onMouseMove onKeyDown; Key code; 524288 ( VK_ALT or VK_MENU ) "LButtonDown" 524578 = onMouseMove with onLButtonDown with modifier "LButtonUP" 524576 = onMouseMove with onRButtonDown using control LButton onKeyUp ; Key code; 524288 ( VK_ALT or VK_MENU ) onKeyDown; Key code; 1048576 ( VK_COMMAND ) "LButtonDown" 1048842 = onMouseMove with onLButtonDown with modifier onKeyDown; Key code; 262144 ( VK_CONTROL ) 1310987 = onMouseMove with onLButtonDown with modifier onKeyUp ; Key code; 262144 ( VK_CONTROL ) 1048842 = onMouseMove with onLButtonDown onKeyUp ; Key code; 1048576 ( VK_COMMAND ) 258 = onMouseMove with onLButtonDown "LButtonUP" Key Tool Deactivated.
-
Here's my output from a modified version of the event reporter John was using. It covers all the combinations of mouse moves with one or both buttons pressed as well as any of the four modifier keys. I added printout of the hex and decimal values of the flags because I find that easier to understand than trying to subtract the decimal values all the time.
Key Tool Activated. "MouseMove" Flags; 256 (0X000100 = 0b000000000000000000000100000000) "LButtonDown" "MouseMove" Flags; 258 (0X000102 = 0b000000000000000000000100000010) "LButtonUP" "RButtonDown" "MouseMove" Flags; 264 (0X000108 = 0b000000000000000000000100001000) "LButtonDown" "RButtonDown" "MouseMove" Flags; 266 (0X00010A = 0b000000000000000000000100001010) "LButtonUP" onKeyDown; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) "MouseMove" Flags; 131328 (0X020100 = 0b000000000000100000000100000000) onKeyUp ; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) onKeyDown; Key code; 262144 ( VK_CONTROL ) "MouseMove" Flags; 262401 (0X040101 = 0b000000000001000000000100000001) onKeyUp ; Key code; 262144 ( VK_CONTROL ) onKeyDown; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) "MouseMove" Flags; 524576 (0X080120 = 0b000000000010000000000100100000) onKeyUp ; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) onKeyDown; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) "MouseMove" Flags; 1048840 (0X100108 = 0b000000000100000000000100001000) onKeyUp ; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) onKeyDown; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) "LButtonDown" "MouseMove" Flags; 131330 (0X020102 = 0b000000000000100000000100000010) "LButtonUP" onKeyUp ; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) onKeyDown; Key code; 262144 ( VK_CONTROL ) "RButtonDown" "MouseMove" Flags; 262409 (0X040109 = 0b000000000001000000000100001001) onKeyUp ; Key code; 262144 ( VK_CONTROL ) onKeyDown; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) "LButtonDown" "MouseMove" Flags; 524586 (0X08012A = 0b000000000010000000000100101010) "LButtonUP" onKeyUp ; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) onKeyDown; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) "LButtonDown" "MouseMove" Flags; 1048842 (0X10010A = 0b000000000100000000000100001010) "LButtonUP" onKeyUp ; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) onKeyDown; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) "RButtonDown" "MouseMove" Flags; 131336 (0X020108 = 0b000000000000100000000100001000) onKeyUp ; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) onKeyDown; Key code; 262144 ( VK_CONTROL ) "RButtonDown" "MouseMove" Flags; 262409 (0X040109 = 0b000000000001000000000100001001) onKeyUp ; Key code; 262144 ( VK_CONTROL ) onKeyDown; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) "RButtonDown" "MouseMove" Flags; 524584 (0X080128 = 0b000000000010000000000100101000) onKeyUp ; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) onKeyDown; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) "RButtonDown" "MouseMove" Flags; 1048840 (0X100108 = 0b000000000100000000000100001000) onKeyUp ; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) onKeyDown; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) "LButtonDown" "RButtonDown" "MouseMove" Flags; 131338 (0X02010A = 0b000000000000100000000100001010) "LButtonUP" onKeyUp ; Key code; 131072 ( VK_SHIFT or CONSTRAIN_MODIFIER_KEY or CONSTRAIN_MODIFIER_MASK ) onKeyDown; Key code; 262144 ( VK_CONTROL ) "RButtonDown" "RButtonDown" "MouseMove" Flags; 262409 (0X040109 = 0b000000000001000000000100001001) onKeyUp ; Key code; 262144 ( VK_CONTROL ) onKeyDown; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) "LButtonDown" "RButtonDown" "MouseMove" Flags; 524586 (0X08012A = 0b000000000010000000000100101010) "LButtonUP" onKeyUp ; Key code; 524288 ( VK_ALT or VK_MENU or COPY_MODIFIER_KEY or COPY_MODIFIER_MASK ) onKeyDown; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) "LButtonDown" "RButtonDown" "MouseMove" Flags; 1048842 (0X10010A = 0b000000000100000000000100001010) "LButtonUP" onKeyUp ; Key code; 1048576 ( VK_COMMAND or ALT_MODIFIER_KEY or ALT_MODIFIER_MASK ) Key Tool Deactivated.
-
Thanks. Very helpful.
Then it means that a portable flag decoding for
onMouseMove
could be#Flags for onMouseMove if (RUBY_PLATFORM =~ /darwin/i) def buttonLDown?(flags) ; flags & 2 == 2 ; end def shiftDown?(flags) ; flags & VK_SHIFT == VK_SHIFT ; end def ctrlDown?(flags) ; flags & VK_CONTROL == VK_CONTROL ; end def altDown?(flags) ; flags & VK_ALT == VK_ALT ; end else def buttonLDown?(flags) ; flags & 1 == 1 ; end def shiftDown?(flags) ; flags & 4 == 4 ; end def ctrlDown?(flags) ; flags & 8 == 8 ; end def altDown?(flags) ; flags & 32 == 32 ; end end
-
fredo,
you probably don't want to use VK_CONTROL on a mac...
256 = onMouseMove
258 = onMouseMove with LButtonDown131072 ( VK_SHIFT )
131330 = onMouseMove with LButtonDown and ( VK_SHIFT )524288 ( VK_ALT )
524578 = onMouseMove with LButtonDown and ( VK_ALT )1048576 ( VK_COMMAND )
1048842 = onMouseMove with onLButtonDown and ( VK_COMMAND )Usage example from Move Tool:
Shift = Lock move to the current inference direction ( VK_SHIFT )
Option = Toggles copy of selection ( VK_ALT )
Command =Toggles autofold of selection ( VK_COMMAND )Control behaves differently depending on the order it is chosen...
262144 ( VK_CONTROL )
262403 = onMouseMove with LButtonDown THEN ( VK_CONTROL )
OR
262409 = onMouseMove with ( VK_CONTROL ) THEN LButtonDown( VK_CONTROL ) THEN LButtonDown will show a context menu...
LButtonDown THEN ( VK_CONTROL ) will NOT...john
-
Thanks again.
Then, with some luck, the following portable code should make it on PC and Mac
def buttonLDown?(flags) ; flags & MK_LBUTTON == MK_LBUTTON ; end def shiftDown?(flags) ; flags & CONSTRAIN_MODIFIER_MASK == CONSTRAIN_MODIFIER_MASK ; end #shift def ctrlDown?(flags) ; flags & COPY_MODIFIER_MASK == COPY_MODIFIER_MASK ; end #Ctrl (PC) or Command (Mac) def altDown?(flags) ; flags & ALT_MODIFIER_MASK == ALT_MODIFIER_MASK ; end #Alt (PC) or Ctrl(Mac)
Fredo
-
write a test with some puts and I'll test it...
john
-
@driven said:
write a test with some puts and I'll test it...
john
Thanks in advance. I thought initially that the question was resolved somewhere in the forum, but could not find it (and it is anyway not described in the SU API doc).
Fredo
Advertisement