কোনও ওয়েবপৃষ্ঠায় মাউসের সাহায্যে কম্পনের অনুকরণ (যেমন পার্কিনসন ডিজিজ থেকে)?


204

আমি এমন একটি ভিত্তির জন্য কাজ করছি যা ইন্টারনেটে অ্যাক্সেসযোগ্যতার জন্য সচেতনতা বাড়ায়। উপস্থাপনার জন্য, আমরা একটি ছোট্ট ওয়ার্কশপ অফার করতে চাই যা মানুষের জন্য বিভিন্ন অক্ষমতা / প্রতিবন্ধকতার অনুকরণ করে। এটি বিশেষত এই উপস্থাপনার জন্য তৈরি একটি ওয়েবসাইটের মাধ্যমে করা হয়।

প্রদর্শিত দুর্বলতার মধ্যে একটির কাঁপুনি হ'ল যার অর্থ হ'ল কাঁপানো, নিয়ন্ত্রণ থেকে নিয়ন্ত্রণের নিয়ন্ত্রণের হাতছানি experien এই দুর্বলতার সাথে মাউস কার্সারটি ঠিকঠাক করা এবং মাউসটির লিঙ্কটি শেষ হওয়ার সময় মাউস বোতামটি টিপানো খুব কঠিন। কিছু প্রবীণ ব্যক্তি এবং রোগে আক্রান্ত মানুষ, যেমন পার্কিনসন, কাঁপুনিতে ভুগতে পারেন।

এখন আমি কোনওভাবেই অনির্দেশ্য উপায়ে মাউস কার্সারটি সরিয়ে ফেলতে চাই, যাতে ছোট বাটনে ক্লিক করা লোকের পক্ষে খুব শক্ত। যেহেতু জাভাস্ক্রিপ্ট মাউস কার্সারটিকে সরাসরি স্থানান্তর করতে দেয় না, আমি এটি অর্জনের জন্য অন্যান্য উপায়ের সন্ধান করছি। আমি নিম্নলিখিত ধারণা নিয়ে এসেছি:

  • মাউস ড্রাইভার / ইউটিলিটি ব্যবহার করে যা মাউস কাঁপানোর অনুকরণ করে।
  • সিএসএসের মাধ্যমে মাউস কার্সারটি আড়াল করুন, মূল কার্সারের (জাভাস্ক্রিপ্ট সহ) একটি কাঁপানো মাউস কার্সারের একটি জিআইএফ অ্যানিমেশন রাখুন এবং তারপরে প্রতি কয়েক সেকেন্ডের জন্য লক্ষ্য লিঙ্কটি ক্লিকযোগ্য মাত্র কয়েক বা এক সেকেন্ডে করুন। এটি অন্তত এমন অনুভূতি দেবে যেন কোনও ব্যক্তি সর্বদা ভুল মুহুর্তে ক্লিক করে।

যদিও প্রথম ধারণাটি বেশ দুর্দান্ত হবে, আমি ম্যাকের জন্য না উইন্ডোজের জন্য, এর মতো একটি সরঞ্জাম খুঁজে পেলাম না। এবং নিজে নিজে এই জাতীয় প্রোগ্রামিং করার কোনও দক্ষতা আমার নেই।

দ্বিতীয় ধারণাটি কিছুটা আনাড়ি বলে মনে হচ্ছে তবে এটি পছন্দসই প্রভাব অর্জন করবে বলে আমি মনে করি।

কারও কি অন্য ধারণা আছে?



2
বিকাশকারী.মোজিলা.অর্গ / en-US/docs/Web/API/… দেখার চেষ্টা করুন । ডেমোর সরাসরি লিঙ্কটি হ'ল mdn.github.io/pointer-lock-demo । ব্যবহারকারীদের একটি ক্যানভাসে ক্লিক করা এবং পৃষ্ঠাকে মাউস কার্সারটি অক্ষম করার অনুমতি দেওয়ার উদ্দেশ্যে আপনার উদ্দেশ্যটি যতক্ষণ না গ্রহণযোগ্য হয় ততক্ষণ আপনি নিজের কোডটি বেস করতে পারেন
অ্যারিস্টোক্রেটস

5
খুব প্রশ্ন আমাদের ওয়েব বিকাশকারীদের মধ্যে সচেতনতা উত্থাপন করে। জিজ্ঞাসা করার জন্য ধন্যবাদ! ক্লিকযোগ্য হওয়ার জন্য আপনি কী ভাবেন যে কোনও বোতামটি হওয়া উচিত?
ভাবলিপি

4
কাঁপুনির মাত্র একটি স্তর-সেট: দুটি মূল ধরণ রয়েছে - "প্রয়োজনীয় কাঁপুন" এবং পার্কিনসনের কাঁপুনি - এবং সেগুলি সম্পূর্ণ আলাদা different "এসেনশিয়াল কম্পন" (যা নিখুঁতভাবে প্রবীণদের শর্ত নয় ) একটি "অভিপ্রায়" কাঁপানো, যার অর্থ এটি তখনই প্রকট হয় যখন ব্যক্তি কোনও কিছু করার চেষ্টা করে, এবং ব্যক্তি আরও কঠোরভাবে নিয়ন্ত্রণ করার চেষ্টা করলে আরও খারাপ হয়। অন্যদিকে, পিডি কম্পন প্রাথমিকভাবে বিশ্রামে দেখা দেয়, এবং ব্যক্তি কোনও কিছু করার চেষ্টা করার সময় প্রায় কম্পন স্পষ্ট হয় না (যদিও পিডির কারণে দৃ sti়তা উপস্থিত থাকতে পারে)।
হট লিকস

