W jaki sposób w bash można sprawdzić, czy określony klawisz na klawiaturze jest naciśnięty ?
Próbowałem za pomocą polecenia read z bardzo krótkim czasem oczekiwania:
Kod: Zaznacz cały
read -n 1 -t 0.000001 key;
Pozdrawiam,
Artur
Kod: Zaznacz cały
read -n 1 -t 0.000001 key;
Kod: Zaznacz cały
echo -n "Press key:"
stty -echo raw
c=$(dd bs=1 count=1 2>/dev/null )
stty echo -raw
echo " key:$c"
Kod: Zaznacz cały
echo -n "Press key:"
stty -echo raw
c=$(dd bs=1 count=1 2>/dev/null )
stty echo -raw
echo " key:$c"
To już troche lepsze.beluosus pisze:Sprawdź plik /dev/input/by-path/*kbd
Skrypt ma być uruchamiany za pomocą 'aktywatora programu' jako 'program' a nie 'program w terminalu' - więc będzie działał w tle, nie będzie widać terminala.A najlepiej powiedz co chcesz osiągnąć. Opisz cel, a nie narzucone przez siebie (być może złe) kroki do osiągnięcia tego celu.
Uprawnienia uprawnieniami, ale pytanie jak skorzystać z tych danych z poziomu basha...beluosus pisze:Da radę to zrobić w bashu (uprawnienia można zmienić) ale to w sumie bezsensowne.
Nie wiem jak powiązać globalny skrót klawiaturowy ze zmienną bash.Nie możesz do tego użyć globalnych skrótów klawiaturowych?
Nie bardzo rozumiem czego oczekujesz...I wcale nie opisałeś celu tylko znowu kroki z tym, że bardziej szczegółowo.
Kod: Zaznacz cały
xdotool getmouselocation
Kod: Zaznacz cały
if [ $1 = d ]; then
polecenie_1
elif [ $1 = p ]; then
polecenie_2
elif [ $1 = quit ]; then
killall skrypt.sh; exit 0
fi
No właśnie xdotool tego nie potrafi zrobić. Da się za jego pomocą wysłać dowolny znak z klawiatury, natomiast nie jest w stanie sprawdzić czy określony klawisz jest naciśnięty.Dwimenor pisze: A skoro już wspomniałeś o xdotool, to w dokumentacji nie ma nic na temat tego co szukasz?
To jest prosta rzecz, ale nie w bashu. Np w python+pygame wygląda to mniej więcej tak (jakiś stary przykład pisany na podstawie tutoriala do pygame):artur.sc pisze:No właśnie xdotool tego nie potrafi zrobić. Da się za jego pomocą wysłać dowolny znak z klawiatury, natomiast nie jest w stanie sprawdzić czy określony klawisz jest naciśnięty.
Dziwi mnie to i zastanawia, że tak trudno znaleźć narzędzie które zrobi taką prostą rzecz...
Kod: Zaznacz cały
#!/usr/bin/python
#-*- coding: utf-8 -*-
import pygame, sys,os
from pygame.locals import *
pygame.init()
window = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Monkey Fever')
screen = pygame.display.get_surface()
monkey_head_file_name = ("ape.bmp")
monkey_surface = pygame.image.load(monkey_head_file_name)
def pozycja_x(a):
return a+60
def pozycja_y(b):
return b+60
x=0
y=0
screen.blit(monkey_surface, (x, y))
pygame.display.flip()
def zdarzenia(events):
for event in events:
if event.type == QUIT:
sys.exit(0)
elif event.type == KEYDOWN and event.key == K_SPACE:
global x, y
x = pozycja_x(x)
y = pozycja_y(y)
screen.blit(monkey_surface, (x,y))
pygame.display.flip()
else:
pass
while True:
zdarzenia(pygame.event.get())
Kod: Zaznacz cały
xdotool getmouselocation
Kod: Zaznacz cały
iskeypressed d
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 15 gości