Pracuję z dziećmi niepełnosprawnymi, które mają porażenie mózgowe. Jedno dziecko ma ograniczoną kontrolę silnika, więc obecnie używa joysticka do sterowania myszą, a jego szybkość jest ustawiona bardzo nisko. To działa dobrze dla niej, ponieważ może kliknąć wszystkie przyciski na ekranie, ale myślę, że moglibyśmy lepiej - kiedy chce przejść przez cały ekran, zajmuje to wiek (około 10 sekund).zastępuje ustawienia częstości myszy. Tworzenie własnego algorytmu wskaźnika myszy
Moja hipoteza jest taka, że jej mózg jest w porządku, a tylko jej kontrola motoryczna jest słaba. Jeśli to prawda, uważam, że mysz, która wystartowałaaby z niską prędkością, ale doświadczyła stałego przyspieszenia, byłaby dla niej lepsza, ponieważ podnosiłaby prędkość i stawała się szybka podczas przechodzenia przez cały ekran. Jeśli to zadziała, to możemy poprawić ustawienia PID i ustawienie prędkości/przyspieszenia dla dużej liczby osób niepełnosprawnych, co przyspieszy ich dostęp, a przez to ich naukę i rozwój.
Ale ja nie wiem, że najlepszym sposobem, aby zbudować to - wszelkie sugestie, myśli, linki i wskazówki mile widziane.
Przede Próbowałem za pomocą przetwarzania i Java, i za pomocą MouseListener, a robot do sterowania kursorem. Nie jestem przekonany, że jest to najlepszy sposób, ponieważ czytam pozycję kursora, a następnie piszę do niej, więc moje najlepsze próby wciąż przesuwają kursor i nie ma płynnego ruchu. Czy jest to możliwe w Javie? Czy muszę odczytywać dane wejściowe myszy z USB za pomocą jakiegoś sterownika, a następnie zastąpić kreślenie kursora na ekranie moim własnym?
Zrobiłem kilka filmów, aby zilustrować efekt, który próbuję osiągnąć.
Status quo (moja ilustracja jedzie kursor wyłączyć klawisze strzałek) http://www.youtube.com/watch?v=3ZhQCg5DJt8
Nowe zachowanie chcę (mysz przyspiesza) http://www.youtube.com/watch?v=JcBK_ZCFGPs
jeśli to jakieś zastosowanie, kod tworzenie użyłem aby te dema jest kopiowany w poniżej:
status quo demo:
import java.awt.AWTException;
import jav
a.awt.Robot;
Robot robot;
int i = 0;
int j = 0;
void setup() {
setupDotgame();
try {
robot = new Robot();
}
catch (AWTException e) {
e.printStackTrace();
}
robot.mouseMove(screenWidth/2, screenHeight/2);
}
void draw() {
//println(frameCount);
robot.mouseMove(screenWidth/2+8*i, screenHeight/2+8*j);
drawDotgame();
}
void keyPressed() {
if (keyCode == UP) {
j--;
}
else if (keyCode == DOWN) {
j++;
}
else if (keyCode == RIGHT) {
i++;
}
else if (keyCode == LEFT) {
i--;
}
}
pożądanego zachowania:
import java.awt.AWTException;
import java.awt.Robot;
Robot robot;
int i = 0;
int j = 0;
int delta = 8;
int time = 0;
void setup() {
setupDotgame();
try {
robot = new Robot();
}
catch (AWTException e) {
e.printStackTrace();
}
robot.mouseMove(screenWidth/2, screenHeight/2);
}
void draw() {
//println(frameCount);
robot.mouseMove(screenWidth/2+i, screenHeight/2+j);
drawDotgame();
}
void keyPressed() {
if (millis() - time < 90) {
delta += 8;
}
else { delta = 8; }
time = millis();
if (keyCode == UP) {
j-=delta;
}
else if (keyCode == DOWN) {
j+=delta;
}
else if (keyCode == RIGHT) {
i+=delta;
}
else if (keyCode == LEFT) {
i-=delta;
}
}
I kod DotGame oboje referencyjny:
void setupDotgame() {
size(1000, 600);
background(255);
fill(255, 0, 0);
noStroke();
smooth();
drawCircle();
}
void drawDotgame() {
if (get(mouseX, mouseY) != color(255)) {
background(255);
drawCircle();
}
}
void drawCircle() {
int x = round(random(50, width-50));
int y = round(random(50, height-50));
int rad = round(random(20, 80));
ellipse(x, y, rad, rad);
}
góry dzięki
Czy rozważałeś użycie przycisku na joysticku, aby przyspieszyć ruch. Na przykład Ctrl + strzałka sprawia, że mysz szybko się porusza, gdy używasz MouseKeys. Podobnie jest z czymś, co może sprawić, że będzie skakał w razie potrzeby, ale nadal będzie mieć niską prędkość, jakiej wymaga precyzyjne dostrajanie? – cjds
Dzięki za sugestię. Ten uczeń może zrobić tylko jedną rzecz na raz z rękami naprawdę nie jestem tak optymistą, że może zrobić dwie rzeczy naraz. Jak mówię, myślę, że jej mózg jest w porządku, ale wiele spasowania mięśni sprawia, że rzeczy naprawdę trudne. – samjewell
Nie chcę brzmieć jak kretyn, ale jest to kwestia programowania chcesz odpowiedział, czy starasz się dostać dyskusja będzie na najlepszej drodze, aby to zrobić? A potem konstruktywna uwaga: nie rozwiązuj tego dla "twojego programu", ale rozwiązuj dla urządzenia wejściowego. Spraw, aby joystick zwolnił więcej delt na sekundę, w zależności od tego, jak długo jest utrzymywany (stosunkowo prosty w przypadku arduino itp.), A problem "jak to zrobić w Javie" znika, ponieważ masz teraz uniwersalne rozwiązanie dla wszystkich programów we wszystkich systemach operacyjnych. –