উইন্ডোজ on এ পালাতে এবং নিয়ন্ত্রণে ক্যাপস লক ম্যাপিং


23

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



4
ঠিক আছে, শর্তসাপেক্ষে পুনরায় নিয়োগের বিষয়টি কভার করা হয়নি
wizzard0

আমি এটি রেজিস্টার সংশোধন করে তৈরি করেছি: commons.lbl.gov/display/~jwelcher@lbl.gov/… এটি করার পরে আপনার কম্পিউটার পুনরায় চালু করতে হবে। Win7।
স্ট্যাটিকর

উত্তর:


8

আপনি এটিকে এস্কেপিতে শার্পকিসের সাথে পুনরায় তৈরি করতে পারেন

যাইহোক, কীবোর্ড ড্রাইভার লেখার বাইরে শর্তসাপেক্ষে রিম্যাপিংয়ের বাস্তবসম্মত উপায় সম্পর্কে আমি জানি না।


1
আমি ইতিমধ্যে আমার ক্যাপস লক কীটি শার্পকিসের সাথে পালানোর জন্য ম্যাপযুক্ত করেছি।
জমির মনজি

6

এটি আপনি যা চান ঠিক তা নয় তবে আপনি যদি কিছু ত্রুটি নিয়ে বাঁচতে পারেন তবে খুব কাছে close এখানে একটি অটোহটকি স্ক্রিপ্ট রয়েছে:

$CapsLock::LControl
$CapsLock Up::Send {Escape}
return

এটি Ctrl এ ক্যাপস লকটিকে পুনরায় তৈরি করে এবং যখন আপনি কীটি প্রকাশ করেন তখন এস্কেপ প্রেরণ করে। প্রতিবার ক্যাপস লক কীটি ছাড়তে গেলে এস্কেপ কী টিপতে অভ্যস্ত হতে আমার কিছুটা সময় লেগেছিল। তবে ওয়েবসাইটের টেক্সারিগুলিতে এটি বেশ বেহুদা because

আমি যদিও এর সমাধান খুঁজছি। আমি প্রয়োজনে সি তে ড্রাইভার / কীবোর্ড হুক কিছু প্রকার লিখতে পারে, হাহা।

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


আপনি যদি এড়াতে কেবল মানচিত্র করতে চান তবে আপনি এটিকে সহজ করতে পারেন: $CapsLock::Escapeএবং তারপরে তাত্ক্ষণিক return
কাজার্ক

আমি বোঝার চেষ্টা করছি - সুতরাং স্ক্রিপ্টের ত্রুটিটি হ'ল ক্যাপস লকটি টিপানো এবং ছেড়ে দেওয়া হলে, একটি সিটিআরএল এবং এস্কেপ উভয়ই প্রেরণ করা হয়?
ষি

5

এটি উপরের রিচের সমাধানের পরে পূর্বে উল্লিখিত ভিম উইকিয়া পৃষ্ঠায় উপস্থিত হতে পারে ।

; Author: fwompner gmail com
#InstallKeybdHook
SetCapsLockState, alwaysoff
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
    Send {Esc}
}
return

এটি আমার কাজ নয়, তবে আমি এটি ব্যবহার শুরু করেছি এবং এটি বর্ণিত হিসাবে ঠিক ঠিক কাজ করে, কোনও বাস্তব সতর্কীকরণ নেই এবং কারণ এটি কোনও ব্যতিক্রমকে মানচিত্র করার চেষ্টা করে না (কারণ তারা অপ্রয়োজনীয়) এটি ক্রোমে বেশ সুন্দরভাবে আচরণ করে (আমি সত্যই সত্যই এটি ভিমিয়ামের জন্য চেয়েছিলেন)।


আমি এই স্ক্রিপ্টটি ব্যবহার করছি এবং এটি আমার পক্ষে কাজ করে। আমি এটিকে ক্যাপস লকটিকে ভিএম এর জন্য নিয়ন্ত্রণ / অব্যাহতিতে রিব্যান্ডিং করার জন্য ব্যবহার করছি।
ব্র্যান্ডন

1
কাজ করে! কেবল পরিষ্কার করার জন্য, এটি একটি অটোহটকি স্ক্রিপ্ট। এখানেই শুরু করুন: অটোহোটকি.কম
মাইকেল ফক্স

