I quite agree that this should remain a plugin.

I'm not sure how using the object would help things though, that just
looks over complicated to me.

The advantages of the "key:ctrl-x" style namespaces is that it clearly
indicates the key combo in the binding, and can be used for unbinding.
It can be registered for use with any type of event (not just
keydown/keyup)... click, dblclick, wheel (or whatever it is for wheel
scrolling), etc. - obviously only modifiers are of use in this case
(eg: click.key:shift).

2010/1/5 Rick Waldron <[email protected]>:
> I think what you're doing is interesting, however I dont think it has a
> place in jquery's core. Also, my advice would be to change the arg var type
> from a string with all that syntax-y cruft to an object.
> var handler_rules_obj = {
>    keypress: {
>       set : ['ctrl','shift','z']
>    }
> };
> $(...).bind(handler_rules_obj, function() {
>    ... do redo ...
> })
>
>
>
> On Tue, Jan 5, 2010 at 5:50 PM, Mark Gibson <[email protected]> wrote:
>>
>> It may be easy enough for simple, single key presses. When modifiers
>> are involved it starts to complicate things.
>> Also a lot of people forget to check for modifiers. For example, you
>> may not want Ctrl+Up to act in the same way as Up on its own, but a
>> lot of key press handler code neglects to ensure Up and only Up has
>> been pressed...
>>
>> if ( event.keyCode === $.ui.keyCode.UP )
>> ... should really have been ...
>> if ( event.keyCode === $.ui.keyCode.UP && !(event.metaKey ||
>> event.shiftKey || event.altKey) )
>>
>>
>> Imagine the standard redo key combo ( Ctrl+Shift+Z ), would you rather see
>> ...
>>
>> $(...).bind('keypress', function(event) {
>>   if ( event.metaKey && event.shiftKey && !event.altKey &&
>> event.keyCode === 90 ) {
>>      ... do redo ...
>>   }
>> })
>>
>> or
>>
>> $(...).bind('keypress.key:ctrl-shift-z', function() {
>>    ... do redo ...
>> })
>>
>> Using namespace bindings like this also gives you the ability to
>> unbind individual key combos, with the above example I could do
>> this...
>>
>> $(...).unbind('keypress.key:ctrl-shift-z')
>>
>>
>> 2010/1/4 ajpiano <[email protected]>:
>> > This strikes me as almost a little bit too much sugar...to streamline
>> > this type of binding/filtering, I tend to think it might just be
>> > easier to perhaps use the jQuery.ui.keyCode object and move that into
>> > core, perhaps?  I think the idea is to save people needing to do the
>> > keycode lookups, not necessarily complicate the event binding syntax.
>> >
>> > On Jan 2, 7:57 pm, Mark Gibson <[email protected]> wrote:
>> >> I guess it would be possible to initialize the codes array the first
>> >> time it was needed by the combo function, I've never tried profiling
>> >> the code so I don't know if it would really give us much advantage.
>> >> After a quick glance over the code (it's been a while since i've
>> >> looked at it), it may indeed make sense to do that as all that
>> >> initialization would then only happen if a key press occurred on an
>> >> element bound using the "key:..." namespace.
>> >>
>> >> I've pushed the idea to a new branch (completely
>> >> untested):http://github.com/jollytoad/jquery.keys/blob/ondemand/src/keys.core.js
>> >>
>> >> 2010/1/2 Jeremy  Chone <[email protected]>:
>> >>
>> >>
>> >>
>> >> > Thanks Mark, your plugin looks interesting. Do you think it would be
>> >> > possible to do kc(...) initialization on demand?
>> >>
>> >> > On Jan 2, 1:17 am, Mark Gibson <[email protected]> wrote:
>> >> >> Hi Jeremy,
>> >> >> I created a plugin a while ago, very similar to what you are
>> >> >> suggesting, it will only work with jQuery 1.4 though as it uses the
>> >> >> special event registration hooks.
>> >>
>> >> >>http://github.com/jollytoad/jquery.keys/blob/master/src/keys.core.js
>> >>
>> >> >> - Mark Gibson
>> >>
>> >> >> 2010/1/1 Jeremy  Chone <[email protected]>:
>> >>
>> >> >> > Hi,
>> >>
>> >> >> > Any thought has been given on adding filter on event. For example
>> >>
>> >> >> > a) Called when enter will be pressed.
>> >>
>> >> >> > $("#myTextInputField").bind("keypress:enter",function(e){...});
>> >>
>> >> >> > b) Called when a digit is pressed.
>> >>
>> >> >> > $("#myTextInputField").bind("keypress:0-9",function(e){...});
>> >>
>> >> >> > c) Called when mouseenter with the key shift is pressed
>> >>
>> >> >> > $("#myTextInputField").bind("mouseenter:shift",function(e){...});
>> >>
>> >> >> > d) Called when mouseenter with the keys shift and ctrl are pressed
>> >>
>> >> >> >
>> >> >> > $("#myTextInputField").bind("mouseenter:shift&ctrl",function(e){...});
>> >>
>> >> >> > I am not sure this would be the right notation, but it will
>> >> >> > definitely
>> >> >> > simplify some code and make it less error prone.
>> >>
>> >> >> > Jeremy,
>> >>
>> >> >> > --
>> >>
>> >> >> > You received this message because you are subscribed to the Google
>> >> >> > Groups "jQuery Development" group.
>> >> >> > To post to this group, send email to [email protected].
>> >> >> > To unsubscribe from this group, send email to
>> >> >> > [email protected].
>> >> >> > For more options, visit this group
>> >> >> > athttp://groups.google.com/group/jquery-dev?hl=en.
>> >>
>> >> > --
>> >>
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups "jQuery Development" group.
>> >> > To post to this group, send email to [email protected].
>> >> > To unsubscribe from this group, send email to
>> >> > [email protected].
>> >> > For more options, visit this group
>> >> > athttp://groups.google.com/group/jquery-dev?hl=en.
>> >
>> > --
>> >
>> > You received this message because you are subscribed to the Google
>> > Groups "jQuery Development" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > For more options, visit this group at
>> > http://groups.google.com/group/jquery-dev?hl=en.
>> >
>> >
>> >
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "jQuery Development" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/jquery-dev?hl=en.
>>
>>
>>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "jQuery Development" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/jquery-dev?hl=en.
>
>
-- 
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en.


Reply via email to