lehrkraefte:blc:plg:stift

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:plg:stift [2021/03/30 20:58]
Ivo Blöchliger
lehrkraefte:blc:plg:stift [2024/01/20 10:59] (current)
Karlheinz Schubert
Line 1: Line 1:
-====== Probleme mit Kernel 5.8.0-48 und 5.8.0-45 (und evtlfrüher) ======+<hidden Probleme mit Kernel 5.8.0-48 und 5.8.0-45
 +**Das Problem hast sich mit dem neuesten Update gelöst.** Alles funktioniert wieder besten. 
 Mir hat ein Downgrade auf Kernel 5.8.0-30 geholfen. Das Problem ist offenbar bekannt und in neueren Kerneln gelöst. Sollte in zukünftigen Kerneln behoben sein. Mir hat ein Downgrade auf Kernel 5.8.0-30 geholfen. Das Problem ist offenbar bekannt und in neueren Kerneln gelöst. Sollte in zukünftigen Kerneln behoben sein.
 Für das Downgrade sind folgende 3 Packages zu installieren: Für das Downgrade sind folgende 3 Packages zu installieren:
   linux-headers-5.8.0-34 linux-image-5.8.0-34-generic linux-modules-5.8.0-34-generic linux-modules-extra-5.8.0-34-generic   linux-headers-5.8.0-34 linux-image-5.8.0-34-generic linux-modules-5.8.0-34-generic linux-modules-extra-5.8.0-34-generic
 Beim Booten muss der korrekte Kernel in "Advanced Options" ausgewählt werden. Man kann den auch fest verdrahten, ist es mir im Moment aber nicht wert. Beim Booten muss der korrekte Kernel in "Advanced Options" ausgewählt werden. Man kann den auch fest verdrahten, ist es mir im Moment aber nicht wert.
 +</hidden>
  
 ====== Stift bei mehreren Bildschirmen ====== ====== Stift bei mehreren Bildschirmen ======
 Öhhmm... Im System Settings gibt es dazu Einstellung inklusive Keyboard-Shortcuts... Öhhmm... Im System Settings gibt es dazu Einstellung inklusive Keyboard-Shortcuts...
  
-Der Stift wird über die kombinierte Bildschirmbreite gemappt, was natürlich Mist ist. Folgendes Ruby-Script behebt das Problem, wenn der externe Bildschirm rechts vom Laptopbildschirm mit gleicher (Full-HD) Auflösung ist: (mit Option –u aufrufen, um wieder auf einem Bildschirm zu arbeiten): {{lehrkraefte:blc:plg:adjust-pen-for-double-screen.rb}}. +<hidden Alter Hack meinerseits> 
 +Der Stift wird über die kombinierte Bildschirmbreite gemappt, was natürlich Mist ist.  
 + 
 +Folgendes Ruby-Script behebt das Problem, wenn der externe Bildschirm rechts vom Laptopbildschirm mit gleicher (Full-HD) Auflösung ist: (mit Option –u aufrufen, um wieder auf einem Bildschirm zu arbeiten): {{lehrkraefte:blc:plg:adjust-pen-for-double-screen.rb}}. </hidden> 
 + 
 +<hidden Neuerer Hack andererseits> 
 +Der Stift wird über die kombinierte Bildschirmbreite/~höhe gemappt, was natürlich Mist ist.  
 + 
 +Folgendes Python-Script behebt das Problem, indem es den Stift nur auf den TouchScreen des Laptops (eDP-1) mapped:  
 + 
 +{{lehrkreafte:sbt:map-pen.py |}} 
 +<code python> 
 +#!/usr/bin/env -S python3 
 + 
 +import subprocess 
 +import re 
 +import sys 
 + 
 +# configure you devices: 
 +display_id_wayland = "XWAYLAND0" 
 +device_names_wayland = ["xwayland-touch", "xwayland-tablet stylus", "xwayland-tablet eraser", "xwayland-tablet cursor"
 +display_id_x11 = "eDP-1" 
 +device_names_x11 = ["Wacom Pen and multitouch sensor Finger touch", "Wacom Pen and multitouch sensor Pen stylus", "Wacom Pen and multitouch sensor Pen eraser"
 +# end configure 
 + 
 +verbose = False 
 + 
 + 
 +def is_wayland(): 
 +    """check sessiontype (Wayland or X11)""" 
 +    ret_value = cmd("echo $XDG_SESSION_TYPE").lower() 
 +    return ret_value == "wayland\n" 
 + 
 + 
 +def cmd(c): 
 +    """run shell command and return output, if verbose print command and output""" 
 +    print(c) if verbose else None 
 +    res = subprocess.check_output(c, shell=True).decode() 
 +    print(res) if verbose else None 
 +    return res 
 + 
 + 
 +def get_device_id(device_name): 
 +    """get xinput device id for device name""" 
 +    id = re.search(r"id=(\d+)", [l for l in cmd("xinput").split("\n") if re.search(device_name, l)][0]).group(1) 
 +    return int(id) if id else 0 
 + 
 + 
 +def set_xinput_mapping(device_id, display_id): 
 +    cmd(f"xinput map-to-output {device_id} {display_id}"
 + 
 + 
 +if __name__ == "__main__": 
 +    try: 
 +        args = sys.argv[1:
 +        if len(args) > 0 and ("-v" in args or "--verbose" in args): 
 +            verbose = True 
 +        else: 
 +            print("Use -v or --verbose to see xinput output\nSet mappings:"
 +        is_wayland() 
 +        if is_wayland(): 
 +            display_id = display_id_wayland 
 +            device_names = device_names_wayland 
 +        else: 
 +            display_id = display_id_x11 
 +            device_names = device_names_x11 
 +        name_length = max([len(n) for n in device_names]) 
 +        for device_name in device_names: 
 +            device_id = get_device_id(device_name) 
 +            print(f" - Map {device_name:{name_length}} with Id={device_id:02d} to '{display_id}'"
 +            set_xinput_mapping(device_id, display_id) 
 +    except Exception as e: 
 +        print(e) 
 +    print(""
 +    input("Press Enter to continue..."
 + 
 +</code>.  
 + 
 +Mit --verbose (oder -v) aufrufen, um //xinput// Ausgaben zu zeigen. 
 +</hidden>
  • lehrkraefte/blc/plg/stift.1617130701.txt.gz
  • Last modified: 2021/03/30 20:58
  • by Ivo Blöchliger