@@ -1698,9 +1698,10 @@ def wrapper(event, *args, **kwargs):
1698
1698
def _binding_name (callback_or_cmd ):
1699
1699
return 'py_kb_{:016x}' .format (hash (callback_or_cmd )& 0xffffffffffffffff )
1700
1700
1701
- def on_key_press (self , keydef , mode = 'force' ):
1701
+ def on_key_press (self , keydef , mode = 'force' , repetition = False ):
1702
1702
"""Function decorator to register a simplified key binding. The callback is called whenever the key given is
1703
- *pressed*.
1703
+ *pressed*. When the ``repetition=True`` is passed, the callback is called again repeatedly while the key is held
1704
+ down.
1704
1705
1705
1706
To unregister the callback function, you can call its ``unregister_mpv_key_bindings`` attribute::
1706
1707
@@ -1720,17 +1721,20 @@ def binding():
1720
1721
def register (fun ):
1721
1722
@self .key_binding (keydef , mode )
1722
1723
@wraps (fun )
1723
- def wrapper (state = 'p-' , name = None , char = None ):
1724
- if state [0 ] in ('d' , 'p' ):
1724
+ def wrapper (state = 'p-' , name = None , char = None , * _ ):
1725
+ if state [0 ] in ('d' , 'p' ) or ( repetition and state [ 0 ] == 'r' ) :
1725
1726
fun ()
1726
1727
return wrapper
1727
1728
return register
1728
1729
1729
1730
def key_binding (self , keydef , mode = 'force' ):
1730
1731
"""Function decorator to register a low-level key binding.
1731
1732
1732
- The callback function signature is ``fun(key_state, key_name)`` where ``key_state`` is either ``'U'`` for "key
1733
- up" or ``'D'`` for "key down".
1733
+ The callback function signature is ``fun(key_state, key_name, key_char, scale, arg)``.
1734
+
1735
+ The key_state contains up to three chars, corresponding to the regex ``[udr]([m-][c-]?)?``. ``[udr]`` means
1736
+ "key up", "key down", or "repetition" for when the key is held down. "m" indicates mouse events, and "c"
1737
+ indicates key up events resulting from a logical cancellation. For details check out the mpv man page.
1734
1738
1735
1739
The keydef format is: ``[Shift+][Ctrl+][Alt+][Meta+]<key>`` where ``<key>`` is either the literal character the
1736
1740
key produces (ASCII or Unicode character), or a symbolic name (as printed by ``mpv --input-keylist``).
@@ -1785,12 +1789,12 @@ def register_key_binding(self, keydef, callback_or_cmd, mode='force'):
1785
1789
raise TypeError ('register_key_binding expects either an str with an mpv command or a python callable.' )
1786
1790
self .command ('enable-section' , binding_name , 'allow-hide-cursor+allow-vo-dragging' )
1787
1791
1788
- def _handle_key_binding_message (self , binding_name , key_state , key_name = None , key_char = None ):
1792
+ def _handle_key_binding_message (self , binding_name , key_state , key_name = None , key_char = None , scale = None , arg = None , * _ ):
1789
1793
binding_name = binding_name .decode ('utf-8' )
1790
1794
key_state = key_state .decode ('utf-8' )
1791
1795
key_name = key_name .decode ('utf-8' ) if key_name is not None else None
1792
1796
key_char = key_char .decode ('utf-8' ) if key_char is not None else None
1793
- self ._key_binding_handlers [binding_name ](key_state , key_name , key_char )
1797
+ self ._key_binding_handlers [binding_name ](key_state , key_name , key_char , scale , arg )
1794
1798
1795
1799
def unregister_key_binding (self , keydef ):
1796
1800
"""Unregister a key binding by keydef."""
0 commit comments