2
আমি একটি লিনাক্স সংস্করণ পোস্ট করেছি যা মাউস নিয়ন্ত্রণ করতে এক্সডটুল ব্যবহার করে, তবে উইন্ডোজের জন্য অটোট নামে একটি অনুরূপ সরঞ্জাম রয়েছে। এটি দেখতে বেশ সহজ দেখাচ্ছে এবং এর জন্য একটি ট্যাগও রয়েছে [অটোমেট]। আপনার মনে হচ্ছে আপনার 2 সংস্করণ প্রয়োজন। একটি যা চলাচল শুরু না হওয়া পর্যন্ত আরও কাঁপায় এবং তারপরে কিছুটা শান্ত হয় অন্যদিকে চালনা শুরু হওয়া অবধি অপেক্ষাকৃত স্থিতিশীল।
টেকনোসরাস

উত্তর:


148

আমি এমন কোনও কিছুর একটি দ্রুত ডেমো তৈরি করেছি যা আপনি আশাবাদী পয়েন্টার লক এপিআই ব্যবহার করে আপনার কোডটি বেস করতে সক্ষম হবেন ।

আমি এই পয়েন্টার-লক-ডেমো রেপো কাঁটাচামচ এলোমেলো করে এলোমেলো আন্দোলনের উপাদান যুক্ত করতে।

এখানে আমার গিটহাব পৃষ্ঠার লিঙ্কটি রয়েছে: https://aristocrates.github.io/pointer-lock-demo
এবং এখানে আমার রেপোর লিঙ্কটি রয়েছে: https://github.com/aristocrates/pointer-lock-demo

গুরুত্ব জাভাস্ক্রিপ্ট কোড মধ্যে অন্তর্ভুক্ত করা হয় app.jsএ,canvasLoop(e) পদ্ধতি।

আসল ডেমো থেকে আমি কেবল পরিবর্তন করেছি লাইনের পরে

x += movementX * 2;
y += movementY * 2;

আমি এলোমেলো আন্দোলনের প্রতিনিধিত্ব করতে দুটি লাইন যুক্ত করেছি:

x += Math.floor(Math.random()*3 - 1);
y += Math.floor(Math.random()*3 - 1);

আপনার উন্নতি করতে পারে এমন অনেকগুলি জিনিস এখনও রয়েছে তবে আশা করি এটি আপনাকে শুরু করতে সহায়তা করতে পারে।


36
কার্যকারিতাটিতে একটি নোট হিসাবে, এলোমেলো চলাচল কাঁপানো হাতের মতো নয়। এলোমেলো চলাচলের সাথে পয়েন্টারটি স্ক্রিন জুড়ে প্রস্থান করতে পারে। কাঁপানো হাত দিয়ে পয়েন্টারটি একটি কেন্দ্রীয় পয়েন্টের চারদিকে স্পন্দিত হতে চলেছে।
zzzzBov

5
এটি লক্ষণীয় যে পয়েন্টার লক এপিআইয়ের জন্য ব্রাউজার সমর্থন দুর্দান্ত নয় - এটি ইন্টারনেট এক্সপ্লোরার বা সাফারিতে কাজ করবে না।
স্টিভ স্যান্ডার্স

3
আমি নিজে চেষ্টা করার সময় পাইনি, তবে সম্ভবত আপনি এটি জানেন: পয়েন্টার-লক এপিআই কি কোনও ক্যানভাসের বাইরেও কাজ করে? নাকি এটি ক্যানভাসেই সীমাবদ্ধ?
জোশুয়া মুহিম 13'14

8
আরও বাস্তবসম্মত বাস্তবায়ন কার্সারের "প্রকৃত" অবস্থানটি ট্র্যাক করে এবং তার চারপাশে একটি বৃত্তের মধ্যে এলোমেলোভাবে স্থানান্তরিত করতে পারে তবে এটি খুব জটিল হতে পারে।
tckmn

1
@ ক্রিস ক্রোম এখন ছুড়ে ফেলেছে Blocked pointer lock on an element because the element's frame is sandboxed and the 'allow-pointer-lock' permission is not set.। দেখে মনে হচ্ছে jsFiddle সামগ্রীটি স্যান্ডবক্সযুক্ত ফ্রেমে এম্বেড করছে (যেমন পয়েন্টার লকটি মঞ্জুরি দেয় না <iframe sandbox="webkit-allow-pointer-lock">, দস্তাবেজগুলি দেখুন )। স্যান্ডবক্সযুক্ত পৃষ্ঠায় নয়, একটি একক করে নমুনা রাখার চেষ্টা করুন।
কমফ্রিচ

36

নন জাভাস্ক্রিপ্ট উপায়

প্রকৃতপক্ষে, আমি সমাধানগুলি পছন্দ করি, যা জাভাস্ক্রিপ্টের উপর ভিত্তি করে হতে পারে, যেহেতু তারা সম্ভবত ওয়েব সম্পর্কিত এবং ভাল সম্ভাবনাগুলি - ওএস-ইন্ডিপেন্ডেন্ট। তবে আমি ভাবছিলাম - সমস্ত ব্রাউজারগুলির জন্য আপনার সমস্যাটি কীভাবে সমাধান করবেন, যেহেতু জাভাস্ক্রিপ্ট সমাধানগুলি এই ক্ষেত্রে, সমস্ত সম্ভাব্য ব্রাউজারগুলির জন্য সামঞ্জস্য করা কঠিন হবে (আমি নিশ্চিত না যে এটি আদৌ সম্ভব কিনা)।

সুতরাং, আপনি যেমনটি উল্লেখ করেছেন, এর আরেকটি উপায় রয়েছে - অর্থাত্ ওএস স্তরে আচরণ অনুকরণ করা। এটির আরও একটি সুবিধাও রয়েছে - আপনি নিশ্চিত হতে পারেন যে ব্রাউজারের জন্য এটি মানুষের মতো 100% দেখাচ্ছে (কারণ এটি ভাল, এটি ড্রাইভার যা সংকেত প্রেরণ করছে)। সুতরাং আপনি যেকোন ব্রাউজারের সাথে ড্রাইভার / ডিভাইস-ভিত্তিক সমাধানগুলি ব্যবহার করতে পারেন (বা এমনকি জাভাস্ক্রিপ্ট অক্ষম থাকলেও)।

