একটি শিফট কী একটি তীর কী মত আচরণ করুন


6

আমি একটি উইন্ডোজ 10 ল্যাপটপ নির্বোধ দ্বারা পরিকল্পিত একটি কীবোর্ড সঙ্গে আছে। তারা তীরচিহ্নগুলি যেখানে তাদের অন্তর্ভূক্ত না সেগুলি ক্রোম করার চেষ্টা করেছিল, ফলস্বরূপ উপরে তীরচিহ্নটি হল মধ্যে ডান Shift কী এবং / কী (মার্কিন কীবোর্ড লেআউট)। এটি ডিজাইনাররা যে নির্বোধ জিনিসগুলি করতে পারত সেগুলির মধ্যে এটি এক, কারণ এর অর্থ হল যে যখন আমি সঠিক শিফট কীটি আঘাত করতে যাচ্ছি (যা বেশিরভাগ সময়ই হয়), আমি তার পরিবর্তে তীরটিকে আঘাত করে ফেলি। এই অবিশ্বাস্যভাবে বিরক্তিকর।

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

সম্পাদনা

মন্তব্য থেকে একটি পরামর্শ অনুসরণ, আমি AutoHotkey ইনস্টল। আমার নিম্নলিখিত স্ক্রিপ্ট আছে:

RShift::Up
Up::RShift

আমি আগে হিসাবে একই সমস্যা আছে। কিন্তু, যেহেতু AHK একটি স্ক্রিপ্টিং ভাষা, তাই এটি পুনরাবৃত্তি আচরণ পরিবর্তন করার জন্য এটি ব্যবহার করা সম্ভব?


আমি কিছু কীবোর্ড সঙ্গে আপনার হতাশা জানি। আপনি AHK চেষ্টা করেছেন? আমি কিছুটা আগে শুনেছি এবং এখন এএইচকে একটি অস্ত্রোপচার আছে যা আমি প্রায় প্রতিদিন ব্যবহার করতাম। আপনি যদি এটি পরীক্ষা করে দেখেন তবে এটি বেশ অসাধারন - যদি আপনার কোনও প্রোগ্রামিং পটভূমি কখনও সামান্য থাকে। autohotkey.com তারপরে আপনি যদি প্রতিটি লগইন এ প্রস্তুত হওয়ার জন্য আপনার শর্টকাট নিবন্ধন করতে চান তবে আপনি উইন্ডোজগুলির সাথে স্টার্ট আপ টাস্ক হিসাবে এটি করতে পারেন। কী একটি তালিকা: autohotkey.com/docs/KeyList.htm এটি আপনার জন্য কাজ করে তবে আমি কোড দিয়ে আপনাকে সাহায্য করতে পারি। একটি শেখার বক্ররেখা আছে।
ejbytes

AutoHotkey উল্লেখ করার জন্য ধন্যবাদ। আমি এটি চেষ্টা করেছি, এবং এটি অনেক উদ্দেশ্যে কাজে লাগবে, তবে উপরের পুনরাবৃত্তি আচরণে পরিবর্তন করার জন্য AHK ব্যবহার করার উপায় নেই, যতক্ষণ না আমি উপরে বর্ণিত একই সমস্যাটি আছে।
Scott Severance

আপনি পুনরাবৃত্তি বর্ণনা করতে পারেন? প্রেস এবং অনেক পুনরাবৃত্তি? AHK এর সাহায্যে আপনি সেট করতে পারেন এমন সময় রয়েছে, বা এমনকি প্রেসগুলি ধরে রাখুন। এটা কি সাহায্য করে? তাই আপ আপ যায়, কিন্তু আপনি রাখা পর্যন্ত এটি আপ আপ অব্যাহত। অথবা অন্য কিছু?
ejbytes

আমি বলতে চাচ্ছি যে যখন আপনি উপরে টিপবেন, কার্সারটি এক লাইনে চলে যাবে এবং থামবে, যতক্ষণ না আপনি কী কী ধরে থাকবেন। এএইচকে-তে আমি একটি লুপ লেখার চেষ্টা করেছি Up:: কী ডাউন ছিল কিনা চেক করতে এবং অন্য আপ কী পাঠাতে। কিন্তু, এটা কোন পার্থক্য তৈরি।
Scott Severance

উত্তর:


2

আমি তালিকাবদ্ধ Hotkeys চেষ্টা করেছি ... তারা আমার জন্য জরিমানা কাজ এবং নিচে অনুষ্ঠিত যখন স্বয়ংক্রিয়ভাবে ঠিক সূক্ষ্ম ...

#Persistent
Return

#IfWinActive    ; Make replacement operate globally
RShift::Up
Up::RShift

আপনি একটি ভিন্ন চেষ্টা করতে সক্ষম হতে পারে SendMode...

RShift::SendInput {Up}
Up::SendInput {RShift}

