Merge pull request #477 from doctor64/pointer_info_show

Added status info print and rename some functions
This commit is contained in:
Peter Wu 2019-06-29 18:08:52 +02:00 committed by GitHub
commit a587ae65d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 89 additions and 9 deletions

View File

@ -251,7 +251,7 @@ _D('Wireless Mouse M315')
_D('Wireless Mouse M317') _D('Wireless Mouse M317')
_D('Wireless Mouse M325', protocol=2.0, wpid='400A', _D('Wireless Mouse M325', protocol=2.0, wpid='400A',
settings=[ settings=[
_FS.smooth_scroll(), _FS.hi_res_scroll(),
]) ])
_D('Wireless Mouse M345', protocol=2.0, wpid='4017') _D('Wireless Mouse M345', protocol=2.0, wpid='4017')
_D('Wireless Mouse M350', protocol=1.0, wpid='101C', _D('Wireless Mouse M350', protocol=1.0, wpid='101C',

View File

@ -485,6 +485,43 @@ def get_mouse_pointer_info(device):
'suggest_vertical_orientation': suggest_vertical_orientation 'suggest_vertical_orientation': suggest_vertical_orientation
} }
def get_vertical_scrolling_info(device):
vertical_scrolling_info = feature_request(device, FEATURE.VERTICAL_SCROLLING)
if vertical_scrolling_info:
roller, ratchet, lines = _unpack('!BBB', vertical_scrolling_info[:3])
roller_type = ('reserved', 'standard', 'reserved', '3G', 'micro', 'normal touch pad', 'inverted touch pad', 'reserved')[roller]
return {
'roller': roller_type,
'ratchet': ratchet,
'lines': lines
}
def get_hi_res_scrolling_info(device):
hi_res_scrolling_info = feature_request(device, FEATURE.HI_RES_SCROLLING)
if hi_res_scrolling_info:
mode, resolution = _unpack('!BB', hi_res_scrolling_info[:2])
return mode, resolution
def get_pointer_speed_info(device):
pointer_speed_info = feature_request(device, FEATURE.POINTER_SPEED)
if pointer_speed_info:
pointer_speed_hi, pointer_speed_lo = _unpack('!BB', pointer_speed_info[:2])
#if pointer_speed_lo > 0:
# pointer_speed_lo = pointer_speed_lo
return pointer_speed_hi+pointer_speed_lo/256
def get_lowres_wheel_status(device):
lowres_wheel_status = feature_request(device, FEATURE.LOWRES_WHEEL)
if lowres_wheel_status:
wheel_flag = _unpack('!B', lowres_wheel_status[:1])[0]
wheel_reporting = ('HID', 'HID++')[wheel_flag & 0x01]
return wheel_reporting
def get_hires_wheel(device): def get_hires_wheel(device):
caps = feature_request(device, FEATURE.HIRES_WHEEL, 0x00) caps = feature_request(device, FEATURE.HIRES_WHEEL, 0x00)
mode = feature_request(device, FEATURE.HIRES_WHEEL, 0x10) mode = feature_request(device, FEATURE.HIRES_WHEEL, 0x10)

View File