লিনাক্স

দুর্ভাগ্যক্রমে, ড্রাইভার / ডিভাইস জড়িত করার সাথে সাথেই ওএস নির্ভরতা তৈরি করে। সুতরাং প্রতিটি ওএসের জন্য আপনার নিজের সমাধান প্রয়োজন। এই পোস্টে আমি লিনাক্স-ভিত্তিক সমাধান (তাই, লিনাক্সের সাথে কাজ করবে) - এবং ম্যাক ওএসে একটু দৃষ্টি নিবদ্ধ করছি। লিনাক্স দ্বারা, স্পষ্টভাবে ডিভাইসে ইভেন্টগুলি লেখা সম্ভব, সুতরাং নীচে প্রধান লুপের সাথে ফাংশনের নমুনা দেওয়া হল:

int main()
{
    struct input_event event, event_end;

    int  fd = open("/dev/input/event4", O_RDWR);
    long ma = getInteger("Enter max amplitude [points, 0..50]: ", 0, 50);
    long ta = getInteger("Enter max wait time [usecs , 0..200000]: ", 0, 200000);
    if (fd < 0)
    {
        printf("Mouse access attempt failed:%s\n", strerror(errno));
        return -1;
    }
    memset(&event, 0, sizeof(event));
    memset(&event, 0, sizeof(event_end));
    gettimeofday(&event.time, NULL);
    event.type = EV_REL;
    gettimeofday(&event_end.time, NULL);
    event_end.type = EV_SYN;
    event_end.code = SYN_REPORT;
    event_end.value = 0;
    while(1)
    {
        event.code  = rand() % 2 ? REL_X : REL_Y;
        event.value = (rand() % 2 ? -1 : 1) * randomTill(ma);
        write(fd, &event, sizeof(event));
        write(fd, &event_end, sizeof(event_end));
        usleep(randomTill(ta));
    }
    close(fd);
    return 0;
}

ইস্যুটির জন্য আমার সম্পূর্ণ কোডটি এখানে পাওয়া যাবে । প্রোগ্রামটি "কাঁপুনি" এর প্রশস্ততা জিজ্ঞাসা করবে এবং এর ফ্রিকোয়েন্সি হবে (এইভাবে, "কাঁপুন" এর মধ্যে মাইক্রো সেকেন্ডে কত সময় থাকে)। পরিস্থিতি অনুকরণ করতে, এটি মাউসকে এলোমেলোভাবে 0..Xপয়েন্টের জন্য এলোমেলোভাবে চলতে বাধ্য করবে (উপরে-নীচে-বাম-নীচে) এবং 0..Yপরের "কম্পন" অবধি এলোমেলোভাবে মাইক্রো সেকেন্ড অপেক্ষা করবে X, "কাঁপুন" এর প্রশস্ততা থাকবে এবংY ফ্রিকোয়েন্সি রয়েছে "

আরেকটি বিষয় হতে পারে আপনার সিস্টেমের জন্য প্রোগ্রামটি মানিয়ে নেওয়া। প্রোগ্রামটি "ডামি" এবং নিজেই মাউস সনাক্ত করতে পারে না, তাই "/dev/input/event4"হার্ড-কোডেড। আপনার সিস্টেমের জন্য কী সনাক্তকারী হতে পারে তা বুঝতে আপনি চেষ্টা করতে পারেন:

user@host:/path$ cat /proc/bus/input/devices | grep mouse
H: Handlers=mouse0 event3 
H: Handlers=mouse1 event4

এবং তাই সম্ভাবনাগুলি "event3"এবং "event4"- তবে আপনার সিস্টেমের জন্য অন্যান্য মান থাকতে পারে। সুতরাং, যদি এটি বর্তমানে সি কোডে ব্যবহৃত থেকে পৃথক হয় তবে কেবলমাত্র সংশ্লিষ্ট লাইনটি পরিবর্তন করুন (সুতরাং, int fd = open("/dev/input/event4", O_RDWR);আপনার ডিভাইসের সাথে লাইন করুন এবং তার পরিবর্তে আপনার ডিভাইসটি রাখুন)event4 )

এই প্রোগ্রামের জন্য একটি GIF ডেমো (কম ফ্রেম রেট, দুর্ভাগ্যবশত, তাই চিত্রটি অত্যন্ত বড় রাখতে না) এখানে

একটি সামান্য পার্শ্ব নোট (আপনি যদি সি কোড দিয়ে কী করতে না জানেন) - উপরের প্রোগ্রামটি সংকলন করতে, কেবল ব্যবহার করুন:

user@host:/path$ gcc -std=gnu99 file.c -o m

file.cআপনার সি উত্স কোড ফাইলের নাম কোথায় , তারপরে আপনি কার্যকর করতে পারবেন, mআপনার ডিরেক্টরিতে ডাকা হবে । সম্ভবত আপনার সরাসরি মাউস ডিভাইসে লেখার অনুমতি প্রয়োজন হবে, যাতে আপনি ব্যবহার করতে পারেন sudo:

user@host:/path$ sudo ./m

অন্যান্য ওএস

যুক্তি একই থাকবে:

  • আপনার মাউস ডিভাইস অ্যাক্সেস করার জন্য একটি উপায় খুঁজুন
  • চলমান মাউসের ইভেন্ট লিখুন
  • আপনার ইভেন্টে এলোমেলোকরণ প্রয়োগ করুন

এটাই. উদাহরণস্বরূপ, ম্যাক ওএসের মাউস দিয়ে কাজ করার নিজস্ব পদ্ধতি রয়েছে (লিনাক্সের মতো নয়, ম্যাকও তেমন করেনি procfs), এটি এখানে ভালভাবে বর্ণিত ।

