আমি যদি অন্য কোনও কী দিয়ে চাপ না দেওয়া হয় তবে ক্যাপস লক কীটি থেকে পালাতে ম্যাপ করতে সক্ষম হতে চাই এবং যদি তা থাকে তবে এটি নিয়ন্ত্রণ করুন। আমি কীভাবে উইন্ডোজ 7 এ এটি করতে পারি?
আমি যদি অন্য কোনও কী দিয়ে চাপ না দেওয়া হয় তবে ক্যাপস লক কীটি থেকে পালাতে ম্যাপ করতে সক্ষম হতে চাই এবং যদি তা থাকে তবে এটি নিয়ন্ত্রণ করুন। আমি কীভাবে উইন্ডোজ 7 এ এটি করতে পারি?
উত্তর:
আপনি এটিকে এস্কেপিতে শার্পকিসের সাথে পুনরায় তৈরি করতে পারেন
যাইহোক, কীবোর্ড ড্রাইভার লেখার বাইরে শর্তসাপেক্ষে রিম্যাপিংয়ের বাস্তবসম্মত উপায় সম্পর্কে আমি জানি না।
এটি আপনি যা চান ঠিক তা নয় তবে আপনি যদি কিছু ত্রুটি নিয়ে বাঁচতে পারেন তবে খুব কাছে close এখানে একটি অটোহটকি স্ক্রিপ্ট রয়েছে:
$CapsLock::LControl
$CapsLock Up::Send {Escape}
return
এটি Ctrl এ ক্যাপস লকটিকে পুনরায় তৈরি করে এবং যখন আপনি কীটি প্রকাশ করেন তখন এস্কেপ প্রেরণ করে। প্রতিবার ক্যাপস লক কীটি ছাড়তে গেলে এস্কেপ কী টিপতে অভ্যস্ত হতে আমার কিছুটা সময় লেগেছিল। তবে ওয়েবসাইটের টেক্সারিগুলিতে এটি বেশ বেহুদা because
আমি যদিও এর সমাধান খুঁজছি। আমি প্রয়োজনে সি তে ড্রাইভার / কীবোর্ড হুক কিছু প্রকার লিখতে পারে, হাহা।
ভিম-নির্দিষ্ট বিরক্তিকর: এটি সিটিআরএল-কে মিশ্রণটি ব্যবহার করে ডিগ্রাফগুলি টাইপ করা অসম্ভব করে তোলে এবং এটি ব্যবহার করার আগে আপনি সাধারণত বিরক্তিকর হন। এটি আমার পক্ষে ভাল কাজ করেছে কারণ আমি যতটা সম্ভব এসকে এবং সিআরটিএল কী এড়াতে কিছু করতে চাই।
$CapsLock::Escape
এবং তারপরে তাত্ক্ষণিক return
।
এটি উপরের রিচের সমাধানের পরে পূর্বে উল্লিখিত ভিম উইকিয়া পৃষ্ঠায় উপস্থিত হতে পারে ।
; Author: fwompner gmail com
#InstallKeybdHook
SetCapsLockState, alwaysoff
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
Send {Esc}
}
return
এটি আমার কাজ নয়, তবে আমি এটি ব্যবহার শুরু করেছি এবং এটি বর্ণিত হিসাবে ঠিক ঠিক কাজ করে, কোনও বাস্তব সতর্কীকরণ নেই এবং কারণ এটি কোনও ব্যতিক্রমকে মানচিত্র করার চেষ্টা করে না (কারণ তারা অপ্রয়োজনীয়) এটি ক্রোমে বেশ সুন্দরভাবে আচরণ করে (আমি সত্যই সত্যই এটি ভিমিয়ামের জন্য চেয়েছিলেন)।
Caps Lock
দেওয়ার আগে টিপুন তবেই এই সমাধানটি কার্যকর হয় Shift
। Caps+Shift+X
কাজ করে কিন্তু Shift+Caps+X
করে না।
আমি এর জন্য নীচের অটোহটকি স্ক্রিপ্টটি ব্যবহার করি , আমি ভিম টিপস উইকিতে পাওয়া একটি থেকে অভিযোজিত । বাস্তবায়নটি কিছুটা হ্যাকি, তবে এটি "আমার পক্ষে কাজ করে।" (এবং এই পৃষ্ঠাতে অন্যান্য উত্তরগুলির তুলনায় ২০১-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
এখানে একটি রেজিস্ট্রি এন্ট্রি রয়েছে যা উইন্ডোজ 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 এক্সটেনশন (ম্যাপক্যাপলকস.গ্রিগের মত) ফাইলগুলিতে সংরক্ষণ করুন এবং আপনার মেশিনে আমদানি / সম্পাদন করুন।
hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00
। এই মানচিত্রের দরকারী সম্পাদক হলেন প্লেক্সডেটা থেকে স্ক্যানকোডম্যাপিং ।
আসলে আমি মনে করি আমি এখানে নিখুঁত সমাধান তৈরি করেছি:
একজন ভিম ব্যবহারকারী হিসাবে এটি আমার পক্ষে একটি আবশ্যক, এবং আমি এটি দীর্ঘকাল ধরে উইন্ডোজটিতে সাফল্যের সাথে ব্যবহার করছি। HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
এক্সিকিউটেবলকে নির্দেশ করতে আমি কেবল রেজিডিট দিয়ে একটি এন্ট্রি তৈরি করি এবং এটি সহজভাবে কাজ করে।
নির্ভরতাগুলি সংকলন এবং ইনস্টল করতে দয়া করে আটকানোর জন্য সংগ্রহস্থল README এবং প্রধান ওয়েবসাইটটি পরীক্ষা করুন।
আমি এখানে এর লিনাক্স সংস্করণও তৈরি করেছি:
আমি এর অনুরূপ কিছু খুঁজছিলাম, তবে দুর্ভাগ্যক্রমে এএইচকে স্ক্রিপ্টগুলি এখানে উত্তরগুলি থেকে আমার পক্ষে ভাল কাজ করে নি।
যাইহোক, আমি একটি সমাধান খুঁজে পেয়েছি যা এটি আমার জন্য ভিম উইকিতে সমাধান করেছে ।
C:\Users\%username%\util\
)C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
এবং শর্টকাট তৈরি করতে ALT কে ধরে রেখে ডুয়াল-কী-রিমপ.এক্সে ফাইলটি সেখানে টেনে আনুন । (অথবা ডান ক্লিক করুন এবং 'শর্টকাট তৈরি করুন' নির্বাচন করুন এবং শর্টকাটটি আপনার স্টার্টআপ ডিরেক্টরিতে সরান)।এই নিবন্ধে উল্লিখিত উইন্ডোজ সার্ভার 2003 রিসোর্স কিট সরঞ্জামগুলির মধ্যে অন্তর্ভুক্ত করা রিমপকি.এক্সই প্রোগ্রামটি উইন্ডোজ 7 এ দুর্দান্তভাবে কাজ করে।
আমার পক্ষে কার্যকর উত্তরটি সম্পর্কে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই। আমি এখনও এটি upvated যদিও।
গোলমরিচ-চিকোর উত্তর আমার পক্ষে কাজ করেছিল।
ক্যাপস লক কী নিজে থেকে টিপলে এস্কেপ কী হিসাবে আচরণ করে। এবং অন্যদের সাথে একত্রিত হলে Ctrl কী এর মতো আচরণ করে। আমারও এর জন্য একই ব্যবহারের মামলা রয়েছে। তেজ।
তিনি প্রদত্ত লিঙ্কটিতে থাকা নির্দেশাবলী অনুসরণ করার পক্ষে যথেষ্ট সহজ।
আপনি যদি সংক্ষিপ্ত উত্স কোডটি নিজেরাই সংকলন করতে আপত্তি না করেন তবে নীচের কোডটি ব্যবহার করতে পারেন। আপনার এটিকে উইন্ডোজ কনসোল অ্যাপ্লিকেশন হিসাবে সংকলন করতে হবে। উদাহরণস্বরূপ, ভিজ্যুয়াল সি ++ কমান্ড প্রম্পটে আপনি এটি দিয়ে সংকলন করতে পারেন
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;
}