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_activityusa 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_looppollskeyboard_activitya cadammilissegundos e, com base no "tempo da última atividade" e sekeyboard_activityretorna verdadeiro ou falso, decide se deseja desativar ou ativar o touchpad. - A função
dp_get_deviceilustra como os dispositivos de entrada X são enumerados; você deve poder modificar isso e a funçãokeyboard_activitypara também verificar qualquer atividade de trackpoint.
-
A ferramenta
xinputlista 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
xinputcom a opçãoquery-statee 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
xinputsource 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
syndaemonexistentes comentando as linhas118...e124...emdebian/patches/series - Compile seu pacote modificado com
dpkg-buildpackage -us -uce os arquivos deb estarão no diretório pai.
- Obtenha a fonte com
