Add the missing mouse triggers click (-2) and double-click (-3)

This commit is contained in:
pagedown 2022-01-19 14:12:39 +08:00
parent ff1efebf70
commit 7bf7cc284d
No known key found for this signature in database
GPG Key ID: E921CF18AC8FF6EB
2 changed files with 19 additions and 6 deletions

View File

@ -20,10 +20,9 @@ from .constants import (
) )
from .fast_data_types import Color, num_users from .fast_data_types import Color, num_users
from .options.types import Options as KittyOpts, defaults from .options.types import Options as KittyOpts, defaults
from .options.utils import MouseMap from .options.utils import MouseMap, SequenceMap, mouse_button_map, mouse_trigger_count_map
from .rgb import color_as_sharp from .rgb import color_as_sharp
from .types import MouseEvent, SingleKey from .types import MouseEvent, SingleKey
from .typing import SequenceMap
ShortcutMap = Dict[Tuple[SingleKey, ...], str] ShortcutMap = Dict[Tuple[SingleKey, ...], str]
@ -53,6 +52,18 @@ def mod_to_names(mods: int) -> Iterator[str]:
yield name yield name
def mouse_button_num_to_name(num: int) -> str:
button_map = {v: k for k, v in mouse_button_map.items()}
name = f'b{num+1}'
return button_map.get(name, name)
def mouse_trigger_count_to_name(count: int) -> str:
trigger_count_map = {str(v): k for k, v in mouse_trigger_count_map.items()}
k = str(count)
return trigger_count_map.get(k, k)
def print_shortcut(key_sequence: Iterable[SingleKey], defn: str, print: Callable[..., None]) -> None: def print_shortcut(key_sequence: Iterable[SingleKey], defn: str, print: Callable[..., None]) -> None:
from .fast_data_types import glfw_get_key_name from .fast_data_types import glfw_get_key_name
keys = [] keys = []
@ -99,8 +110,8 @@ def compare_mousemaps(final: MouseMap, initial: MouseMap, print: Callable[..., N
changed = {k for k in set(final) & set(initial) if final[k] != initial[k]} changed = {k for k in set(final) & set(initial) if final[k] != initial[k]}
def print_mouse_action(trigger: MouseEvent, defn: str) -> None: def print_mouse_action(trigger: MouseEvent, defn: str) -> None:
names = list(mod_to_names(trigger.mods)) + [f'b{trigger.button+1}'] names = list(mod_to_names(trigger.mods)) + [mouse_button_num_to_name(trigger.button)]
when = {-1: 'repeat', 1: 'press', 2: 'doublepress', 3: 'triplepress'}.get(trigger.repeat_count, trigger.repeat_count) when = mouse_trigger_count_to_name(trigger.repeat_count)
grabbed = 'grabbed' if trigger.grabbed else 'ungrabbed' grabbed = 'grabbed' if trigger.grabbed else 'ungrabbed'
print('\t' + '+'.join(names), when, grabbed, defn) print('\t' + '+'.join(names), when, grabbed, defn)

View File

@ -42,6 +42,8 @@ character_key_name_aliases_with_ascii_lowercase: Dict[str, str] = character_key_
for x in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': for x in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
character_key_name_aliases_with_ascii_lowercase[x] = x.lower() character_key_name_aliases_with_ascii_lowercase[x] = x.lower()
sequence_sep = '>' sequence_sep = '>'
mouse_button_map = {'left': 'b1', 'middle': 'b3', 'right': 'b2'}
mouse_trigger_count_map = {'doubleclick': -3, 'click': -2, 'release': -1, 'press': 1, 'doublepress': 2, 'triplepress': 3}
FuncArgsType = Tuple[str, Sequence[Any]] FuncArgsType = Tuple[str, Sequence[Any]]
func_with_args = KeyFuncWrapper[FuncArgsType]() func_with_args = KeyFuncWrapper[FuncArgsType]()
DELETE_ENV_VAR = '_delete_this_env_var_' DELETE_ENV_VAR = '_delete_this_env_var_'
@ -1054,13 +1056,13 @@ def parse_mouse_map(val: str) -> Iterable[MouseMapping]:
obutton = parts[0].lower() obutton = parts[0].lower()
mods = 0 mods = 0
try: try:
b = {'left': 'b1', 'middle': 'b3', 'right': 'b2'}.get(obutton, obutton)[1:] b = mouse_button_map.get(obutton, obutton)[1:]
button = getattr(defines, f'GLFW_MOUSE_BUTTON_{b}') button = getattr(defines, f'GLFW_MOUSE_BUTTON_{b}')
except Exception: except Exception:
log_error(f'Mouse button: {xbutton} not recognized, ignoring') log_error(f'Mouse button: {xbutton} not recognized, ignoring')
return return
try: try:
count = {'doubleclick': -3, 'click': -2, 'release': -1, 'press': 1, 'doublepress': 2, 'triplepress': 3}[event.lower()] count = mouse_trigger_count_map[event.lower()]
except KeyError: except KeyError:
log_error(f'Mouse event type: {event} not recognized, ignoring') log_error(f'Mouse event type: {event} not recognized, ignoring')
return return