পাঠকদের সুবিধার জন্য যেগুলি আমার সংক্ষেপে মন্তব্যগুলি ক্লিক করে এবং দেখে নাও থাকতে পারে, মনে হয় আপনি চাপ Caps Lockদেওয়ার আগে টিপুন তবেই এই সমাধানটি কার্যকর হয় ShiftCaps+Shift+Xকাজ করে কিন্তু Shift+Caps+Xকরে না।
ধনী

4

আমি এর জন্য নীচের অটোহটকি স্ক্রিপ্টটি ব্যবহার করি , আমি ভিম টিপস উইকিতে পাওয়া একটি থেকে অভিযোজিত । বাস্তবায়নটি কিছুটা হ্যাকি, তবে এটি "আমার পক্ষে কাজ করে।" (এবং এই পৃষ্ঠাতে অন্যান্য উত্তরগুলির তুলনায় ২০১-0-০৯ -১৯, এটি আমি সম্পূর্ণ অবহিত না হয়ে বিষয়টি সম্পূর্ণভাবে সমাধান করে aware)

মূল কোডার উল্লেখ করেছে:

স্ক্রিপ্টটি "মিথ্যা ধনাত্মক" সনাক্ত এবং এড়াতে চেষ্টা করে যেখানে আপনি নিয়ন্ত্রণ এবং অন্য কী টিপুন এবং উভয়ই খুব তাড়াতাড়ি প্রকাশ করেন, অর্থাত সময়সীমার আগে before

আপনার কীবোর্ডটি কতটা ভাল বা খারাপ তার উপর নির্ভর করে 250 মিমি মানটি এবং আপনার নিজের প্রতিক্রিয়ার সময়টির উপর নির্ভর করে নিশ্চিত করুন। এটি সম্ভবত নিজের পছন্দ অনুযায়ী পরীক্ষামূলকভাবে টুইট করার মতো একটি জিনিস।

CapsLockCtrlEPress.ahk সংক্ষিপ্তসার :

g_LastCtrlKeyDownTime := 0
g_AbortSendEsc := false
g_ControlRepeatDetected := false

*CapsLock::
    if (g_ControlRepeatDetected)
    {
        return
    }

    send,{Ctrl down}
    g_LastCtrlKeyDownTime := A_TickCount
    g_AbortSendEsc := false
    g_ControlRepeatDetected := true

    return

*CapsLock Up::
    send,{Ctrl up}
    g_ControlRepeatDetected := false
    if (g_AbortSendEsc)
    {
        return
    }
    current_time := A_TickCount
    time_elapsed := current_time - g_LastCtrlKeyDownTime
    if (time_elapsed <= 250)
    {
        SendInput {Esc}
    }
    return