@ -118,6 +118,11 @@ def feature_range(name, feature, min_value, max_value,
_SMOOTH_SCROLL = ('smooth-scroll', _("Smooth Scrolling"), _SMOOTH_SCROLL = ('smooth-scroll', _("Smooth Scrolling"),
_("High-sensitivity mode for vertical scroll with the wheel.")) _("High-sensitivity mode for vertical scroll with the wheel."))
_LOW_RES_SCROLL = ('low-res-scroll', _("HID++ Scrolling"),
_("HID++ mode for vertical scroll with the wheel."))
_HI_RES_SCROLL = ('hi-res-scroll', _("High Resolution Scrolling"),
_("High-sensitivity mode for vertical scroll with the wheel."))
_HIRES_INV = ('hires-smooth-invert', _("High Resolution Wheel Invert"), _HIRES_INV = ('hires-smooth-invert', _("High Resolution Wheel Invert"),
_("High-sensitivity wheel invert mode for vertical scroll.")) _("High-sensitivity wheel invert mode for vertical scroll."))
_HIRES_RES = ('hires-smooth-resolution', _("Wheel Resolution"), _HIRES_RES = ('hires-smooth-resolution', _("Wheel Resolution"),
@ -184,14 +189,14 @@ def _feature_k375s_fn_swap():
label=_FN_SWAP[1], description=_FN_SWAP[2], label=_FN_SWAP[1], description=_FN_SWAP[2],
device_kind=(_DK.keyboard,)) device_kind=(_DK.keyboard,))
def _feature_smooth_scroll(): def _feature_hi_res_scroll():
return feature_toggle(_SMOOTH_SCROLL[0], _F.HI_RES_SCROLLING, return feature_toggle(_HI_RES_SCROLL[0], _F.HI_RES_SCROLLING,
label=_SMOOTH_SCROLL[1], description=_SMOOTH_SCROLL[2], label=_HI_RES_SCROLL[1], description=_HI_RES_SCROLL[2],
device_kind=(_DK.mouse, _DK.trackball)) device_kind=(_DK.mouse, _DK.trackball))
def _feature_lowres_smooth_scroll(): def _feature_lowres_smooth_scroll():
return feature_toggle(_SMOOTH_SCROLL[0], _F.LOWRES_WHEEL, return feature_toggle(_LOW_RES_SCROLL[0], _F.LOWRES_WHEEL,
label=_SMOOTH_SCROLL[1], description=_SMOOTH_SCROLL[2], label=_LOW_RES_SCROLL[1], description=_LOW_RES_SCROLL[2],
device_kind=(_DK.mouse, _DK.trackball)) device_kind=(_DK.mouse, _DK.trackball))
def _feature_hires_smooth_invert(): def _feature_hires_smooth_invert():
return feature_toggle(_HIRES_INV[0], _F.HIRES_WHEEL, return feature_toggle(_HIRES_INV[0], _F.HIRES_WHEEL,
@ -299,6 +304,7 @@ _SETTINGS_LIST = namedtuple('_SETTINGS_LIST', [
'new_fn_swap', 'new_fn_swap',
'k375s_fn_swap', 'k375s_fn_swap',
'smooth_scroll', 'smooth_scroll',
'hi_res_scroll',
'lowres_smooth_scroll', 'lowres_smooth_scroll',
'hires_smooth_invert', 'hires_smooth_invert',
'hires_smooth_resolution', 'hires_smooth_resolution',
@ -316,6 +322,7 @@ RegisterSettings = _SETTINGS_LIST(
new_fn_swap=None, new_fn_swap=None,
k375s_fn_swap=None, k375s_fn_swap=None,
smooth_scroll=_register_smooth_scroll, smooth_scroll=_register_smooth_scroll,
hi_res_scroll=None,
lowres_smooth_scroll=None, lowres_smooth_scroll=None,
hires_smooth_invert=None, hires_smooth_invert=None,
hires_smooth_resolution=None, hires_smooth_resolution=None,
@ -330,7 +337,8 @@ FeatureSettings = _SETTINGS_LIST(
fn_swap=_feature_fn_swap, fn_swap=_feature_fn_swap,
new_fn_swap=_feature_new_fn_swap, new_fn_swap=_feature_new_fn_swap,
k375s_fn_swap=_feature_k375s_fn_swap, k375s_fn_swap=_feature_k375s_fn_swap,
smooth_scroll=_feature_smooth_scroll, smooth_scroll=None,
hi_res_scroll=_feature_hi_res_scroll,
lowres_smooth_scroll=_feature_lowres_smooth_scroll, lowres_smooth_scroll=_feature_lowres_smooth_scroll,
hires_smooth_invert=_feature_hires_smooth_invert, hires_smooth_invert=_feature_hires_smooth_invert,
hires_smooth_resolution=_feature_hires_smooth_resolution, hires_smooth_resolution=_feature_hires_smooth_resolution,
@ -373,8 +381,8 @@ def check_feature_settings(device, already_known):
feature = getattr(FeatureSettings, field_name)() feature = getattr(FeatureSettings, field_name)()
already_known.append(feature(device)) already_known.append(feature(device))
check_feature(_SMOOTH_SCROLL[0], _F.HI_RES_SCROLLING) check_feature(_HI_RES_SCROLL[0], _F.HI_RES_SCROLLING)
check_feature(_SMOOTH_SCROLL[0], _F.LOWRES_WHEEL) check_feature(_LOW_RES_SCROLL[0], _F.LOWRES_WHEEL)
check_feature(_HIRES_INV[0], _F.HIRES_WHEEL, "hires_smooth_invert") check_feature(_HIRES_INV[0], _F.HIRES_WHEEL, "hires_smooth_invert")
check_feature(_HIRES_RES[0], _F.HIRES_WHEEL, "hires_smooth_resolution") check_feature(_HIRES_RES[0], _F.HIRES_WHEEL, "hires_smooth_resolution")
check_feature(_FN_SWAP[0], _F.FN_INVERSION) check_feature(_FN_SWAP[0], _F.FN_INVERSION)

View File

@ -118,6 +118,41 @@ def _print_device(dev):
print(" HID++ notification") print(" HID++ notification")
else: else:
print(" HID notification") print(" HID notification")
if feature == _hidpp20.FEATURE.MOUSE_POINTER:
mouse_pointer = _hidpp20.get_mouse_pointer_info(dev)
if mouse_pointer:
print(" DPI: %s" % mouse_pointer['dpi'])
print(" Acceleration: %s" % mouse_pointer['acceleration'])
if mouse_pointer['suggest_os_ballistics']:
print(" Use OS ballistics")
else:
print(" Override OS ballistics")
if mouse_pointer['suggest_vertical_orientation']:
print(" Provide vertical tuning, trackball")
else:
print(" No vertical tuning, standard mice")
if feature == _hidpp20.FEATURE.VERTICAL_SCROLLING:
vertical_scrolling_info = _hidpp20.get_vertical_scrolling_info(dev)
if vertical_scrolling_info:
print(" Roller type: %s" % vertical_scrolling_info['roller'])
print(" Ratchet per turn: %s" % vertical_scrolling_info['ratchet'])
print(" Scroll lines: %s" % vertical_scrolling_info['lines'])
if feature == _hidpp20.FEATURE.HI_RES_SCROLLING:
scrolling_mode, scrolling_resolution = _hidpp20.get_hi_res_scrolling_info(dev)
if scrolling_mode:
print(" Hi-res scrolling enabled")
else:
print(" Hi-res scrolling disabled")
if scrolling_resolution:
print(" Hi-res scrolling multiplier: %s" % scrolling_resolution)
if feature == _hidpp20.FEATURE.POINTER_SPEED:
pointer_speed = _hidpp20.get_pointer_speed_info(dev)
if pointer_speed:
print(" Pointer Speed: %s" % pointer_speed)
if feature == _hidpp20.FEATURE.LOWRES_WHEEL:
wheel_status = _hidpp20.get_lowres_wheel_status(dev)
if wheel_status:
print(" Wheel Reports: %s" % wheel_status)
if dev.online and dev.keys: if dev.online and dev.keys:
print (' Has %d reprogrammable keys:' % len(dev.keys)) print (' Has %d reprogrammable keys:' % len(dev.keys))