यूनिक्स पर कीबोर्ड और माउस इनपुट को अक्षम करें (X के तहत)


28

प्रोग्रामर कीबोर्ड और माउस को अस्थायी रूप से "फ्रीज" कैसे कर सकता है, ताकि कोई सिस्टम के साथ खिलवाड़ न कर सके?

कई संभावनाएं हैं जहां यह उपयोगी है। उदाहरण के लिए, मेरे पास एक लैपटॉप है और मैं यह सुनिश्चित करना चाहता हूं कि मैं बाहर निकलते समय कोई इसका उपयोग न करूं, भले ही किसी को पासवर्ड पता हो या वह इसका अनुमान लगा सके (जैसे पत्नी या बच्चे), साथ ही साथ चोरों की भूख (जैसा लगता है) -functioning)। या मैं दूरस्थ रूप से कुछ कर रहा हूं इसलिए मैं यह सुनिश्चित करना चाहता हूं कि कंप्यूटर पर उपयोगकर्ता परेशान न हो।


जवाबों:


24

मान लें कि आपका GUI X- आधारित है (जैसा कि लगभग सभी UNIX GUI हैं), उपयोग करें xinput

सबसे पहले, अपने उपकरणों को सूचीबद्ध करें:

$ xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Windows mouse                             id=6    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
↳ Windows keyboard                          id=7    [slave  keyboard (3)]

अपने माउस के लिए विवरणों को सूचीबद्ध करें (आईडी = 6 हमारे उदाहरण में):

$ xinput --list-props 6
Device 'Windows mouse':
    Device Enabled (112):   1
    Coordinate Transformation Matrix (114): 1.000000, 0.000000, 0.000000, 0.000000,   1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (222):     0
    Device Accel Constant Deceleration (223):       1.000000
    Device Accel Adaptive Deceleration (224):       1.000000
    Device Accel Velocity Scaling (225):    10.000000

अब इसे अक्षम करें:

$ export DISPLAY=:0
$ xinput set-int-prop 6 "Device Enabled" 8 0

इसे सक्षम करने के लिए:

$ xinput set-int-prop 6 "Device Enabled" 8 1

वही कीबोर्ड के लिए जाता है, बस इंट-प्रोप नंबर को उचित आईडी से बदल दें।
टेस्ट किया और साइबरविन पर काम किया।

बेशक, आपको पहले से योजना बनानी होगी कि आप अपने उपकरणों को फिर से कैसे सक्षम करेंगे। जैसे कि इसे क्रोन पर शेड्यूल करना, इसे दूरस्थ रूप से फिर से सक्षम करना या पहली बार में उनमें से केवल एक को अक्षम करना।


यहां कोई अन्य उत्तर प्रश्न का उत्तर नहीं देता है।
फिलोमथ

मेरे मामले में, माउस को निष्क्रिय करने की कमांड इस तरह दिखती है: xinput set-int-prop 9 "Device Enabled" 8 0- केवल, 1) मैं माउस पॉइंटर को भी छिपाना चाहूंगा, और 2) अगर मैं X से एक tty (लिनक्स कंसोल / VTs), और फिर से X पर जाएं, यह रीसेट है ( xinput list-props 9इसकी पुष्टि करता है)।
इमानुएल बर्ग

क्या मैं "मास्टर पॉइंटर" डिवाइस को अक्षम कर सकता हूं?
ed22

14

xinput --set-int-propपदावनत किया गया है। आपको --set-propइसके बजाय उपयोग करना चाहिए । इसके अलावा, xinput --enable [device]और xinput --disable [device]क्रमशः उपकरणों को सक्षम और अक्षम करने के लिए उपयोग किया जा सकता है।

यहां एक शेल स्क्रिप्ट है जिसका उपयोग मैं अपने लैपटॉप के टचपैड को सक्षम, अक्षम और टॉगल करने के लिए करता हूं:

#!/bin/bash
# Enables, disables, or toggles device

device='AlpsPS/2 ALPS GlidePoint'
if [[ $1 == -e ]] ; then
    # Enable
    #xinput --set-prop "$device" "Device Enabled" 1
    xinput --enable "$device"
elif [[ $1 == -d ]] ; then
    # Disable
    #xinput --set-prop "$device" "Device Enabled" 0
    xinput --disable "$device"
elif [[ $1 == -t ]] ; then
    # Toggle
    if [[ $(xinput list-props "$device" |
       grep "Device Enabled") == *:*1 ]] ; then
           #xinput --set-prop "$device" "Device Enabled" 0
           xinput --disable "$device"
    else
        #xinput --set-prop "$device" "Device Enabled" 1
        xinput --enable "$device"
    fi
else
    echo "usage: $0 [-edt]"
fi

फिलोमथ की पोस्ट पर मेरी टिप्पणी देखें। मैं एक ही समस्या के लिए मिल गया है xinput --disable 9
इमानुएल बर्ग

6

Xinput का उपयोग करके उत्तर दिया गया प्रश्न सही है, लेकिन यहां एक त्वरित एक है अगर आप सभी की तलाश कर रहे हैं तो एक साधारण स्क्रीनसेवर टाइप लॉक है। मैंने इसे 90 के दशक में लिखा था, और जब तक आप पासवर्ड टाइप नहीं करते तब तक यह सब एक्स सर्वर के कीबोर्ड और माउस ईवेंट को खा जाता है। जब आप इसे सही ढंग से टाइप करते हैं तो बाहर निकलने के अलावा अन्य कोई प्रतिक्रिया नहीं।

http://ishiboo.com/~danny/Projects/xl/

मैं इसे स्क्रीन-लॉक के रूप में उपयोग करता हूं, वास्तव में आप इसे कैसे उपयोग करना चाहते हैं।


