Desativando o touchpad quando o teclado está em uso
Esta função é executada pelo utilitário syndaemon
, do pacote xserver-xorg-input-synaptics
. Você pode definir opções como o tempo ocioso, a freqüência de pesquisa, etc (consulte ajuda em tempo de execução ):
Usage: syndaemon [-i idle-time] [-m poll-delay] [-d] [-t] [-k] -i How many seconds to wait after the last key press before enabling the touchpad. (default is 2.0s) -m How many milli-seconds to wait until next poll. (default is 200ms) ... -t Only disable tapping and scrolling, not mouse movements.
Aqui está o código-fonte para syndaemon.c
.
- As funções importantes são
keyboard_activity(...)
emain_loop(...)
-
keyboard_activity
usa a chamada de API XQueryKeyMap para obter o estado atual do teclado (1 bit por chave) e, em seguida, compara é para o último estado (antigo); se forem diferentes, retorna 1 -
main_loop
pollskeyboard_activity
a cadam
milissegundos e, com base no "tempo da última atividade" e sekeyboard_activity
retorna verdadeiro ou falso, decide se deseja desativar ou ativar o touchpad. - A função
dp_get_device
ilustra como os dispositivos de entrada X são enumerados; você deve poder modificar isso e a funçãokeyboard_activity
para também verificar qualquer atividade de trackpoint.
-
A ferramenta
xinput
lista dispositivos e IDs, por exemplo "Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)]
-
Você pode obter esse (o ID) por meio do XListInputDevices função
- Depois disso, você deve obter um identificador de dispositivo do ID usando o XOpenDevice
- Em seguida, use a função XQueryDeviceState para obter o coordenadas do ponteiro do TrackPoint; semelhante ao loop existente, você o pesquisa de vez em quando e verifica se as coordenadas foram alteradas (ou seja, o TrackPoint está em uso) e usa isso para ativar ou desativar o touchpad
-
Você pode usar o utilitário
xinput
com a opçãoquery-state
e a ID do dispositivo para verificar se a programação está correta, por exemplo:$ xinput query-state 12 2 classes : ButtonClass button[1]=up button[2]=up button[3]=up button[4]=up button[5]=up button[6]=up button[7]=up ValuatorClass Mode=Relative Proximity=In valuator[0]=854 valuator[1]=867
- Você está interessado nos valores valuator , que são as coordenadas X e Y do TrackPoint
- Veja a
xinput
source para mais dicas -
Para modificar e reconstruir este pacote:
- Obtenha a fonte com
apt-get source...
- Faça suas modificações em
tools/syndaemon.c
- Desative as correções
syndaemon
existentes comentando as linhas118...
e124...
emdebian/patches/series
- Compile seu pacote modificado com
dpkg-buildpackage -us -uc
e os arquivos deb estarão no diretório pai.
- Obtenha a fonte com