বা ...

RShift::SendPlay {Up}
Up::SendPlay {RShift}

আপনার কি এমন কোনও প্রোগ্রাম আছে যা এই বা অন্য কিছুকে আটকাচ্ছে? স্ক্রিপ্ট চলমান না হলে কী পুনরাবৃত্তি সাধারণত কাজ করে?

একটি কাস্টম লুপ সেট আপ করা ভালো কিছু দেখতে পারে ...

RShift::
    While GetKeyState("RShift", "P") {
        Send {Up}
        Sleep 50    ; Set delay to taste
    }
Return

সম্পাদনা

অন্যান্য সংশোধনকারীর কাজটির প্রয়োজন মেটাতে, হটকি দিয়ে '*' ব্যবহার করা যেতে পারে, যদিও দুটি শিফট কী থাকার ক্ষেত্রে এটি ডিফল্টরূপে সঠিকভাবে কাজ করতে পারে না। আমি শিফট কী সনাক্তকরণের জন্য একটি বিশেষ কেস যোগ করেছি কিন্তু যদি আপনি মিশ্রণে অন্যান্য সংশোধনকারীগুলিকে নিক্ষেপ করতে পারেন তবে কীভাবে কাজ হবে তা আমি জানি না ... সেই ক্ষেত্রে আপনি আরও যোগ করতে পারেন {blind} সংশোধনকারী Send আপনি সঠিকভাবে কাজ পেতে পারে কিনা দেখতে বিবৃতি।

'রেসিড অবস্থা' সম্বলিত অন্য প্রি-পুনরাবৃত্তি বিলম্বটি প্রাথমিক পাঠ্য বিবরনের সাথে পুনরাবৃত্তি লুপের আগে যোগ করা যেতে পারে (নীচে দেখুন)।

*Up::SendInput {blind}{RShift Down}
*Up Up::SendInput {blind}{RShift Up}

*RShift::
    Send % GetKeyState("LShift", "P") ? "+{Up}" : "{Up}"
    Sleep 250           ; Initial delay before repeat
    While GetKeyState("RShift", "P") {
        Send % GetKeyState("LShift", "P") ? "+{Up}" : "{Up}"
        Sleep 100    ; Repeat delay
    }
Return

শীর্ষ ব্লক মহান কাজ করে। দ্বিতীয় এবং তৃতীয় ব্লক, আমার কীবোর্ডের জন্য আঘাত এবং মিস। GetPeyState এর সাথে লুপটিও কাজ করে। সুন্দর কাজ. এই ব্যবহার করে কেউ একটি নোট। আমি এই উদাহরণে যখন লুপ ব্যবহৃত এবং এটি কাজ করে। উইন্ডোজ, "স্টিকি কী" আমাকে সতর্ক করেছিল; কিন্তু অন্তর্বর্তী সময়ে; তাই সম্ভবত মন্তব্যটি "স্বাদে বিলম্ব করা" মন্তব্যটি যদি কখনোই চলতে থাকে তবে সেই সমস্যার সাথে সাহায্য করতে পারে। API (আবেদনকারী প্রোগ্রামারের ইন্টারফেস) এখানে GateKeyState কী এবং এটি কীভাবে ব্যবহৃত হয় তা ব্যাখ্যা করে: autohotkey.com/docs/commands/GetKeyState.htm আমার থেকে একটি উত্সাহ (Y)
ejbytes

লুপ বেশিরভাগ আমার জন্য কাজ করে। অন্যদের না। এটি একটি ব্র্যান্ড নতুন মেশিন, তাই আমি কল্পনা করতে পারি না কেন যে কোডটি অন্য সকলের জন্য কাজ করে আমার মেশিনে ব্যর্থ হয়; এখানে বিশেষ কিছুই বিশেষ নেই। যাইহোক, যখন লুপ বেশিরভাগ কাজ করে, আমি এখনও এটি নিয়ে দুটি সমস্যা আছে। প্রথমত, একটি রেসিডেন্টের একটি বিট বলে মনে হচ্ছে, যাতে আমি বারবার RShift আঘাত করলে, মাঝে মাঝে আমি হিটের জন্য একের পরিবর্তে দুটি লাইন আপ করতে পারব। এটি বিরক্তিকর, কিন্তু খুব খারাপ না।
Scott Severance

দ্বিতীয় সমস্যা, যা আরো গুরুত্বপূর্ণ, Shift + Up আর কাজ করে না। একটি অনুরূপ লুপ যোগ করে +Rshift:: এবং যোগ করা Send {Shift down} এবং Send {Shift up} বাম Shift + new_up চাপার সময় আমি কার্সারটিকে উপরে যেতে পারি, কিন্তু এটি পাঠ্য নির্বাচন করার সঠিক প্রভাব নেই।
Scott Severance

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

2