উপসংহার হিসেবে

আরও ভাল - জাভাস্ক্রিপ্ট বা ডিভাইস-ভিত্তিক সমাধান - আপনার উপর নির্ভর করে কারণ নির্দিষ্ট শর্ত (যেমন ক্রস-ব্রাউজার বা ক্রস-ওএস) এই ক্ষেত্রে সবকিছু ঠিক করতে পারে। অতএব, ওএস স্তরে কীভাবে এটি প্রয়োগ করা যায় তার নির্দিষ্ট কাজের উদাহরণ সহ আমি একসাথে গাইডলাইন সরবরাহ করেছি। এখানে সুবিধাটি হ'ল সমাধানটি ক্রস ব্রাউজার, তবে ব্যয় হিসাবে আমাদের কাছে ওএস-বাইন্ডেড প্রোগ্রাম রয়েছে।


এই খুব বিস্তারিত পোস্টের জন্য অনেক ধন্যবাদ। আমি সন্দেহ করি যে আমরা একটি ট্যাবলেটে (অ্যান্ড্রয়েড বা আইওএস) প্রদর্শিত করব, সুতরাং আমরা ওএস স্তরে মাউস আচরণটি পরিবর্তন করতে পারব না। তবে যাইহোক খুব আকর্ষণীয়!
জোশুয়া মুহিম 12'8

53
আপনি কীভাবে টাচস্ক্রিন ডিভাইসে নড়বড়ে মাউস প্রদর্শন করছেন?
Davor

6
@ পছন্দসইভাবে, আমি অত্যন্ত সন্দেহ করি যেঁরা প্রকৃতপক্ষে কাঁপুনি / কাঁপানো হাত নিয়ে সমস্যায় পড়েছেন তারা যদি স্পর্শে পাগল না করতে চান তবে স্পর্শ ডিভাইসটি ব্যবহার করবেন ।
ক্রিস সাইরেফাইস

2
@ ক্রিসক্রাইফাইস: বা বাধ্য করা হয়েছে, কারণ তাদের সেখানে গাজিলিয়ন ডিভাইসগুলির একটির ব্যবহার করতে হবে যা আমাদের জীবনকে সুন্দর করে তোলার জন্য এবং টাচ স্ক্রিন ব্যবহার করতে হবে ... মনে রাখবেন এই সমস্যাগুলির সম্পর্কে সচেতনতা বাড়াতে এই লোকদের সমস্যা রয়েছে যে।
প্লাজমাএইচএইচ

@ প্লাজমাএইচ ওপি তে উল্লেখ করেনি যে এটি এমন লোকদের সচেতনতা বাড়ানোর জন্য যাঁরা কাঁপছেন এবং তাদের অসুবিধাগুলি রয়েছে (বিশেষত) টাচ স্ক্রিন ডিভাইস সহ। এবং আবারও, আমি মনে করি না যে যার কাঁপুনি নিয়ে আসলেই সমস্যা রয়েছে তিনি হ্যান্ড-হোল্ড টাচ-স্ক্রিন ডিভাইসগুলি ব্যবহার করার চেষ্টা করার পক্ষে যথেষ্ট মস্কোস্টিক । এমন ডিভাইস রয়েছে যা ব্যবহার করা অনেক সহজ, যেমন বড় (যান্ত্রিক) বোতামযুক্ত ফোন। বেশিরভাগ অপারেটিং সিস্টেমের মধ্যে বক্তৃতা দ্বারা নেভিগেশন অন্তর্ভুক্ত থাকে (উদাঃ স্পিচ রিকগনিশন - উইন্ডোজ ওএস)। আমি ধারণা করি যে গম্ভীরভাবে ক্ষতিগ্রস্থ ব্যক্তিরা আইফোনের পরিবর্তে এই সরঞ্জামগুলি ব্যবহার করবেন।
ক্রিস সাইরেফাইস

23

আমি এটি কৌতুক হিসাবে একবার করেছি, পপি লিনাক্স ফোরাম এবং মন্তব্য পেয়েছিলাম যে:

পার্কিনসনের লোকেরা এটাকে মজার মনে করবেন না !!!

ভাগ্যক্রমে, নিরাময় এখানে সহজভাবে cntrl-C।

এখানে শেল স্ক্রিপ্ট যা এক্সডটুল প্রয়োজন

#!/bin/sh
while :; do
   xdotool mousemove_relative -- -$(($RANDOM % 10)) $(($RANDOM % 10))
   xdotool mousemove_relative -- $(($RANDOM % 10)) -$(($RANDOM % 10))
   sleep ${1:-.1} #adjust this as necessary for effect
done

পার্কিনসন_সিম হিসাবে নাম দিন এবং কাঁপুনির মাঝে সময়ের জন্য alচ্ছিক যুক্তি দিয়ে চালান যা 0.001 থেকে 999.0 পর্যন্ত হতে পারে।

পার্কিনসন_সিম [সময়_দ্বীপ_স্রোত_সড়ক_সেকেন্ডস] # ডিফল্ট 0.1

কমান্ড লাইন থেকে চালানোর পরিবর্তে আমি নিজেই এটিতে ক্লিক করার ভুল করেছি এবং এটি কতটা হতাশার হতে হবে তাড়াতাড়ি আবিষ্কার করেছি। এটি মেরে ফেলার জন্য টার্মিনাল উইন্ডোটি খুলতে আমার বেশ কয়েকটি চেষ্টা হয়েছিল।


1
আপনি সিপিইউর ব্যবহার এবং গতি সীমাবদ্ধ করতে "ঘুম 0.01" এর মতো কোনও কিছু দিয়ে কোলনটি প্রতিস্থাপন করতে চাইতে পারেন, কারণ আমার অনমনীয়তার ভিত্তিতে এটি আপনার কোডের সাথে অবাস্তব দ্রুতগতিতে লাফিয়ে তোলে।
ননচিপ