मैंने इसके लिए वोट दिया क्योंकि यह उस तरह का समाधान है जो मैं चाहता हूं, लेकिन यह मेरे लिए लिनक्स पर छाया पासवर्ड के साथ काम नहीं करता है। एक प्रक्रिया का उपयोग / आदि / छाया और संबंधित कार्यों के लिए रूट होना है, लेकिन मैं एक गैर-रूट उपयोगकर्ता के रूप में xl चलाना चाहता हूं। मेरा उपयोग मामला: जब हम कंप्यूटर पर शो देखते हैं, तो मेरी बच्ची को कीबोर्ड पर मारना पसंद है! xscreensaver इसके लिए मददगार नहीं है
सैम वॉटकिंस

आपका जवाब "चूसना रहित" या यूनिक्स प्रोग्रामिंग का एक बड़ा उदाहरण है "एक काम करो और इसे अच्छी तरह से करो ..." सिवाय इसके कि यह मेरे लिए काम नहीं करता है (छाया पासवर्ड के साथ!) मेरे उपयोग के मामले में मुझे खुशी है! -समर्थन एक पासवर्ड है, तो यह ठीक है। अब मुझे पावर बटन को निष्क्रिय करने का तरीका सिखाएं, यह मेरे बच्चे का पसंदीदा बटन है!
सैम वॉटकिंस

आपको जड़ क्यों नहीं चाहिए? एक्सएल बाइनरी पर मुकदमा क्यों नहीं?
डैनी दुलाई

BTW, आप कमांडलाइन पर या अब एक पर्यावरण चर के माध्यम से पासवर्ड निर्दिष्ट कर सकते हैं।
डैनी दुलाई

क्या एक मानक एक्स टूलसेट और एक शेल स्क्रिप्ट के साथ एक्स इनपुट घटनाओं को खाना संभव है?
अलेक्जेंडर शेकब्लिकिन

2

आपका उत्तर संभवतः आपके दूसरे उपयोग के मामले (दूरस्थ रूप से कुछ करने) के लिए सबसे अच्छा है, लेकिन संभवतः आपके पहले (कीबोर्ड से दूर होने के लिए) नहीं है। जब आप वापस लौटेंगे, तो आप फिर से xinput कैसे चलाएंगे?

सिस्टम को लॉक करने का मानक समाधान इससे दूर है , जो कि एक्सस्क्रीनस्क्रीन है , जो कि अधिकांश डिस्ट्रोस में डिफ़ॉल्ट रूप से स्थापित है। यदि कीबोर्ड को लॉक करने के लिए कॉन्फ़िगर किया गया है, तो यह अनलॉक करने से पहले आपके पासवर्ड के लिए संकेत देगा।


मैंने अपडेट कर दिया है।
फिलोमथ

2

कम से कम डेबियन-आधारित सिस्टम जैसे कि उबंटू में एक उपयोगिता है xtrlock (1)जो पैकेज रिपॉजिटरी के माध्यम से उपलब्ध है।

यह उपयोगिता कीबोर्ड और माउस को तब तक लॉक करती है जब तक कि विंडोज़ दिखाई देते समय पासवर्ड दर्ज न हो जाए। मुझे यह जानकारी प्रदर्शित करने वाले कंप्यूटर और इस तरह के लिए उपयोगी लगता है।


यह सबसे सरल और हल्के विकल्प की तरह लगता है, और यह 90 के दशक के मध्य के बाद से है। एक समस्या यह है कि मुझे लगता है कि बंद कर्सर छवि को छिपाना संभव नहीं है, जो दुर्भाग्य से साइनेज के लिए बेकार है।
एनएक्सएल

1

आपके हार्डवेयर के आधार पर, आप अपने हार्डवेयर को नियंत्रित करते हुए, मॉड्यूल को हटा सकते हैं। मेरे पास इस तरह की स्क्रिप्ट है, touchpadtoggleअपने टचपैड को सक्षम और अक्षम करने के लिए।

lsmod | grep -q psmouse && rmmod psmouse || modprobe psmouse

लेकिन कीबोर्ड में मॉड्यूल जुड़ा हुआ नहीं लगता है, और psmouse- मॉड्यूल केवल कभी-कभी काम करेगा।


1

यदि आप एक डेस्कटॉप एनवायरनमेंट या लॉगिन मैनेजर, (GNOME, KDE, XFCE, LXDE) का उपयोग कर रहे हैं, तो उनमें से लगभग सभी में लॉक स्क्रीन फंक्शन होता है, जहाँ आपको अपने प्रोग्राम्स पर वापस जाने के लिए अपना पासवर्ड टाइप करना होता है।

हालाँकि, यह वास्तव में सरल है, मुझे लगता है कि आपकी समस्या अधिक जटिल / भिन्न है।


मैंने अपडेट कर दिया है।
फिलोमथ

1

मैंने ऐसा किया (ऊपर .zshrc, लेकिन .bashrcसाथ ही साथ काम करना चाहिए ) ऐसा करने के लिए, ऊपर दिए गए उत्तरों की मदद से। कीबोर्ड के साथ संगत करने के लिए, पैरामीटर को अंदर बदलें grep Mouse

setmouse () {
 xinput \
  $1 \
  `xinput | grep Mouse | tr -d " " | tr "\t" " " | cut -d" " -f2 | cut -d"=" -f2`
}
offmouse () { setmouse disable }
onmouse  () { setmouse enable  }

एसओ पर एक समान प्रश्न के लिए मेरे उत्तर की जांच करें - यह भी ऐसा ही करता है, लेकिन एक ट्टी से मंगवाया जा सकता है, और, यह भी (वर्कअराउंड का उपयोग करके) पॉइंटर को छुपाता है।
इमानुएल बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.