অন্যান্য উত্তর সব সমস্যার সঙ্গে পুনরাবৃত্তি হয় পরিবর্তন presses পূর্ববর্তী Hotkey subroutine এখনও নির্বাহ করা হচ্ছে, কারণ উপেক্ষা করা হবে। গতানুগতিক, #MaxThreadsPerHotkey 1, এবং #MaxThreads 10।

নীচে দুটি সম্ভাব্য সমাধান আছে। উভয় আমার জন্য ভাল কাজ করে।

# ম্যাক্সহ্রেডসফারহোটকি বাড়ান (এবং # ম্যাক্সহ্রেড)

SendMode Input
#MaxThreads 150
#MaxThreadsPerHotkey 150

; return the send command including any pressed modifier keys
getSendCommand() {
    sendCmd = {Up}
    sendCmd = % GetKeyState("LAlt", "P") ? "!" . sendCmd : sendCmd
    sendCmd = % GetKeyState("LCtrl", "P") ? "^" . sendCmd : sendCmd
    sendCmd = % GetKeyState("LShift", "P") ? "+" . sendCmd : sendCmd
    sendCmd = % GetKeyState("Win", "P") ? "#" . sendCmd : sendCmd
    return sendCmd
}

*$RShift::
    ; Immediately send an up key
    Send % getSendCommand()
    Sleep, 450

    While GetKeyState("RShift", "P") {  ; while key remains pressed
        Send % getSendCommand()  ; keep sending up keys
        Sleep, 30
    }
    Return

অবিলম্বে মৃত্যুদন্ড কার্যকর করা যখন পরিবর্তন চা মুক্তি হয়

SendMode Input

; return the send command including any pressed modifier keys
getSendCommand() {
    sendCmd = {Up}
    sendCmd = % GetKeyState("LAlt", "P") ? "!" . sendCmd : sendCmd
    sendCmd = % GetKeyState("LCtrl", "P") ? "^" . sendCmd : sendCmd
    sendCmd = % GetKeyState("LShift", "P") ? "+" . sendCmd : sendCmd
    sendCmd = % GetKeyState("Win", "P") ? "#" . sendCmd : sendCmd
    return sendCmd
}

*$RShift::
    ; Immediately send an up key
    Send % getSendCommand()

    ; Initial wait period (sleep time = 350 ms, execution time ~450 ms)
    Loop 35 {  ; Check keystate every 10 ms, abort execution as soon as shift is released
        Sleep, 10  ; 10 ms is the shortest possible sleep interval
        if not GetKeyState("RShift", "P") {
            return
        }
    }

    ; Start repeating if and while key is still pressed. Stop execution as soon as shift is released
    While GetKeyState("RShift", "P") {
        Send % getSendCommand()

        Loop 2 {
            if not GetKeyState("RShift", "P") {
                return
            }
            Sleep, 10
        }
    }
    Return

0

জেহোনস্টন 2 এর উত্তর আমাকে সমাধানটির অংশ হিসাবে দিয়েছে, আমি বেশ কয়েকটি জায়গা জিজ্ঞাসা করতে গিয়ে নিজেকে অনেক পরীক্ষা করেছি। আমি অবশেষে কি সঙ্গে ক্ষত আপ এখানে:

Up::RShift
*RShift::
    delay=400
    While GetKeyState("RShift", "P") {
        Send {Blind}{Up}
        Sleep %delay%    ; Set delay to taste
        delay=30
    }
    Return

এই কী পুনরাবৃত্তি সমস্যার সমাধান এবং শিফট + আপ প্রত্যাশিত কাজ হিসাবে সমাধান করে। আমি সমাধান না করে দুটি অসামান্য বিষয় আছে, কিন্তু যা অগ্রাধিকারের চেয়ে কম, আমি যে কোনওভাবে এই প্রশ্নের সমাধান করতে যাচ্ছি:

  1. জাতি অবস্থা সমাধান করা হয় না। আমি জ্যোস্টস্টন 2 এর মতো প্রথম লুপটি লুপের বাইরে রাখার চেষ্টা করেছি, কিন্তু এটি আমার জন্য কোনও কার্যকর প্রভাব ছিল না।
  2. এই সমস্ত সমস্যার মূল কারণ হল সিস্টেমটি Shift, Ctrl, বা Alt কীগুলি পুনরাবৃত্তি বলে মনে হয় না, যদিও অন্যরা পুনরাবৃত্তি করে। তাই, এএইচকে যা দেখবে তা পুনরাবৃত্তি করতে পারে না। যেহেতু আমি প্রত্যেকের সাহায্যের জন্য জিজ্ঞাসা করেছি এই সমস্যাটি আমার কাছে নেই, আমার সেটআপের সাথে কিছুটা ফ্যাকাশে হওয়া উচিত, তবে আমার কাছে কি হতে পারে তা কুয়াশাচ্ছন্ন ধারণা নেই।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.