Skip to content

Commit

Permalink
#199 added toggling tap-to-click using qdbus for kde
Browse files Browse the repository at this point in the history
  • Loading branch information
ldrahnik committed Sep 15, 2024
1 parent f6d761d commit c712310
Showing 1 changed file with 32 additions and 4 deletions.
36 changes: 32 additions & 4 deletions numberpad.py
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,9 @@ def load_keymap_listener_x11():
gsettings_failure_count = 0
gsettings_max_failure_count = 3

qdbus_failure_count = 0
qdbus_max_failure_count = 3

getting_device_via_xinput_status_failure_count = 0
getting_device_via_xinput_status_max_failure_count = 3

Expand Down Expand Up @@ -706,6 +709,31 @@ def gsettingsGet(path, name):
log.debug('Gsettings failed more then: \"%s\" so is not try anymore', gsettings_max_failure_count)


def qdbusSet(value):
global qdbus_failure_count, qdbus_max_failure_count, touchpad

if qdbus_failure_count < qdbus_max_failure_count:
try:
cmd = [
'qdbus',
'org.kde.KWin',
f'/org/kde/KWin/InputDevice/event{touchpad}',
'org.kde.KWin.InputDevice.tapToClick',
str(value)
]
subprocess.call(cmd)
except:
log.exception('qdbus set failed')
qdbus_failure_count+=1
else:
log.debug('Qdbus failed more then: \"%s\" so is not try anymore', qdbus_max_failure_count)

subprocess.call(cmd)


def qdbusSetTouchpadTapToClick(value):
qdbusSet(value)

def gsettingsGetTouchpadSendEvents():
return gsettingsGet('org.gnome.desktop.peripherals.touchpad', 'send-events').decode().rstrip()

Expand Down Expand Up @@ -1164,13 +1192,13 @@ def grab_current_slot():


def set_touchpad_prop_tap_to_click(value):
global touchpad_name, gsettings_failure_count, gsettings_max_failure_count, getting_device_via_xinput_status_failure_count, getting_device_via_xinput_status_max_failure_count, getting_device_via_synclient_status_failure_count, getting_device_via_synclient_status_max_failure_count
global touchpad_name, gsettings_failure_count, gsettings_max_failure_count, qdbus_max_failure_count, qdbus_failure_count, getting_device_via_xinput_status_failure_count, getting_device_via_xinput_status_max_failure_count, getting_device_via_synclient_status_failure_count, getting_device_via_synclient_status_max_failure_count

# 1. priority - gsettings
# 1. priority - gsettings (gnome) or qdbus (kde)
if gsettings_failure_count < gsettings_max_failure_count:
gsettingsSetTouchpadTapToClick(value)
# why is return commented? and is always run also xinput below? Because on KDE is allowed set up without any error but nothing happens
# return
if qdbus_failure_count < qdbus_max_failure_count:
qdbusSetTouchpadTapToClick(value)

# 2. priority - xinput
if getting_device_via_xinput_status_failure_count > getting_device_via_xinput_status_max_failure_count:
Expand Down

0 comments on commit c712310

Please sign in to comment.