~*^a::
~*^b::
~*^c::
~*^d::
~*^e::
~*^f::
~*^g::
~*^h::
~*^i::
~*^j::
~*^k::
~*^l::
~*^m::
~*^n::
~*^o::
~*^p::
~*^q::
~*^r::
~*^s::
~*^t::
~*^u::
~*^v::
~*^w::
~*^x::
~*^y::
~*^z::
~*^1::
~*^2::
~*^3::
~*^4::
~*^5::
~*^6::
~*^7::
~*^8::
~*^9::
~*^0::
~*^Space::
~*^Backspace::
~*^Delete::
~*^Insert::
~*^Home::
~*^End::
~*^PgUp::
~*^PgDn::
~*^Tab::
~*^Return::
~*^,::
~*^.::
~*^/::
~*^;::
~*^'::
~*^[::
~*^]::
~*^\::
~*^-::
~*^=::
~*^`::
~*^F1::
~*^F2::
~*^F3::
~*^F4::
~*^F5::
~*^F6::
~*^F7::
~*^F8::
~*^F9::
~*^F10::
~*^F11::
~*^F12::
    g_AbortSendEsc := true
    return

3

এখানে একটি রেজিস্ট্রি এন্ট্রি রয়েছে যা উইন্ডোজ on এ পালাতে ক্যাপস লকটিকে মানচিত্র করে।


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,46,00,01,00,3a,00,00,00,00,00

উপরেরটি একটি .reg এক্সটেনশন (ম্যাপক্যাপলকস.গ্রিগের মত) ফাইলগুলিতে সংরক্ষণ করুন এবং আপনার মেশিনে আমদানি / সম্পাদন করুন।


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

দুর্দান্ত পয়েন্ট। আমি উত্তরটি আপডেট করব
স্ট্রাইকার

এটি CapsLock এ স্ক্রোললক কীটিও ম্যাপ করবে। যদি এটি আপনি না চান তবে মানটি ব্যবহার করুন hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00। এই মানচিত্রের দরকারী সম্পাদক হলেন প্লেক্সডেটা থেকে স্ক্যানকোডম্যাপিং
আপেলশেল

2

আসলে আমি মনে করি আমি এখানে নিখুঁত সমাধান তৈরি করেছি:

একজন ভিম ব্যবহারকারী হিসাবে এটি আমার পক্ষে একটি আবশ্যক, এবং আমি এটি দীর্ঘকাল ধরে উইন্ডোজটিতে সাফল্যের সাথে ব্যবহার করছি। HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runএক্সিকিউটেবলকে নির্দেশ করতে আমি কেবল রেজিডিট দিয়ে একটি এন্ট্রি তৈরি করি এবং এটি সহজভাবে কাজ করে।

নির্ভরতাগুলি সংকলন এবং ইনস্টল করতে দয়া করে আটকানোর জন্য সংগ্রহস্থল README এবং প্রধান ওয়েবসাইটটি পরীক্ষা করুন।

আমি এখানে এর লিনাক্স সংস্করণও তৈরি করেছি:


2

আমি এর অনুরূপ কিছু খুঁজছিলাম, তবে দুর্ভাগ্যক্রমে এএইচকে স্ক্রিপ্টগুলি এখানে উত্তরগুলি থেকে আমার পক্ষে ভাল কাজ করে নি।

যাইহোক, আমি একটি সমাধান খুঁজে পেয়েছি যা এটি আমার জন্য ভিম উইকিতে সমাধান করেছে ।

  • প্রথমে ডুয়াল-কী-রিমপ নামক নীচের অ্যাপটি ডাউনলোড করুন ।
  • আপনার পছন্দসই জায়গায় জিপটি বের করুন (আমি এইগুলির মতো ইউটিলিটিগুলি সঞ্চয় করি C:\Users\%username%\util\)
  • নিম্নলিখিত ডিরেক্টরিটি খুলুন: C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\এবং শর্টকাট তৈরি করতে ALT কে ধরে রেখে ডুয়াল-কী-রিমপ.এক্সে ফাইলটি সেখানে টেনে আনুন । (অথবা ডান ক্লিক করুন এবং 'শর্টকাট তৈরি করুন' নির্বাচন করুন এবং শর্টকাটটি আপনার স্টার্টআপ ডিরেক্টরিতে সরান)।
  • লগ ইন এবং আউট আপনি লগ ইন করার কয়েক সেকেন্ড পরে রিবাউন্ড হবে।

0

এই নিবন্ধে উল্লিখিত উইন্ডোজ সার্ভার 2003 রিসোর্স কিট সরঞ্জামগুলির মধ্যে অন্তর্ভুক্ত করা রিমপকি.এক্সই প্রোগ্রামটি উইন্ডোজ 7 এ দুর্দান্তভাবে কাজ করে।


1
উত্তর হিসাবে লিঙ্ক ব্যবহার এড়াতে দয়া করে। পরিবর্তে, আপনার সেরা লিঙ্কগুলির বিষয়বস্তু ব্যাখ্যা করার চেষ্টা করুন এবং কেবলমাত্র সেগুলি এটিকে রেফারেন্স হিসাবে ব্যবহার করুন। লিঙ্কটি যদি কখনও ভেঙে যায় তবে আপনার পুরো উত্তরটিও দেয়।
লরেঞ্জো ভন ম্যাটারহর্ন

0

আমার পক্ষে কার্যকর উত্তরটি সম্পর্কে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই। আমি এখনও এটি upvated যদিও।

গোলমরিচ-চিকোর উত্তর আমার পক্ষে কাজ করেছিল।

ক্যাপস লক কী নিজে থেকে টিপলে এস্কেপ কী হিসাবে আচরণ করে। এবং অন্যদের সাথে একত্রিত হলে Ctrl কী এর মতো আচরণ করে। আমারও এর জন্য একই ব্যবহারের মামলা রয়েছে। তেজ।

তিনি প্রদত্ত লিঙ্কটিতে থাকা নির্দেশাবলী অনুসরণ করার পক্ষে যথেষ্ট সহজ।


0

আপনি যদি সংক্ষিপ্ত উত্স কোডটি নিজেরাই সংকলন করতে আপত্তি না করেন তবে নীচের কোডটি ব্যবহার করতে পারেন। আপনার এটিকে উইন্ডোজ কনসোল অ্যাপ্লিকেশন হিসাবে সংকলন করতে হবে। উদাহরণস্বরূপ, ভিজ্যুয়াল সি ++ কমান্ড প্রম্পটে আপনি এটি দিয়ে সংকলন করতে পারেন

cl /D_WIN32_WINNT=0x0401 remap_capslock.cpp /EHsc /link user32.lib

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

// The app allows to remap CapsLock key to Esc (if pressed separately) or to Ctrl (if pressed with other keys).
// This may be useful for Vim.
// To compile from Visual C++ command prompt: 
//    cl /D_WIN32_WINNT=0x0401 remap_capslock.cpp /EHsc /link user32.lib
// Original source (which supported only Caps-Ctrl remapping): /superuser//a/1490007/22750

#include <windows.h>
#include <iostream>
#include <set>

HHOOK hook;
std::set<WORD> keys_down;
bool caps_down = false;
bool caps_was_down_with_another_key = false;

LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam) {
    KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *) lParam;
    INPUT input[3] = {{ INPUT_KEYBOARD }, { INPUT_KEYBOARD }, { INPUT_KEYBOARD }};

    if ((p->flags & LLKHF_INJECTED) == 0) {
        std::cout << "nCode=" << nCode << "\twParam=" << wParam << "\tvkCode=" << p->vkCode << "\tscanCode=" << p->scanCode << std::endl;
        bool keyup = wParam == WM_KEYUP || wParam == WM_SYSKEYUP;
        if (p->vkCode == VK_CAPITAL) {
            if (keyup) {
                if (caps_was_down_with_another_key) {
                    std::cout << "Remapping CAPSLOCK UP to CTRL UP" << std::endl;
                    input[0].ki.dwFlags = KEYEVENTF_KEYUP;
                    input[0].ki.wVk = VK_LCONTROL;
                    SendInput(1, input, sizeof (INPUT));
                } else {
                    std::cout << "Remapping CAPSLOCK UP to ESCAPE DOWN&UP" << std::endl;
                    input[0].ki.dwFlags = KEYEVENTF_KEYUP;
                    input[0].ki.wVk = VK_LCONTROL;
                    input[1].ki.dwFlags = 0;
                    input[1].ki.wVk = VK_ESCAPE;
                    input[2].ki.dwFlags = KEYEVENTF_KEYUP;
                    input[2].ki.wVk = VK_ESCAPE;
                    SendInput(3, input, sizeof (INPUT));
                }
                caps_down = false;
                caps_was_down_with_another_key = false;
            } else {
                std::cout << "Remapping CAPSLOCK DOWN to CTRL DOWN" << std::endl;
                caps_down = true;
                input[0].ki.dwFlags = 0;
                input[0].ki.wVk = VK_LCONTROL;
                SendInput(1, input, sizeof (INPUT));
            }
            return 1;
        } else {
            if (keyup) {
                keys_down.erase(p->vkCode);
            } else {
                keys_down.insert(p->vkCode);
            }
            std::cout << keys_down.size() << " keys down" << std::endl;
        }
        if (caps_down && !keys_down.empty()) {
            caps_was_down_with_another_key = true;
        }
    }
    return CallNextHookEx(hook, nCode, wParam, lParam);
}

int main(int argc, char **argv){
    MSG messages;
    hook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardHook, NULL, 0);
    if (hook == NULL) {
        std::cout << "Error " << GetLastError() << std::endl;
        return 1;
    }
    std::cout << "Mapping ??? CAPSLOCK=>LCTRL and LCTRL=>CAPSLOCK..." << std::endl;
    while (GetMessage (&messages, NULL, 0, 0)) {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return 0;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.