Blokuojam išorinę klaviatūrą uždarant kompiuterio ekraną

Jei dirbate nešiojamuoju kompiuteriu ir naudojate išorinę klaviatūrą ar pelę – labai tikėtina, kad jūs turite potencialią problemą.

Sąlygos

Jūs neturite problemos bet kuriuo iš šių atvejų:

  • kompiuteris nustatytas suspend‘inti arba hibernate‘inti kai yra uždaromas
  • kompiuteris padaro Lock Screen kai yra uždaromas
  • esant kitiems panašiems nustatymams

Jūs turite problemą, jei pas jus nustatymas yra kaip pas mane:

  • užvožus ekraną kompiuteris nemigdomas, nerakinamas – tik atjungiamas monitoriaus maitinimas
  • atvožus – kompiuteris iš karto yra aktyvus

Pas mane yra būtent tokie nustatymai, nes:

  • nueinam nuo kompiuterio su reikalu (arbatos, nu) – užvožiam (gi taupom elektrą, saugom nuo trupinių ir pan.)
  • sugrįžtam prie kompiuterio – atvožiam ir barškinam toliau

 Eksperimentas

Atlikite mažytį eksperimentą:

  1. Paleiskite tekstinį redaktorių.
  2. Uždarykite nešiojamojo kompiuterio ekraną.
  3. Brūkštelėkit (tiesiogine prasme) klavišais išorinėje klaviatūroje.
  4. Atidarykite ekraną.
  5. Vualia, kai saka chrancūzai: tekstiniame redaktoriuje puikuojasi jūsų rašliava.

Problema

Dirbate prie kelių tūkstančių eilučių programinio kodo. Užvožiat ekraną ir einat į virtuvę arbatos. Atbėgęs katinas užšoka ant klaviatūros ir paspaudžia Ctrl +A , Del , … (toliau ką nors baisaus įrašykit patys Ctrl +S , Ctrl +Q , …)

Sprendimas, kuris man netinka: nueinant nuo kompiuterio paspausti Win +L  (pas mane – Lock Screen). Netinka todėl, kad atidarius kompiuterį bereikalingai gaištamas laikas atrakinimo slaptažodžiui (pramoninių špijonų mano darbo vietoje nėra).

Sprendimas, kuris man tiktų (tiksliau „tinka“ – realizaciją žr. žemiau): užvožiam – blokuoja, atvožiam – dirbam toliau. Katinas ilsisi.

 Sprendimas

Įrenginių blokavimui naudosime xtrlock.

xtrlock locks the X server till the user enters their password at the keyboard.
While  xtrlock  is running, the mouse and keyboard are grabbed and the mouse cursor becomes a padlock.  Output displayed by X programs, and windows put up by new X clients, continue to be visible, and any  new  output  is displayed normally.

Žinau, žinau – programėlė reikalauja slaptažodžio atblokavimui. Bet mes tai išspręsime.

Diegiam xtrlock (pas ką jau įdiegta – nieko baisaus – atnaujinsim):

$ sudo apt-get install xtrlock

Surandam, kas vykdoma uždarant / atidarant ekraną:

$ cat /etc/acpi/events/lidbtn
# /etc/acpi/events/lidbtn
# Called when the user closes or opens the lid

event=button[ /]lid
action=/etc/acpi/lid.sh

Redaguojam skriptą savo mėgiamam redaktoriuje:

$ sudo vim /etc/acpi/lid.sh

Neišsigąskite – į originalų kodą pridėtos tik dvi eilutės (paryškintos):

#!/bin/bash
# TODO:  Change the above to /bin/sh

test -f /usr/share/acpi-support/state-funcs || exit 0

. /usr/share/acpi-support/power-funcs
. /usr/share/acpi-support/policy-funcs
. /etc/default/acpi-support

[ -x /etc/acpi/local/lid.sh.pre ] && /etc/acpi/local/lid.sh.pre

if [ `CheckPolicy` = 0 ]; then exit; fi

grep -q closed /proc/acpi/button/lid/*/state
if [ $? = 0 ]
then
    for x in /tmp/.X11-unix/*; do
	displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
	getXuser;
	if [ x"$XAUTHORITY" != x"" ]; then
	    export DISPLAY=":$displaynum"	    
	    . /usr/share/acpi-support/screenblank

	    # blokuojam klaviatūrą ir pelę
	    xtrlock &

	fi
    done
else

    #atblokuojam klaviatūrą ir pelę
    killall xtrlock

    for x in /tmp/.X11-unix/*; do
	displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
	getXuser;
	if [ x"$XAUTHORITY" != x"" ]; then
	    export DISPLAY=":$displaynum"
	    grep -q off-line /proc/acpi/ac_adapter/*/state
	    if [ $? = 1 ]
		then
		if pidof xscreensaver > /dev/null; then 
		    su $user -c "xscreensaver-command -unthrottle"
		fi
	    fi
	    if [ x$RADEON_LIGHT = xtrue ]; then
		[ -x /usr/sbin/radeontool ] && radeontool light on
	    fi
	    if [ `pidof xscreensaver` ]; then
		su $user -c "xscreensaver-command -deactivate"
	    fi
	    su $user -c "xset dpms force on"
	fi
    done
fi
[ -x /etc/acpi/local/lid.sh.post ] && /etc/acpi/local/lid.sh.post

Manau viskas aišku: uždarius ekraną bus paleista xtrlock &  komanda, atidarius – killall xtrlock .  Galime pakartoti eksperimentą, aprašytą viršuje – turi būti wszystko w porządku.

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.