Lines Matching +full:a +full:- +full:f
2 # SPDX-License-Identifier: GPL-2.0
3 # -*- coding: utf-8 -*-
34 """Represents whether a button is pressed on the stylus"""
43 https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
66 def from_evdev(cls, evdev, test_button) -> "PenState":
99 ) -> "PenState":
112 raise ValueError(f"duplicated BTN_TOUCH in {events}")
120 raise ValueError(f"duplicated BTN_TOOL_* in {events}")
125 raise ValueError(f"duplicated BTN_STYLUS* in {events}")
138 ), f"moving from {self} to {new_state} is forbidden"
142 ), f"moving from {self} to {new_state} is forbidden"
146 def valid_transitions(self) -> Tuple["PenState", ...]:
206 def historically_tolerated_transitions(self) -> Tuple["PenState", ...]:
207 """Following the state machine in the URL above, with a couple of addition
208 for skipping the in-range state, due to historical reasons.
271 def legal_transitions() -> Dict[str, Tuple["PenState", ...]]:
273 we don't have Invert nor Erase bits, so just move in/out-of-range or proximity.
274 … https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
277 "in-range": (PenState.PEN_IS_IN_RANGE,),
278 "in-range -> out-of-range": (
282 "in-range -> touch": (PenState.PEN_IS_IN_RANGE, PenState.PEN_IS_IN_CONTACT),
283 "in-range -> touch -> release": (
288 "in-range -> touch -> release -> out-of-range": (
297 def legal_transitions_with_invert() -> Dict[str, Tuple["PenState", ...]]:
301 … https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
304 "hover-erasing": (PenState.PEN_IS_IN_RANGE_WITH_ERASING_INTENT,),
305 "hover-erasing -> out-of-range": (
309 "hover-erasing -> erase": (
313 "hover-erasing -> erase -> release": (
318 "hover-erasing -> erase -> release -> out-of-range": (
324 "hover-erasing -> in-range": (
328 "in-range -> hover-erasing": (
335 def legal_transitions_with_button() -> Dict[str, Tuple["PenState", ...]]:
337 we now have a button.
340 "hover-button": (PenState.PEN_IS_IN_RANGE_WITH_BUTTON,),
341 "hover-button -> out-of-range": (
345 "in-range -> button-press": (
349 "in-range -> button-press -> button-release": (
354 "in-range -> touch -> button-press -> button-release": (
360 "in-range -> touch -> button-press -> release -> button-release": (
367 "in-range -> button-press -> touch -> release -> button-release": (
374 "in-range -> button-press -> touch -> button-release -> release": (
384 def tolerated_transitions() -> Dict[str, Tuple["PenState", ...]]:
389 "direct-in-contact": (PenState.PEN_IS_IN_CONTACT,),
390 "direct-in-contact -> out-of-range": (
397 def tolerated_transitions_with_invert() -> Dict[str, Tuple["PenState", ...]]:
401 … https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
404 "direct-erase": (PenState.PEN_IS_ERASING,),
405 "direct-erase -> out-of-range": (
412 def broken_transitions() -> Dict[str, Tuple["PenState", ...]]:
414 However, a half broken device might export those transitions.
415 For example, a pen that has the eraser button might wobble between
419 "in-range -> touch -> erase -> hover-erase": (
425 "in-range -> erase -> hover-erase": (
430 "hover-erase -> erase -> touch -> in-range": (
436 "hover-erase -> touch -> in-range": (
441 "touch -> erase -> touch -> erase": (
497 ), f"assert evdev.value[{axis}] ({evdev.value[axis]}) != {value}"
537 physicals = [f.physical_name for f in r]
540 self.fields = [f.usage_name for f in r]
547 print(f"\n *** pen is moving to {state} ***")
676 # now check for a valid transition
685 """Internal method to test against a list of
687 state_list is a list of PenState objects
688 scribble is a boolean which tells if we need
689 to wobble a little the X,Y coordinates of the pen
708 p.y -= 1
717 p.y -= 1
731 we don't have Invert nor Erase bits, so just move in/out-of-range or proximity.
732 … https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
829 … https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
849 … https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states
864 However, a half broken device might export those transitions.
865 For example, a pen that has the eraser button might wobble between
879 # surface, in-range stays to 1, but when
880 # the pen moves in-range gets reverted to 0
902 Pen with two buttons and a rubber end, but which reports
926 print(f"\n *** pen is moving to {state} ***")
1029 print(f"\n *** pen is moving to {state} ***")
1082 # the pen reliably sends in-range events in a normal case (non emulation of eraser mode)
1166 print(f"\n *** pen is moving to {state} ***")
1250 # going out-of-prox: the eraser mode is activated by presenting
1301 # return PenDigitizer('uhid test egalax-capacitive_0eef_7224',
1302 …f 81 02 09 31 75 10 95 01 55 0d 65 33 35 00 46 37 29 26 ff 7f 81 02 05 0d 09 55 25 08 75 08 95 01 …
1309 # return PenDigitizer('uhid test egalax-capacitive_0eef_72fa',
1310 …f 81 02 09 31 75 10 95 01 55 0d 65 33 35 00 46 87 13 26 ff 7f 81 02 05 0d 09 55 25 08 75 08 95 01 …
1317 # return PenDigitizer('uhid test egalax-capacitive_0eef_7336',
1318 …f 81 02 09 31 75 10 95 01 55 0d 65 33 35 00 46 c2 18 26 ff 7f 81 02 05 0d 09 55 25 08 75 08 95 01 …
1325 # return PenDigitizer('uhid test egalax-capacitive_0eef_7337',
1326 …f 81 02 09 31 75 10 95 01 55 0d 65 33 35 00 46 c3 0e 26 ff 7f 81 02 05 0d 09 55 25 08 75 08 95 01 …
1333 # return PenDigitizer('uhid test egalax-capacitive_0eef_7349',
1334 …f 81 02 09 31 75 10 95 01 55 0d 65 33 35 00 46 37 29 26 ff 7f 81 02 05 0d 09 55 25 08 75 08 95 01 …
1341 # return PenDigitizer('uhid test egalax-capacitive_0eef_73f4',
1342 …f 81 02 09 31 75 10 95 01 55 0d 65 33 35 00 46 23 2c 26 ff 7f 81 02 05 0d 09 55 25 08 75 08 95 01 …
1350 …f 75 10 95 02 81 02 c0 c0 05 0d 09 04 a1 01 85 30 09 22 a1 02 09 42 15 00 25 01 75 01 95 01 81 02 …
1358 …f 75 10 55 0e 65 11 09 30 35 00 46 1e 19 81 02 26 ff 3f 09 31 35 00 46 be 0f 81 02 26 ff 3f c0 a1 …
1367 …f 75 10 55 0d 65 00 09 30 35 00 46 00 00 81 02 26 ff 3f 09 31 35 00 46 00 00 81 02 26 ff 3f 05 0d …
1376 …f 75 10 55 0d 65 00 09 30 35 00 46 00 00 81 02 26 ff 3f 09 31 35 00 46 00 00 81 02 26 ff 3f 05 0d …
1390 …f 75 05 09 51 81 02 05 01 55 0e 65 11 35 00 75 10 95 02 46 c8 0a 26 6f 08 09 30 81 02 35 00 35 00 …
1397 …f 75 05 09 51 81 02 05 01 55 0e 65 11 35 00 75 10 95 01 46 00 0a 26 ff 0f 09 30 81 02 09 00 81 03 …
1405 …f 09 29 85 29 b1 02 95 1f 09 2a 85 2a b1 02 95 3e 09 2b 85 2b b1 02 95 fe 09 2c 85 2c b1 02 96 fe …
1413 …f 09 29 85 29 b1 02 95 1f 09 2a 85 2a b1 02 95 3e 09 2b 85 2b b1 02 95 fe 09 2c 85 2c b1 02 96 fe …
1421 …f 09 29 85 29 b1 02 95 1f 09 2a 85 2a b1 02 95 3e 09 2b 85 2b b1 02 95 fe 09 2c 85 2c b1 02 96 fe …
1429 …f 09 29 85 29 b1 02 95 1f 09 2a 85 2a b1 02 95 3e 09 2b 85 2b b1 02 95 fe 09 2c 85 2c b1 02 96 fe …
1437 …f 09 29 85 29 b1 02 95 1f 09 2a 85 2a b1 02 95 3e 09 2b 85 2b b1 02 95 fe 09 2c 85 2c b1 02 96 fe …
1445 …f 07 09 30 81 02 26 80 0c 46 77 04 09 31 81 02 05 0d c0 09 22 a1 02 09 42 25 01 75 01 95 01 81 02 …
1460 …f 81 02 26 ff 00 75 08 55 0f 65 11 35 00 45 ff 09 48 81 02 09 49 81 02 09 30 81 02 95 01 05 01 a4 …
1469 …f 09 30 75 07 81 42 95 01 75 08 09 51 81 02 75 10 05 01 26 04 20 46 e6 09 09 30 81 02 26 60 15 46 …
1480 …46 ff 34 26 ff 7f 81 02 09 31 46 20 21 26 ff 7f 81 02 b4 09 30 45 00 26 ff 3f 81 42 09 3d 15 81 25…
1491 "uhid test XPPen Artist 24 28bd 093a",
1492 …46 f0 50 26 ff 7f 81 02 09 31 46 91 2d 26 ff 7f 81 02 b4 09 30 45 00 26 ff 1f 81 42 09 3d 15 81 25…
1498 hid_bpfs = [("Huion__Kamvas-Pro-19.bpf.o", True)]
1503 …a 09 20 a1 01 09 42 09 44 09 43 09 3c 09 45 15 00 25 01 75 01 95 06 81 02 09 32 75 01 95 01 81 02 …