উবুন্টুতে আমি এর জন্য কোনও কমান্ড লাইন সরঞ্জাম জানি না। (নম লকের জন্য নামফলক রয়েছে )) এখানে একটি ওয়ান-লাইনার রয়েছে যা আপনি টার্মিনাল উইন্ডোতে অনুলিপি করতে পারেন:
python -c 'from ctypes import *; X11 = cdll.LoadLibrary("libX11.so.6"); display = X11.XOpenDisplay(None); X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0)); X11.XCloseDisplay(display)'
এখানে এটি আবার আরও প্রসারিত আকারে। আমরা সরাসরি এক্স লাইব্রেরি থেকে সি ফাংশনগুলি কল করতে পাইথন সিটিপস লাইব্রেরিটি ব্যবহার করি । ফাংশনটি মূল কীবোর্ডে ( = 0x0100) কীবোর্ড লকগুলির স্থিতি পরিবর্তন করে , ক্যাপস লককে প্রভাবিত করে (2), এটি 0 (অফ) এ সেট করে।XkbLockModifiers
XkbUseCoreKbd
#!/usr/bin/env python
from ctypes import *
X11 = cdll.LoadLibrary("libX11.so.6")
display = X11.XOpenDisplay(None)
X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0))
X11.XCloseDisplay(display)
আপনার যদি কোনও আটকে থাকা মডিফায়ার থাকে তবে আপনি যে মোডিফায়ারটি বন্ধ করতে চান তার 2 টি পরিবর্তন করুন। সংশোধকগুলি হ'ল 1 = শিফট, 2 = লক (ক্যাপস লক), 4 = নিয়ন্ত্রণ, 8 = মোড 1, 16 = মোড 2, 32 = মোড 3, 64 = মোড 4, 128 = মোড 5। চালান xmodmap -pm
কি Mod5 মাধ্যমে Mod1 মিলা দেখতে। উদাহরণস্বরূপ, সমস্ত সংশোধক বন্ধ করতে কল করুন X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(255), c_uint(0))
। মোড 2-এ থাকা নাম লকটি চালু করতে এবং একই সাথে ক্যাপস লকটি বন্ধ করুন, কল করুন X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2 | 16), c_uint(16))
।
পাইথনের পরিবর্তে যদি আপনি একটি ছোট বাইনারি তৈরি করতে চান তবে এখানে একটি সি সংস্করণ রয়েছে। সঙ্গে কম্পাইল gcc -O -Wall -o caps_lock_off caps_lock_off.c -lX11
, প্যাকেজের সাথে build-essentials
এবং libx11-dev
ইনস্টল করা নেই।
#include <stdio.h>
#include <X11/X.h>
#include <X11/XKBlib.h>
int main()
{
Display *display = XOpenDisplay(NULL);
if (display == NULL) {
fprintf(stderr, "Couldn't open display\n");
return 2;
}
Bool sent = XkbLockModifiers(display, XkbUseCoreKbd, LockMask, 0);
if (!sent) {
fprintf(stderr, "Couldn't send LatchLockState\n");
return 1;
}
#ifdef REPORT_STATE
XkbStateRec xkb_state;
Status status = XkbGetState(display, XkbUseCoreKbd, &xkb_state);
if (status) {
fprintf(stderr, "XkbGetState returned %d\n", status);
return 1;
}
printf("state.group=%02x\n", xkb_state.group);
printf("state.locked_group=%02x\n", xkb_state.locked_group);
printf("state.base_group=%02x\n", xkb_state.base_group);
printf("state.latched_group=%02x\n", xkb_state.latched_group);
printf("state.mods=%02x\n", xkb_state.mods);
printf("state.base_mods=%02x\n", xkb_state.base_mods);
printf("state.latched_mods=%02x\n", xkb_state.latched_mods);
printf("state.locked_mods=%02x\n", xkb_state.locked_mods);
printf("state.compat_state=%02x\n", xkb_state.compat_state);
printf("state.grab_mods=%02x\n", xkb_state.grab_mods);
printf("state.compat_grab_mods=%02x\n", xkb_state.compat_grab_mods);
printf("state.lookup_mods=%02x\n", xkb_state.lookup_mods);
printf("state.compat_lookup_mods=%02x\n", xkb_state.compat_lookup_mods);
printf("state.ptr_buttons=%02x\n", xkb_state.ptr_buttons);
#endif
int err = XCloseDisplay(display);
if (err) {
fprintf(stderr, "XCloseDisplay returned %d\n", err);
return 1;
}
return 0;
}
অস্থায়ীভাবে ক্যাপস লককে উপেক্ষা করার একটি উপায় হ'ল আগ্রহ of
xkbset nullify lock
এর পরে, ক্যাপস লক কার্যকরভাবে স্থায়ীভাবে বন্ধ হয়ে যাবে, যতক্ষণ না আপনি এটিকে পুনরায় সক্ষম করেন xkbset nullify -lock
।