1
@ অনঞ্চিপ - তথ্যের জন্য ধন্যবাদ, আমি সিপিইউ ব্যবহারের সন্ধানের জন্য এটি এত দিন চালাতাম না। শরীরে একটি ঘুম জুড়েছে।
টেকনোসরাস

আপনি জানেন বেশিরভাগ লিনাক্স ডিস্ট্রোজে আপনি কিবোর্ড কমান্ড ব্যবহার করে টার্মিনালটি খুলতে পারবেন, তাই না?
justhalf

@ আসরাল্ফ সেই সময়ে ডিফল্ট কুকুরছানাতে, টার্মিনাল শর্টকাটটি `একটি রক্স-ফাইলার উইন্ডোতে টিপতে হয়। এটি খোলার জন্য বেশ কয়েকবার চেষ্টা করেছে, তাই আমি মেনুটি খোলার জন্য কীবোর্ডটি ব্যবহার করেছি। এর অল্প সময়ের পরেই আমি পকেটসফিনেক্স_কন্টিনুস এবং প্রায় 10 লাইন শেল ব্যবহার করে একটি প্রাথমিক ভয়েস কন্ট্রোল ডেমন তৈরি করেছি।
টেকনোসরাস

while :; do ...; sleep $time; doneপ্রায় সর্বদা হওয়া উচিত while sleep $time; do ...; done, কারণ ব্যবহারকারী যখন Ctrl-C টিপান, তখন বর্তমানে সম্পাদনকারী কমান্ডটি অবশ্যই উপস্থিত থাকবে sleepএবং ব্যবহারকারী যখন চাইবে তখন শেলগুলি সর্বদা স্ক্রিপ্টটি শেষ করে না। এটি সবচেয়ে উল্লেখযোগ্যভাবে ইন্টারেক্টিভ শেলগুলিতে পরীক্ষার সময় ঘটে তবে এটি কখনও কখনও স্ক্রিপ্টগুলিতেও ঘটতে পারে। আরও ভাল হবে while xdotool ... && xdotool ... && sleep ...; do :; done

16

আপনার দ্বিতীয় ধারণাটি (কার্সারটি আড়াল করুন) এটির একটি অর্ধেক যা আমার ধারণা আপনার পক্ষে ভাল কাজ করতে পারে:

  • আপনার পরামর্শ অনুসারে মাউস কার্সারটি সিএসএসের মাধ্যমে লুকান। (cursor:none আইআইআরসি)
  • নড়বড়ে কার্সার জিআইএফের পরিবর্তে মাউস পয়েন্টারটি অনুকরণ করতে কিছু চিত্র + সিএসএস নিরঙ্কুশ অবস্থান + জেএস ব্যবহার করুন; উদাহরণস্বরূপ, পৃষ্ঠার চারপাশে মাউস অনুসরণ করুন এবং মাউস কার্সার স্থানীয় হবে এমন কার্সার চিত্রটি রোপণ করুন।

তারপরে, আপনি কার্সারকে "ঝাঁকুনি" দিতে আপনার কার্সর কোডটিতে কিছুটা কম্পনের গণিত যুক্ত করুন। কাঁপড়া ইনপুটটি সঠিকভাবে অনুকরণ করার জন্য সঠিক বক্ররেখাগুলি কী তা নির্ধারণ করা আপনার উপর নির্ভর করে।

শেষ পর্যন্ত: আপনি যে প্রোগ্রামিং করছেন তার নিয়ন্ত্রণগুলির জন্য (লিঙ্কগুলি, ইত্যাদি):

  • ইভেন্টগুলি ক্যাপচার করুন, আপনার কাঁপানো কার্ভের অবস্থার উপর ভিত্তি করে বর্তমান "কাঁপুনি" অবস্থানের দিকে ঝুঁকুন এবং ব্যবহারকারীর উদ্দেশ্য অনুসারে উপাদানটি সম্ভবত বেরিয়ে গেছে, অথবা সম্ভবত এমন কোনও উপাদান তৈরি করা হয়নি তা দেখার জন্য আপনার উপাদানগুলি সীমাবদ্ধ করে দেখুন ।

এই প্রয়োগের সাথে একটি বড় বোনাস : আপনার 'নড়বড়ে কার্সার' টাচ ডিভাইসে প্রদর্শিত হবে, যার সাথে কার্সার শুরু হবে না।


সম্পাদনা:

মন্তব্যগুলি থেকে মাইকেল থেরিয়টের (খুব পরিষ্কার এবং সহায়ক!) বেস জেএসফিডেলের উপর ভিত্তি করে, এখানে এমন একটি যা বর্তমান কার্সারের অবস্থানের চারপাশে সাধারণত বিতরণ করা সুইপ দিয়ে ক্রমাগত কেঁপে ওঠে: http://jsfiddle.net/benmosher/0x4mc64v/4/

( normalঅ্যারেটি rnorm(100)আমার আর কনসোলে কল করার ফলাফল ।


কিছু স্ট্যান্ডার্ড জেএস মাউস ইভেন্টের তথ্য: javascript.info/tutorial/…
বেন মোশার

আপনাকে ধন্যবাদ, এটি সত্যই আমার ধারণার একটি খুব যোগ্য সংযোজন।
জোশুয়া মুহিম 13'14

আমি যে প্রকল্পে কাজ করছি তার জন্য এই ঝাঁকুনিটি খুব সুন্দর, যদিও এটি 4 বছর বয়সী আপনি কি আমার প্রকল্পের অংশ পার্কিনসনের সিমুলেশনের ভিত্তি হিসাবে এটি চুরি করতে আপত্তি করবেন?
গ্রাহাম রিচি

@ গ্রাহামরিচি: আমার সাথে ভাল, তবে মাইকেল থেরিয়ট বেশিরভাগ কাজ যদিও আইআইআরসি 😄
বেন মোশার

14

কাঁপুনি "ঠিক" পাওয়ার জন্য কেবল একটি ধারণা, আপনি একজন সত্যিকারের রোগীর মাউস চলাচল রেকর্ড করতে পারেন, আপনি যখন তথ্যটি কোথা থেকে আসে তা লোকেদের বললে এটি আরও প্রামাণিক হয়।

বিড়ালটিকে আপনার মাউস কার্সার অনুসরণ করার জন্য একটি স্ক্রিপ্ট রয়েছে, আপনি দ্বিতীয় কার্সারটিকে আপনার কার্সারটি অনুসরণ করতে (চারপাশে লাফিয়ে) যেতে একটিটিকে সামঞ্জস্য করতে পারেন। পৃষ্ঠাটি দ্বিতীয় কার্সারের অবস্থান গণনা করছে, তাই কোনও ক্লিক ইভেন্ট সফল কিনা তা নির্ধারণ করতে পারে।

যদি আপনি পারেন তবে দয়া করে এটি ওয়েব ভিত্তিক করুন, আপনি কোনও প্রোগ্রাম ইনস্টল করতে বা ফ্ল্যাশ সক্রিয় করতে বা সেখানে যা কিছু আছে সক্রিয় করতে বলার চেয়ে আপনি আরও অনেক লোকের কাছে এই পথে পৌঁছে যাবেন।


এই পরামর্শের জন্য ধন্যবাদ।
জোশুয়া মুহিম

1
আমি এই ধারণাটি পছন্দ করি - মাউস অবস্থানটি জাভাস্ক্রিপ্টের মাধ্যমে যে কোনও সময় অন্তরালে রেকর্ড করা যেতে পারে। এরপরে আপনি নড়াচড়া (এক্সওয়াই প্লেন) তৈরি করতে পারেন, এবং পয়েন্টার লক এপিআই সমাধান বা এর অনুরূপ কোনও কিছুর জন্য আরও 'ট্রাম্পার_র্যান্ডমনেস' এর সূত্রের জন্য আরও কিছু মৌলিক পরিসংখ্যান পেতে পারেন। এর জন্য আরও কিছুটা কাজের প্রয়োজন হবে (উদাহরণস্বরূপ, 10 সেকেন্ডের জন্য প্রতি 100 এমএসে এক্সওয়াই পজিশন নিয়ে আসা) এবং বিশ্লেষণ, তবে আপনাকে সাধারণ এলোমেলোকরণের চেয়ে অনেক বেশি বাস্তব প্রভাব দেবে। আপনার কারণে এটি মূল্যবান হতে পারে।
ক্রিস সাইরেফাইস

10

পয়েন্টারটি সরানোর চেষ্টা না করে আপনি তার পরিবর্তে অ্যাপ্লিকেশনটি (ওয়েব পৃষ্ঠা) সরাতে পারেন। আমি একটি সাধারণ এইচটিএমএল ফর্ম লিখেছি যার এতে কিছু প্রবেশ ক্ষেত্র রয়েছে। আপনি যখন মাউসটিকে ফর্মের দিকে সরান, ফর্মটি সরানো হবে।

আপনি jsfizz এ চলন্ত ফর্ম একটি ডেমো দেখতে পারেন । প্রভাবটি দেখতে কোনও ইনপুট ক্ষেত্রে ক্লিক করার চেষ্টা করুন।

আমি এটি অর্জন করতে jquery শেক প্রভাব ব্যবহার । শ্যাক এফেক্টের জাভাস্ক্রিপ্টটি দেখতে এরকম দেখাচ্ছে এবং যখনই মাউসটি তার উপরে সরানো হবে তখনই ফর্মটি উপরে এবং নীচে নিয়ে যায়:

<script type="text/javascript">
    $(document).ready(function() {
        $("#toggle").hover(function () {
            $(this).effect("shake", { direction: "up", times: 1, distance: 40}, 1000);
        });
    });
</script>

যদিও ফর্মটি কেবল উপরে এবং নীচে চলে যায়, আমি মনে করি এটির পছন্দসই প্রভাব রয়েছে। আপনি ফর্মের গতিবিধিটি টুইঙ্ক করতে প্যারামিটারগুলি (দিক, সময়, দূরত্ব, পাশাপাশি উপরের নামহীন "1000") দিয়ে খেলতে পারেন।


3
আমি নিজেও এ সম্পর্কে ভেবেছিলাম, তবে এটি কার্যকর করা সহজ হওয়ার সাথে সাথে এটি কোনও কম্পনের "আসল" অভিজ্ঞতা দেখায় না।
জোশুয়া মুহিম

10

একটি হার্ডওয়্যার সমাধান ব্যবহার করবেন না কেন? লজিটেক জি 500 এর মতো আপনি কয়েকটি ওজন রাখতে পারেন there ওজন না দেওয়ার পরিবর্তে, একটি ছোট্ট দোলক মোটর রাখুন যা মাউসটি কিছুটা কাঁপায়। এটি প্রকৃত ব্যাধিটিকে আরও অনুকরণ করে: এটি কেবল কর্সারকে কাঁপিয়ে তোলে তা নয়, পুরো হাত এবং মাউসকে। এবং এর অর্থ হ'ল আপনি ওয়েবসাইটগুলি বাদে অন্য সফ্টওয়্যার প্রদর্শন করতে পারেন।

ওজন স্লটযুক্ত মাউসের পরিবর্তে, আপনি মাউসকে কিছু টেপ করতে পারেন তবে এটি আরও লক্ষণীয়।


যেহেতু আমি একটি কম্পিউটার-গীক এবং যান্ত্রিক নয়, আমি একটি বৈদ্যুতিন সমাধানের সাথে লেগে থাকব। ধন্যবাদ!
জোশুয়া মুহিম

যদিও একটি সম্ভাব্য হার্ডওয়্যার সলিউশন হল এটি একটি এলোমেলো শব্দ জেনারেটর যুক্ত করে (সম্ভবত তারযুক্ত) মাউসটি বাড়িয়ে তোলা।
হট লিকস

6

আপনি যখন কাস্টম মাউস ড্রাইভারটি দিয়ে এটি করার কথা ভাবছিলেন তখন আমি মনে করি পিসিতে চলমান একটি ছোট প্রোগ্রাম হয় কি না? যদি এটি হয় তবে এখানে সি # এর জন্য একটি ছোট স্নিপেট রয়েছে, যা কার্সারকে বর্তমান কার্সার অবস্থানের আশেপাশে আরও বিয়োগফল 5px রেঞ্জের সাথে এলোমেলোভাবে সরিয়ে দেয়। প্রতিটি স্থানচ্যুতির পরে প্রোগ্রামটি 50 এমএস থেকে 100 এমএস অপেক্ষা করে (সঠিক নয়!) শিথিলতা স্থানচ্যুতি এবং বিরতি জন্য মান মানিয়ে কনফিগার করা যেতে পারে। আমি এটি একটি কনসোল অ্যাপ্লিকেশনটিতে চালিয়েছি এবং - মানগুলির উপর নির্ভর করে - এটি আমাকে প্রোগ্রামটি থামাতে বেশ কঠিন সময় দিয়েছে।

Random rand = new Random();

while(true)
{
    Cursor.Position = new Point() { X = Cursor.Position.X + rand.Next(11)-5, Y = Cursor.Position.Y + rand.Next(11)-5 };
    Thread.Sleep(rand.Next(50) + 50);
}

6

এখানে আমার এক্সডটুল স্ক্রিপ্টের একটি উইন্ডোজ সংস্করণ যা অটোআইটি ব্যবহার করে । এটি আমার প্রথম অটোআইটি স্ক্রিপ্ট ছিল এবং এটি লিখতে কয়েক মিনিট সময় লেগেছে তাই আমি নিশ্চিত যে এটির উন্নতি হতে পারে। কেবলমাত্র .au3 এক্সটেনশনের সাহায্যে সংরক্ষণ করুন এবং এটি অটোআইটি (স্ক্রিপ্ট x86 চালান) দিয়ে চালান।

HotKeySet("{HOME}", "GStart")
HotKeySet("{PAUSE}", "Gpause")
HotKeySet("{ESC}", "Gexit")

While 1
    Sleep(100)
WEnd

Func Gstart()
While 1
    sleep(100)
    $pos = MouseGetPos()
    $x = $pos[0] + 10 - Random(0, 20, 1)
    $y = $pos[1] + 10 - Random(0, 20, 1)
    MouseMove($x,$y)
Wend
Endfunc


Func Gpause()
While 1
   sleep(100)
Wend
Endfunc

Func Gexit()
    MsgBox(0, "exit box", "Script exited")
    Exit 0
EndFunc

নিয়ন্ত্রণ

  • হোম: সিমুলেশন শুরু করুন।
  • বিরতি: বিরতি সিমুলেশন।
  • এসএসসি: প্রস্থান সিমুলেশন।

অথবা আমার সংকলিত সংস্করণটি এখান থেকে ব্যবহার করুন


খুব সুন্দর. ধন্যবাদ!
জোশুয়া মুহিম

5

আপনি আশা করতে পারবেন না যে কেউ পুরোপুরি তাদের হাত ধরে রাখতে সক্ষম হবেন, তাই আপনি যে বিষয়টিকে বিবেচনা করতে পারেন তা হ'ল,

  1. আপনি কী করছেন ব্যবহারকারীদের এবং
  2. ডেমো পৃষ্ঠায় ক্লিকযোগ্য উপাদানগুলি স্বাভাবিকের চেয়ে অনেক ছোট করে দিন।
  3. সর্বাধিক হিসাবে উদাহরণ সিস্টেমের উপর মাউস সংবেদনশীলতা বৃদ্ধি।

আমার যুক্তিটি হ'ল (সতর্কতামূলক, আমি ক্লিক-সক্ষম উপাদানগুলিকে ছোট করে) আপনি বেশিরভাগ লোকের জন্য একই রকম সমস্যা তৈরি করেন যে পারকিনসন রোগে আক্রান্ত ব্যক্তি একটি দৈনন্দিন ওয়েবসাইটের মুখোমুখি হবে।


এটিও একটি আকর্ষণীয় ধারণা। আমি নিশ্চিতভাবেই যাইহোক, ক্লিকযোগ্য উপাদানগুলি বেশ ছোট করার পরিকল্পনা করছি।
জোশুয়া মুহিম

2
আমি আশঙ্কা করছি বেশিরভাগ মাউস ব্যবহারকারীরা যদি মনোনিবেশ করেন তবে তারা তাদের ডিভাইসটি 1-2 পিক্সেলের নীচে নিয়ন্ত্রণ করতে পারবেন - যেমন আমি যে মাউস সেটিংস ব্যবহার করি তার সাথে হাত কাঁপানো 1 পিক্সেলের নীচে। তাই যদি আপনি বোতামগুলি 1-2 পিক্সেলের চেয়ে বেশি হয় তবে সম্ভবত সর্বজনীন সমাধান নয় ...
জোনাস হাইডেলবার্গ

আমি # 3 যুক্ত করব, মাউসের গতিতে বাধা পেয়ে সেটিংস সর্বাধিকতে ক্লিক করব
রায়ান বি

মাউসে এক ধরণের "অটোমেটিক ভলিউম নিয়ন্ত্রণ" রাখার অর্থ হবে, বৃহত্তরগুলিকে "স্বাভাবিক" এর কাছাকাছি করার সময় ছোট গতিবিধি বাড়ানো হবে।
হট লিকস

4

আপনি পুরানো-বয়সের সিমুলেশন স্যুট ব্যবহার করতে পারেন, যেমন এই নিবন্ধে বর্ণিত ... আমার হাতের কাঁপুনি অংশটি কব্জির চারপাশে কেবল একটি স্পন্দিত মোটর, পাশাপাশি হাতকে আনাড়িপূর্ণ করার জন্য কিছু ঘন গ্লাভস বলে সন্দেহ করে।


ধন্যবাদ. যদিও এটি খুব আকর্ষণীয়, তবে প্রতিটি দর্শকের স্যুটটিতে রাখার জন্য আমাদের কাছে সম্ভবত টাকা এবং সময় নেই। ;)
জোশুয়া মুহিম 12'14

5
এটি মন্তব্য হিসাবে ভাল উপযুক্ত হবে না?
সেলালি অ্যাডোবর

ঠিক আছে, আমি জাভাস্ক্রিপ্ট এবং এইচটিএমএল ট্যাগগুলি সম্পর্কে কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম, তবে যেহেতু প্রশ্নকর্তা বিশেষ মাউস ড্রাইভারগুলি ব্যবহার করার পরামর্শ দিয়েছেন (এবং তারপরে ট্যাবলেটগুলি উল্লিখিত) মনে হয় এটি অন্যান্য সমাধানগুলি স্বাগত বলে মনে হচ্ছে। একবার আপনি নির্দিষ্ট প্রযুক্তির সীমাবদ্ধতা সরিয়ে ফেললে, এটি একটি উত্তর। এই ক্ষেত্রের গবেষকরা বয়সের সাথে সম্পর্কিত অক্ষমতা অনুকরণের সমস্যার সমাধান করছেন। আমি আরও মনে করি আপনি অপেক্ষাকৃত কম দামে DIY করতে পারতেন যদি আপনি কেবল কাঁপুনি চান - এইসব ভেলক্রো কব্জি ওজন এবং একটি স্পন্দিত মোটর, খুব শক্ত হওয়া উচিত নয়।
ব্যবহারকারী 3067860

4
  • আপনার DIV , CSS- লুকিয়ে কার্সারটি ব্যবহার করেcursor:none;
  • একটি .png কার্সর চিত্র তৈরি করুন এবং এটি সরান ( left,top ) জিকিউ দিয়ে চালিত করুনmousemove
  • .Png এলোমেলোকরণ করুন margin-leftএবং margin-topএকটি ব্যবহার করে setTimeout (পুনরায় অবস্থানকে মসৃণ করতে CSS3 ব্যবহার করতে transitionবা এটি জিকিউ দিয়ে করুন .animate())।

দ্রষ্টব্য: হাতটি এখনও মাউসে রয়েছে কিনা স্ক্রিপ্টটি জানতে পারে না;)

function rand(min, max) {return Math.random() * (max - min) + min;}

var $cursor = $('div img');

$('div').mousemove(function(e) {  // Make .png follow the mouse coordinates
  $cursor.css({
    left: e.pageX,
    top:e.pageY
  });
}).hover(function(e){
  $cursor.toggle(); // Show .png cursor as we enter the DIV
});

(function tremor(){ // Add tremor to .png image
  $cursor.css({
      marginLeft: rand(-15,15), // arm tremor
      marginTop:  rand(-30,30)  // hand contractions
  });
  setTimeout(tremor, rand(50,100));
}());
div{
  position:absolute;
  background:#eee;
  height:100%;
  width:100%;
  cursor:none;
}

div img{
  display:none;
  position:absolute;
  transition: margin 0.2s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><img src="http://i.stack.imgur.com/KwMGA.png"></div>


2

কম্পন অনুকরণের নিম্ন-স্তরের অংশগুলি এতক্ষণে ভাল উত্তর দিয়েছে। আমি অনুকরণ করার ধরণের কাঁপুনির উপর দৃষ্টি নিবদ্ধ করে কিছু যুক্ত করব:

বেশিরভাগ উত্তরগুলি মাউস কার্সার প্রয়োগ করে যা এক্স এবং ওয়াইয়ের দিকের কিছু নির্দিষ্ট সর্বাধিক ধাপ প্রস্থের সাথে এলোমেলো পথে অগ্রসর হয়।

বোতামের মতো নির্দিষ্ট অঞ্চলে আঘাত করা শক্ত করার ক্ষেত্রে এটির ব্যবহারের ক্ষেত্রে যথেষ্ট কাজ করা উচিত।

পারকিনসন ডিজিজ থেকে কাঁপুনির কারণে ইউআই সমস্যাগুলির সিমুলেট করার আরও সাধারণ সমস্যার জন্য, এই ধরণের কাঁপুনির হাতের চলাচল অনুকরণ করা কমপক্ষে আকর্ষণীয় হবে।
আমি সন্দেহ করি এলোমেলো হাঁটা খুব ভাল অনুমান হতে পারে না ।

অবশ্যই কম্পনের চলাচলের বাস্তব হাতের ট্রেস ডেটা ধরে রাখা শক্ত হতে পারে তবে এই ধরণের কাঁপুনি বিশ্লেষণ সম্পর্কে অবশ্যই কাগজপত্র রয়েছে:

কাগজ হাত আন্দোলনের প্যারামেত্রিক প্রতিনিধিত্ব পারকিনসন রোগে কিভাবে সেরা চক্রান্ত 3D হাত আন্দোলন ট্রেস করতে।
কাগজটি পেওয়াল করে দেওয়া হয়েছে, তবে উপরের ডানদিকে পূর্বরূপে, বইয়ের চিত্রটিতে "লুক ইনসাইড>" লেবেলযুক্ত হ্যান্ড ট্রেস ডেটার বিভিন্ন উপস্থাপনার কিছু আকর্ষণীয় প্লট দেখায় ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.