2013-02-02 10 views
5

मैं विकलांग बच्चों के साथ काम कर रहा हूं, जिनके पास सेरेब्रल पाल्सी है। एक बच्चे के पास ठीक मोटर नियंत्रण सीमित है, इसलिए वह वर्तमान में माउस को नियंत्रित करने के लिए जॉयस्टिक का उपयोग करती है, और इसकी ट्रैवर्स दर बहुत कम है। यह उसके लिए अच्छा काम करता है, क्योंकि वह स्क्रीन पर सभी बटन क्लिक कर सकती है, लेकिन मुझे लगता है कि हम बेहतर कर सकते हैं - जब वह पूरी स्क्रीन को पार करना चाहती है तो ऐसा करने में उम्र लगती है (लगभग 10 सेकंड)।माउस की दर सेटिंग्स को ओवरराइड करें। अपना खुद का माउस रेट एल्गोरिदम बनाना

मेरी परिकल्पना यह है कि उसका दिमाग ठीक है, और केवल उसका मोटर नियंत्रण खराब है। यदि यह सच है, तो मेरा मानना ​​है कि एक माउस जो कम गति से शुरू हुआ, लेकिन लगातार त्वरण का अनुभव करता है, उसके लिए बेहतर होगा, क्योंकि यह पूरी गति को पार करते समय गति उठाएगा और जल्दी हो जाएगा। यदि यह काम करता है, तो हम बड़ी संख्या में अक्षम लोगों के लिए पीआईडी ​​नियंत्रण, और गति/त्वरण सेटिंग को बदल सकते हैं, उनकी पहुंच तेज कर सकते हैं और इसलिए उनके सीखने और विकास।

लेकिन मुझे यह बनाने का सबसे अच्छा तरीका नहीं पता - सभी सुझाव, विचार, लिंक और टिप्स आपका स्वागत है।

शुरू करने के लिए मैंने प्रोसेसिंग और जावा का उपयोग करने और कर्सर को नियंत्रित करने के लिए माउस लिस्टर और रोबोट का उपयोग करने का प्रयास किया है। मुझे विश्वास नहीं है कि यह सबसे अच्छा तरीका है, क्योंकि मैं कर्सर की स्थिति पढ़ रहा हूं और फिर इसे लिख रहा हूं, इसलिए मेरे सर्वोत्तम प्रयास अभी भी कर्सर को चारों ओर कूदते हैं, और चिकनी गति नहीं होती है। क्या यह जावा में प्राप्त करने योग्य है? क्या मुझे किसी प्रकार के ड्राइवर का उपयोग कर यूएसबी से माउस इनपुट पढ़ने की ज़रूरत है, और उसके बाद कर्सर की साजिश को स्क्रीन पर बदलना चाहिए?

मैंने कुछ प्रभाव डालने के लिए कुछ वीडियो बनाए हैं जो मैं लाने की कोशिश कर रहा हूं।

स्थिति यथास्थिति http://www.youtube.com/watch?v=3ZhQCg5DJt8

नए व्यवहार मैं चाहता हूँ (माउस को तेज करता है) http://www.youtube.com/watch?v=JcBK_ZCFGPs

(मेरी चित्रण तीर कुंजी बंद कर्सर गाड़ी चला रहा है) करता है, तो यह किसी भी फायदा नहीं है, प्रसंस्करण कोड मैं का इस्तेमाल किया

स्थिति यथास्थिति डेमो:

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--; 
    } 
} 
उन क़ौम नीचे में कॉपी किया जाता है बनाने के लिए

वांछित व्यवहार:

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; 
    } 
} 

और DotGame कोड वे दोनों संदर्भ:

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); 
} 

अग्रिम धन्यवाद

+0

क्या आपने जॉयस्टिक पर एक बटन का उपयोग आंदोलन को गति देने के लिए किया है। उदाहरण के लिए MouseKeys का उपयोग करते समय Ctrl + तीर माउस को तेज़ी से ले जाता है। इसी तरह कुछ है कि यह कूद अगर जरूरत हो, लेकिन अभी भी बना सकता है कम गति ट्यूनिंग की आवश्यकता है? – cjds

+0

सुझाव के लिए धन्यवाद। प्रश्न में छात्र एक ही समय में अपने हाथों से एक चीज कर सकते हैं, इसलिए मैं आशा करता हूं कि वह एक बार में दो चीजें करने में सक्षम न हो। जैसे मैं कहता हूं, मुझे लगता है कि उसका मस्तिष्क ठीक है, लेकिन इसकी मांसपेशियों में बहुत सारी चीजें हैं जो चीजों को वास्तव में मुश्किल बनाती हैं। – samjewell

+1

मैं एक झटका की तरह आवाज नहीं करना चाहता, लेकिन क्या यह एक प्रोग्रामिंग प्रश्न है जिसे आप उत्तर देना चाहते हैं, या आप ऐसा करने के सर्वोत्तम तरीके से चर्चा करने की कोशिश कर रहे हैं? और फिर एक रचनात्मक नोट पर: इसे "अपने प्रोग्राम" के लिए हल न करें, लेकिन इनपुट डिवाइस के लिए इसे हल करें। जॉयस्टिक आग प्रति सेकंड अधिक डेल्टा बनाओ, यह कितनी देर तक आयोजित की गई है (आर्डिनो के साथ अपेक्षाकृत सरल), और "जावा में इसे कैसे करें" की समस्या गायब हो जाती है, क्योंकि अब आपके पास सभी कार्यक्रमों के लिए एक असामान्य समाधान है सभी ऑपरेटिंग सिस्टम पर। –

उत्तर

0

के रूप में कार्ल का सुझाव दिया, मेरा मानना ​​है कि माउस बनाने का सबसे अच्छा जवाब कम वास्तव में है इस व्यवहार, कूद व्यवहार के कुछ प्रकार है कि माउस काफी तुम कहाँ जाने की जरूरत है, फिर वहाँ से जॉयस्टिक का उपयोग के करीब मिल जाएगा है।

मुझे पता है कि ऑटोआईटीवी 3 नामक एक प्रोग्राम इस तरह की चीज कर सकता है। आप इसे विशेष हॉटकी को पहचानने के लिए सेट अप कर सकते हैं, फिर उस हॉटकी को माउस को जो भी क्षेत्र आप चाहते हैं उसे ले जाएं।

आदेश इस के लिए उपयोगी HotKeySet, MouseMove, और समारोह/EndFunc हैं।

संबंधित मुद्दे