__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/usr/bin/env python3
#
# Permission to use, copy, modify, distribute, and sell this software
# and its documentation for any purpose is hereby granted without
# fee, provided that the above copyright notice appear in all copies
# and that both that copyright notice and this permission notice
# appear in supporting documentation, and that the name of Red Hat
# not be used in advertising or publicity pertaining to distribution
# of the software without specific, written prior permission. Red
# Hat makes no representations about the suitability of this software
# for any purpose. It is provided "as is" without express or implied
# warranty.
#
# THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
# NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
import argparse
import configparser
import sys
from pathlib import Path
try:
import libevdev
import pyudev
except ModuleNotFoundError as e:
print("Error: {}".format(str(e)), file=sys.stderr)
print(
"One or more python modules are missing. Please install those "
"modules and re-run this tool."
)
sys.exit(1)
class Ansi:
clearline = "\x1B[K"
@classmethod
def up(cls, count):
return f"\x1B[{count}A"
@classmethod
def down(cls, count):
return f"\x1B[{count}B"
@classmethod
def right(cls, count):
return f"\x1B[{count}C"
@classmethod
def left(cls, count):
return f"\x1B[{count}D"
def die(msg):
print(msg, file=sys.stderr)
sys.exit(1)
def select_device():
context = pyudev.Context()
for device in context.list_devices(subsystem="input"):
if device.get("ID_INPUT_TABLET", 0) and (device.device_node or "").startswith(
"/dev/input/event"
):
name = device.get("NAME", None)
if not name:
name = next(
(p.get("NAME") for p in device.ancestors if p.get("NAME")),
"unknown",
)
print("Using {}: {}".format(name or "unknown", device.device_node))
return device.device_node
die("Unable to find a tablet device.")
def record_events(ns):
with open(ns.device_path, "rb") as fd:
d = libevdev.Device(fd)
if not d.absinfo[libevdev.EV_ABS.ABS_MISC]:
die("Device only supports generic styli")
tool_bits = set(
c for c in libevdev.EV_KEY.codes if c.name.startswith("BTN_TOOL_")
)
styli = {} # dict of (type, serial) = proximity_state
current_type, current_serial = 0, 0
in_prox = False
dirty = False
print("Please put tool in proximity")
try:
while True:
for event in d.events():
if event.matches(libevdev.EV_ABS.ABS_MISC):
if event.value != 0:
current_type = event.value
dirty = True
elif event.matches(libevdev.EV_MSC.MSC_SERIAL):
if event.value != 0:
current_serial = event.value & 0xFFFFFFFF
dirty = True
elif event.code in tool_bits:
# print(f'Current prox: {event.value}')
in_prox = event.value != 0
dirty = True
elif event.matches(libevdev.EV_SYN.SYN_REPORT) and dirty:
dirty = False
print(
f"{Ansi.up(len(styli))}{Ansi.left(10000)}{Ansi.clearline}",
end="",
)
styli[(current_type, current_serial)] = in_prox
for s, prox in styli.items():
tid, serial = s
print(
f"Tool id {tid:#x} serial {serial:#x} in-proximity: {prox} "
)
except KeyboardInterrupt:
print("Terminating")
return [s[0] for s in styli.keys()]
def load_data_files():
lookup_paths = (
("./data/",),
("/usr/share/libwacom", "/etc/libwacom"),
("/usr/share/libwacom/", "/etc/libwacom/"),
)
stylusfiles = []
for paths in lookup_paths:
stylusfiles = []
for p in paths:
files = list(Path(p).glob("*.stylus"))
if files:
stylusfiles += files
if any(stylusfiles):
break
else:
die("Unable to find a libwacom.stylus data file")
print(f'Using stylus file(s): {", ".join([str(s) for s in stylusfiles])}')
styli = {}
for path in stylusfiles:
config = configparser.ConfigParser()
config.read(path)
for stylus_id in config.sections():
sid = int(stylus_id, 16)
styli[sid] = config[stylus_id].get("Group", sid)
return styli
def main():
parser = argparse.ArgumentParser(description="Tool to show tablet stylus ids")
parser.add_argument(
"device_path", nargs="?", default=None, help="Path to the /dev/input/event node"
)
ns = parser.parse_args()
if not ns.device_path:
ns.device_path = select_device()
all_styli = load_data_files()
styli = record_events(ns)
groups = []
for sid in styli:
if sid in all_styli:
groups.append(all_styli[sid])
else:
print(f"Unknown stylus id {sid:#x}. New entry needed")
print("Suggested line for .tablet file:")
print(f"Styli={';'.join(set(groups))}")
if __name__ == "__main__":
try:
main()
except PermissionError:
die("Insufficient permissions, please run me as root")
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| X11 | Folder | 0755 |
|
|
| aclocal-1.16 | File | 35.18 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| appstream-compose | File | 26.3 KB | 0755 |
|
| appstream-util | File | 98.3 KB | 0755 |
|
| appstreamcli | File | 118.23 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| autoconf | File | 14.85 KB | 0755 |
|
| autoheader | File | 8.82 KB | 0755 |
|
| autom4te | File | 32.69 KB | 0755 |
|
| automake-1.16 | File | 255.91 KB | 0755 |
|
| autoreconf | File | 26.3 KB | 0755 |
|
| autoscan | File | 16.77 KB | 0755 |
|
| autoupdate | File | 33.22 KB | 0755 |
|
| broadwayd | File | 130.21 KB | 0755 |
|
| bwrap | File | 70.47 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| c89-gcc | File | 428 B | 0755 |
|
| c99-gcc | File | 454 B | 0755 |
|
| cairo-trace | File | 2.95 KB | 0755 |
|
| canberra-gtk-play | File | 18.2 KB | 0755 |
|
| corelist | File | 15.01 KB | 0755 |
|
| cpan | File | 8.16 KB | 0755 |
|
| cpan5.34-x86_64-linux-gnu | File | 8.18 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| curl-config | File | 6.52 KB | 0755 |
|
| dazzle-list-counters | File | 14.13 KB | 0755 |
|
| debconf | File | 2.79 KB | 0755 |
|
| debconf-apt-progress | File | 11.27 KB | 0755 |
|
| debconf-communicate | File | 608 B | 0755 |
|
| debconf-copydb | File | 1.68 KB | 0755 |
|
| debconf-escape | File | 647 B | 0755 |
|
| debconf-set-selections | File | 2.92 KB | 0755 |
|
| debconf-show | File | 1.78 KB | 0755 |
|
| derb | File | 26.88 KB | 0755 |
|
| desktop-file-edit | File | 96.44 KB | 0755 |
|
| desktop-file-install | File | 96.44 KB | 0755 |
|
| desktop-file-validate | File | 76.69 KB | 0755 |
|
| dh_autotools-dev_restoreconfig | File | 1.79 KB | 0755 |
|
| dh_autotools-dev_updateconfig | File | 1.81 KB | 0755 |
|
| dh_girepository | File | 12.88 KB | 0755 |
|
| dumpsexp | File | 18.3 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| enc2xs | File | 40.84 KB | 0755 |
|
| encguess | File | 3.01 KB | 0755 |
|
| envsubst | File | 34.38 KB | 0755 |
|
| fc-cache | File | 22.23 KB | 0755 |
|
| fc-cat | File | 18.23 KB | 0755 |
|
| fc-conflist | File | 14.23 KB | 0755 |
|
| fc-list | File | 14.23 KB | 0755 |
|
| fc-match | File | 14.23 KB | 0755 |
|
| fc-pattern | File | 14.23 KB | 0755 |
|
| fc-query | File | 14.23 KB | 0755 |
|
| fc-scan | File | 14.23 KB | 0755 |
|
| fc-validate | File | 14.23 KB | 0755 |
|
| file | File | 26.56 KB | 0755 |
|
| fribidi | File | 26.99 KB | 0755 |
|
| gapplication | File | 22.21 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| gdbus | File | 54.21 KB | 0755 |
|
| gdbus-codegen | File | 1.99 KB | 0755 |
|
| gdk-pixbuf-csource | File | 14.15 KB | 0755 |
|
| gdk-pixbuf-pixdata | File | 14.13 KB | 0755 |
|
| gdk-pixbuf-thumbnailer | File | 18.21 KB | 0755 |
|
| genbrk | File | 14.78 KB | 0755 |
|
| gencat | File | 26.37 KB | 0755 |
|
| gencfu | File | 14.73 KB | 0755 |
|
| gencnval | File | 26.61 KB | 0755 |
|
| gendict | File | 26.78 KB | 0755 |
|
| genrb | File | 147.91 KB | 0755 |
|
| getconf | File | 34.29 KB | 0755 |
|
| getent | File | 38.65 KB | 0755 |
|
| gettext | File | 34.38 KB | 0755 |
|
| gettext.sh | File | 5.07 KB | 0755 |
|
| gettextize | File | 41.28 KB | 0755 |
|
| gio | File | 102.23 KB | 0755 |
|
| gio-querymodules | File | 18.13 KB | 0755 |
|
| gjs | File | 26.7 KB | 0755 |
|
| gjs-console | File | 26.7 KB | 0755 |
|
| glib-compile-schemas | File | 218.79 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| gobject-query | File | 14.14 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| gpg-error-config | File | 2.04 KB | 0755 |
|
| gpgrt-config | File | 13.11 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| gresource | File | 26.13 KB | 0755 |
|
| gsettings | File | 30.21 KB | 0755 |
|
| gsound-play | File | 18.21 KB | 0755 |
|
| gtk-encode-symbolic-svg | File | 22.24 KB | 0755 |
|
| gtk-launch | File | 18.29 KB | 0755 |
|
| gtk-query-settings | File | 14.13 KB | 0755 |
|
| gtk-update-icon-cache | File | 38.57 KB | 0755 |
|
| gtk4-broadwayd | File | 150.22 KB | 0755 |
|
| gtk4-encode-symbolic-svg | File | 8.58 MB | 0755 |
|
| gtk4-launch | File | 18.29 KB | 0755 |
|
| gtk4-query-settings | File | 14.13 KB | 0755 |
|
| gtk4-rendernode-tool | File | 30.13 KB | 0755 |
|
| hb-info | File | 54.21 KB | 0755 |
|
| hb-ot-shape-closure | File | 46.21 KB | 0755 |
|
| hb-shape | File | 50.21 KB | 0755 |
|
| hb-subset | File | 46.18 KB | 0755 |
|
| hb-view | File | 82.35 KB | 0755 |
|
| hmac256 | File | 18.7 KB | 0755 |
|
| iconv | File | 66.41 KB | 0755 |
|
| icuexportdata | File | 30.98 KB | 0755 |
|
| icuinfo | File | 14.62 KB | 0755 |
|
| ifnames | File | 4.08 KB | 0755 |
|
| instmodsh | File | 4.27 KB | 0755 |
|
| ispell-wrapper | File | 7.05 KB | 0755 |
|
| itstool | File | 67.8 KB | 0755 |
|
| js102 | File | 28.97 MB | 0755 |
|
| js102-config | File | 2.03 KB | 0755 |
|
| json-glib-format | File | 18.38 KB | 0755 |
|
| json-glib-validate | File | 14.24 KB | 0755 |
|
| json_pp | File | 4.88 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| File | 0 B | 0 |
|
|
| ldd | File | 5.32 KB | 0755 |
|
| libgcrypt-config | File | 4.52 KB | 0755 |
|
| libinput | File | 62.35 KB | 0755 |
|
| libnetcfg | File | 15.41 KB | 0755 |
|
| libpng-config | File | 2.41 KB | 0755 |
|
| libpng16-config | File | 2.41 KB | 0755 |
|
| libtool | File | 366.5 KB | 0755 |
|
| libtoolize | File | 128.35 KB | 0755 |
|
| libwacom-list-devices | File | 14.24 KB | 0755 |
|
| libwacom-list-local-devices | File | 18.29 KB | 0755 |
|
| libwacom-show-stylus | File | 5.99 KB | 0755 |
|
| libwacom-update-db | File | 8.99 KB | 0755 |
|
| locale | File | 57.56 KB | 0755 |
|
| localedef | File | 326.96 KB | 0755 |
|
| File | 0 B | 0 |
|
|
| lzmainfo | File | 14.23 KB | 0755 |
|
| m4 | File | 154.37 KB | 0755 |
|
| makeconv | File | 50.89 KB | 0755 |
|
| mako-render | File | 961 B | 0755 |
|
| markdown_py | File | 973 B | 0755 |
|
| mpicalc | File | 22.3 KB | 0755 |
|
| msgattrib | File | 26.38 KB | 0755 |
|
| msgcat | File | 26.38 KB | 0755 |
|
| msgcmp | File | 26.38 KB | 0755 |
|
| msgcomm | File | 26.38 KB | 0755 |
|
| msgconv | File | 22.38 KB | 0755 |
|
| msgen | File | 22.38 KB | 0755 |
|
| msgexec | File | 22.38 KB | 0755 |
|
| msgfilter | File | 34.38 KB | 0755 |
|
| msgfmt | File | 82.59 KB | 0755 |
|
| msggrep | File | 114.46 KB | 0755 |
|
| msginit | File | 66.39 KB | 0755 |
|
| msgmerge | File | 74.41 KB | 0755 |
|
| msgunfmt | File | 34.39 KB | 0755 |
|
| msguniq | File | 22.38 KB | 0755 |
|
| ngettext | File | 34.38 KB | 0755 |
|
| nspr-config | File | 2.58 KB | 0755 |
|
| nss-config | File | 2.31 KB | 0755 |
|
| p11-kit | File | 170.45 KB | 0755 |
|
| pango-list | File | 18.13 KB | 0755 |
|
| pango-segmentation | File | 18.21 KB | 0755 |
|
| pango-view | File | 66.42 KB | 0755 |
|
| pcre-config | File | 2.29 KB | 0755 |
|
| pcre2-config | File | 1.93 KB | 0755 |
|
| pdfattach | File | 22.21 KB | 0755 |
|
| pdfdetach | File | 26.32 KB | 0755 |
|
| pdffonts | File | 22.33 KB | 0755 |
|
| pdfimages | File | 42.33 KB | 0755 |
|
| pdfinfo | File | 62.33 KB | 0755 |
|
| pdfseparate | File | 22.21 KB | 0755 |
|
| pdfsig | File | 42.6 KB | 0755 |
|
| pdftocairo | File | 190.3 KB | 0755 |
|
| pdftohtml | File | 118.23 KB | 0755 |
|
| pdftoppm | File | 34.24 KB | 0755 |
|
| pdftops | File | 34.34 KB | 0755 |
|
| pdftotext | File | 50.34 KB | 0755 |
|
| pdfunite | File | 34.21 KB | 0755 |
|
| perl5.34-x86_64-linux-gnu | File | 14.3 KB | 0755 |
|
| perlbug | File | 44.12 KB | 0755 |
|
| perldoc | File | 125 B | 0755 |
|
| perlivp | File | 10.61 KB | 0755 |
|
| perlthanks | File | 44.12 KB | 0755 |
|
| piconv | File | 8.16 KB | 0755 |
|
| pip | File | 225 B | 0755 |
|
| pip3 | File | 225 B | 0755 |
|
| pip3.10 | File | 225 B | 0755 |
|
| pipewire | File | 14.38 KB | 0755 |
|
| pkgdata | File | 43.53 KB | 0755 |
|
| pldd | File | 22.37 KB | 0755 |
|
| pod2html | File | 4.04 KB | 0755 |
|
| pod2man | File | 14.68 KB | 0755 |
|
| pod2text | File | 10.55 KB | 0755 |
|
| pod2usage | File | 4.01 KB | 0755 |
|
| podchecker | File | 3.57 KB | 0755 |
|
| psl | File | 22.16 KB | 0755 |
|
| psl-make-dafsa | File | 22.21 KB | 0755 |
|
| ptar | File | 3.48 KB | 0755 |
|
| ptardiff | File | 2.58 KB | 0755 |
|
| ptargrep | File | 4.29 KB | 0755 |
|
| pw-cat | File | 138.38 KB | 0755 |
|
| pw-cli | File | 134.38 KB | 0755 |
|
| pw-dot | File | 34.38 KB | 0755 |
|
| pw-dsdplay | File | 138.38 KB | 0755 |
|
| pw-dump | File | 94.38 KB | 0755 |
|
| pw-link | File | 30.38 KB | 0755 |
|
| pw-loopback | File | 18.38 KB | 0755 |
|
| pw-metadata | File | 14.38 KB | 0755 |
|
| pw-mididump | File | 34.38 KB | 0755 |
|
| pw-midiplay | File | 138.38 KB | 0755 |
|
| pw-midirecord | File | 138.38 KB | 0755 |
|
| pw-mon | File | 90.42 KB | 0755 |
|
| pw-play | File | 138.38 KB | 0755 |
|
| pw-profiler | File | 26.38 KB | 0755 |
|
| pw-record | File | 138.38 KB | 0755 |
|
| pw-reserve | File | 26.38 KB | 0755 |
|
| pw-top | File | 30.38 KB | 0755 |
|
| pw-v4l2 | File | 1.95 KB | 0755 |
|
| py3compile | File | 12.89 KB | 0755 |
|
| py3versions | File | 11.63 KB | 0755 |
|
| python3.10 | File | 5.66 MB | 0755 |
|
| recode-sr-latin | File | 14.38 KB | 0755 |
|
| rsvg-convert | File | 5.53 MB | 0755 |
|
| secret-tool | File | 22.21 KB | 0755 |
|
| select-default-iwrap | File | 474 B | 0755 |
|
| session-migration | File | 22.15 KB | 0755 |
|
| shasum | File | 9.75 KB | 0755 |
|
| spa-acp-tool | File | 268.12 KB | 0755 |
|
| spa-inspect | File | 78.48 KB | 0755 |
|
| spa-json-dump | File | 14.3 KB | 0755 |
|
| spa-monitor | File | 14.48 KB | 0755 |
|
| spa-resample | File | 30.6 KB | 0755 |
|
| splain | File | 18.96 KB | 0755 |
|
| streamzip | File | 7.75 KB | 0755 |
|
| tzselect | File | 15.02 KB | 0755 |
|
| uconv | File | 54.83 KB | 0755 |
|
| unxz | File | 82.52 KB | 0755 |
|
| update-desktop-database | File | 22.38 KB | 0755 |
|
| update-mime-database | File | 58.23 KB | 0755 |
|
| xdg-dbus-proxy | File | 50.14 KB | 0755 |
|
| xdg-user-dir | File | 234 B | 0755 |
|
| xdg-user-dirs-update | File | 26.23 KB | 0755 |
|
| xml2-config | File | 1.44 KB | 0755 |
|
| xmlcatalog | File | 22.3 KB | 0755 |
|
| xmllint | File | 78.95 KB | 0755 |
|
| xz | File | 82.52 KB | 0755 |
|
| xzcat | File | 82.52 KB | 0755 |
|
| xzcmp | File | 6.86 KB | 0755 |
|
| xzdiff | File | 6.86 KB | 0755 |
|
| xzegrep | File | 5.87 KB | 0755 |
|
| xzfgrep | File | 5.87 KB | 0755 |
|
| xzgrep | File | 5.87 KB | 0755 |
|
| xzless | File | 1.76 KB | 0755 |
|
| xzmore | File | 2.11 KB | 0755 |
|
| zdump | File | 26.21 KB | 0755 |
|
| zipdetails | File | 58.66 KB | 0755 |
|