# [S][udev-regel] Wird ausgeführt, bewirkt unter X aber nichts

## Finswimmer

Hallo,

ich habe eine Bluetooth Maus gekauft, bei der die Buttons umbenannt werden müssen:

xinput set-button-map "Bluetooth Laser Travel Mouse" 1 2 3 4 5 8 9 6 7

Das funktioniert unter dem User "tobi" sehr gut, da der in X angemeldet ist.

Die Udev-Regel führt folgendes Programm aus:

```
$cat /usr/local/bin/logitech-mouse

#!/bin/bash

su tobi -c "DISPLAY=:0 xinput set-button-map 'Bluetooth Laser Travel Mouse' 1 2 3 4 5 8 9 6 7"

id  > /tmp/test

```

Interessant ist nun, dass dies als User root geht.

Wenn udev das automatisch macht, passiert nichts.

ID bei udev: uid=0(root) gid=0(root) groups=0(root)

ID als root: uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video),104(svnusers)

Und nun bin ich überfragt. Warum gehts nicht? Wo ist mein Denkfehler?

Danke

Tobi

----------

## mv

export XAUTHORITY=~toby/.Xauthority

----------

## Finswimmer

Muss ich das in das Skript schreiben? Oder einmalig als User tobi machen?

Unabhängig davon funktioniert das Remappen aber, wenn ich es als User root ausführe. Also direkt ohne udev.

----------

## mv

 *Finswimmer wrote:*   

> Muss ich das in das Skript schreiben?

 

Ja.

 *Quote:*   

> Unabhängig davon funktioniert das Remappen aber, wenn ich es als User root ausführe.

 

Was heißt "als User root"? - Es kommt auf die Environment-Variablen an. Vermutlich ist bei Dir noch HOME=~tobi.

----------

## Finswimmer

Hm.

Mit udev geht es nicht.

Wenn ich mich frisch auf VT1 als root einlogge und das Skript starte, dann geht es: Die Button werden geändert.

```
#!/bin/bash

export XAUTHORITY=/home/tobi/.Xauthority

DISPLAY=:0 xinput set-button-map 'Bluetooth Laser Travel Mouse' 1 2 3 4 5 8 9 6 7

```

Danke!

----------

## mv

 *Finswimmer wrote:*   

> Hm.
> 
> Mit udev geht es nicht.
> 
> Wenn ich mich frisch auf VT1 als root einlogge und das Skript starte, dann geht es: Die Button werden geändert.

 

Das klingt danach, dass Du pam benutzt: Das hat auch irgendeinen Mechanismus, der die .Xauthority ggf. weiterleitet, und dieser Mechanismus ist vermutlich bei udev nicht aktiv. Da ich pam nicht benutze, kann ich dazu nichts sagen.

----------

## mrsteven

Das muss doch auch direkt über die /etc/xorg.conf (oder /etc/xorg.conf.d) gehen, also irgendwie so:

```
Section "InputClass"

  Identifier "Bluetooth Laser Travel Mice"

  MatchProduct "Bluetooth Laser Travel Mouse"

  MatchDriver "evdev"

  Option "ButtonMapping" "1 2 3 4 5 8 9 6 7"

EndSection

```

Ungetestet, aber vielleicht auch eine Idee, bei der man sich das su-Gefrickel spart.

----------

## Finswimmer

Wow.

Danke, mrsteven!

Ich wollte es deswegen per Udev machen, da ich dachte, dass ich diesen Befehl jedesmal ausführen muss, wenn ich die Maus unter einem laufendem X verbinde.

Es geht aber auch so.

Vielen Dank!

----------

