Hlavní navigace

Ako opraviť fn klávesu "vypnúť/zapnúť" touchpad pre ASUS K52JE v Crunchbang Waldorf

26. 1. 2014 21:38 (aktualizováno) doomed789

Crunchbang sa ku mne dostal pred nejakým časom úplnou náhodou. Vyskúšal som ho a vzápätí som si ho zamiloval. A vymenil. Smutný príbeh. Pre Ubuntu. Aj keď je Crunchbang celkovo veľmi dobré distro, nie je dokonalé. Po inštalácii som objavil pár nedostatkov a jedným z nich je nefungujúca klávesová skratka pre zapnutie a vypnutie touchpadu. Problém som vyriešil a rozhodol sa podeliť so skúsenosťami aj iným. Snáď to niekomu pomôže, postup sa dá aplikovať aj na iné modely modely notebookov.

 

Poďme teda na to!

 

Zistíme, aký to vlastne máme v notebooku touchpad

 

Najprv si musíme zistiť ID a názov touchpadu. Do terminálu zadáme príkaz:

xinput list

Výpis bude vyzerať nejak takto:

 

Virtual core pointer id=2 [master pointer (3)]


 ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]


 ⎜ ↳ A4TECH USB Device id=10 [slave pointer (2)]


 ⎜ ↳ A4TECH USB Device id=11 [slave pointer (2)]


 ⎜ ↳ ETPS/2 Elantech Touchpad id=14 [slave pointer (2)]


 ⎣ Virtual core keyboard id=3 [master keyboard (2)]


  ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]


  ↳ Power Button id=6 [slave keyboard (3)]


  ↳ Video Bus id=7 [slave keyboard (3)]


  ↳ Sleep Button id=8 [slave keyboard (3)]


  ↳ Asus Laptop extra buttons id=12 [slave keyboard (3)]


  ↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]


  ↳ ACPI Virtual Keyboard Device id=15 [slave keyboard (3)]


  ↳ USB 2.0 Camera id=9 [slave keyboard (3)]

Nás zaujíma riadok, ktorý patrí touchpadu. V našom prípade vidíme, že touchpad sa nazýva ETPS/2 Elantech Touchpad a jeho ID je 14.

 

Vytvoríme si jednoduchý skript

 

#!/bin/bash
if [ $(xinput list-props 14 | grep 'Device Enabled'|awk '{print $4}') = 1 ]; then


 xinput disable 'ETPS/2 Elantech Touchpad'


 notify-send "Touchpad Disabled"


 else


 xinput enable 'ETPS/2 Elantech Touchpad'


 notify-send "Touchpad Enabled"


 fi

Ak máte iný model, jednoducho prepíšete ID a názov touchpadu. Skript si uložíme niekam na disk a vyskúšame. Ak je všetko ok, tak skript skopírujeme do /usr/local/bin a nastavíme chmod

/usr/local/bin# chmod +x mojtp.sh

Zistíme keycode klávesovej skratky Fn+F(1–12)

 

Teraz potrebujeme zistiť keycode Fn kombinácie (v mojom prípade FN+F9). Na to nám dobre poslúži príkaz xev. Zadáme príkaz do terminálu a stlačíme požadovanú klávesu.

Príklad výpisu:

KeyRelease event, serial 35, synthetic NO, window 0x3200001,
 root 0xa8, subw 0x0, time 134912, (196,383), root:(883,524),

 state 0x10, keycode 191 (keysym 0x1008ff81, XF86Tools), same_screen YES,

 XKeysymToKeycode returns keycode: 179

 XLookupString gives 0 bytes: 

 XFilterEvent returns: False
Nás zaujíma keycode, v našom prípade teda 191. Príkazom
printf "0x%x\n" 191 

dostaneme hexa kód 0×bf, ktorý už Openbox akceptuje.

Nabindujeme klávesovú skratku na náš skript

V nastaveniach Crunchbangu (Settings – Openbox – Edit rc.xml) si klávesu nabindujeme na náš skript. Pre Asus K52JE bude kód vyzerať takto:

 

<keybind key="0xbf">


  <action name="Execute">


  <startupnotify>


  <enabled>true</enabled>


  <name>Touchpad</name>


  </startupnotify>


  <command>mojtp.sh</command>


  </action>


  </keybind>

Súbor uložíme. V nastaveniach Crunchbangu (Settings – Openbox – Restart) reštartneme Openbox a máme hotovo. Klávesová skratka by mala fungovať.