कुंजी संयोजन के लिए xmodmap - Fn व्यवहार को कैसे टॉगल करें?


9

USB के माध्यम से Logitech K290 कीबोर्ड के साथ, एफ कुंजी डिफ़ॉल्ट रूप से सुलभ नहीं हैं, और मुझे Fnउनका उपयोग करने से पहले प्रेस करने की आवश्यकता है , जो वास्तव में उपयोग करने योग्य नहीं है।

Fnअकेले कुंजी में किसी भी घटना आग नहीं करता है xev

दबाने F1के बिना Fnदो प्रमुख घटनाओं, कीकोड 50 (आग Shift_L) और कीकोड 133 ( Super_L) और प्रदर्शित करता है संदेश "टचपैड विकलांग" मेरे Kubuntu पर (हर चाबी के लिए एक ही संदेश F1के माध्यम से F4)

Althoug अधिकांश मीडिया कुंजियाँ काम करती हैं, मेरे पास प्रत्यक्ष F. कुंजियाँ हैं। क्या आप Fnव्यवहार को टॉगल करने के किसी भी तरीके के बारे में जानते हैं?

जब मैं F1बिना प्रेस करता हूं तो यहां आउटपुट होता है Fn:

KeyPress event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
    state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
    state 0x11, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

FocusOut event, serial 40, synthetic NO, window 0x1a00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 40, synthetic NO, window 0x1a00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 40, synthetic NO, window 0x0,
    keys:  4294967238 0   0   0   0   0   4   0   0   0   0   0   0   0   0   0   
           32  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
    state 0x51, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

MappingNotify event, serial 40, synthetic NO, window 0x0,
    request MappingPointer, first_keycode 0, count 0

और F2(अभी भी नहीं Fn) के लिए:

KeyPress event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
    state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
    state 0x18, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

FocusOut event, serial 40, synthetic NO, window 0x1a00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 40, synthetic NO, window 0x1a00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 40, synthetic NO, window 0x0,
    keys:  4294967238 0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   
           32  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
    state 0x58, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

F1साथ Fnकी उम्मीद परिणाम देता है:

KeyPress event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64820204, (-856,-213), root:(1097,247),
    state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
    root 0x2c6, subw 0x0, time 64820284, (-856,-213), root:(1097,247),
    state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

2
आमतौर पर <kbd> Fn </ kbd> कीबोर्ड के हार्डवेयर स्तर पर काम करता है। उम्मीद है कि कीकोड के रूप में, की-जिम के विपरीत, एफ-की के अभी भी अलग हैं जब इसे दबाया नहीं जाता है। क्या आप xevएक बार और चला सकते हैं और आउटपुट को दो अलग-अलग एफ-कीज़ के लिए पेस्ट कर सकते हैं ?
9000

मैं उसी समस्या को लेकर आया हूं :(। यह उत्तर ( askubuntu.com/a/285604/121193 ) उपयोगी हो सकता है, लेकिन यह कुछ के लिए अच्छा होगा ... सरल।
ऐश

1
अफसोस की बात है, सोलायर केवल वायरलेस उत्सर्जक के लिए काम करता है, तार वाले नहीं :(
user55574

मैं BIOS सेटिंग्स में देखकर शुरू करूंगा। कुछ Fn कुंजी को स्वैप करने की अनुमति देते हैं जैसे F-keys-by-default ..
जोनास बर्लिन

वास्तव में बुरा है कि F1 केकोड 50 का पुन: उपयोग करता है, इसलिए आप सिर्फ 50 या तो क्या नहीं बदल सकते हैं: पी
जोनास बर्लिन

जवाबों:


1

मैंने Fn+Fxऔर Fxजहाँ x है के बीच कीकोड्स को स्वैप करके समान परिणाम प्राप्त किया 1,2,...12

  1. xmodmap -pkeवर्तमान कीकोड और कीसमबोल की सूची प्राप्त करने के लिए उपयोग करें ।
  2. तब चलाने xevऔर प्रेस F1के माध्यम से F12अपने कीकोड को ध्यान में रखते हुए।
  3. फिर अपनी ~/.Xmodmapफ़ाइल में स्वैप करें ।

मेरे सिस्टम में उदाहरण के लिए (1) का परिणाम:

keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode 68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode 69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode 70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
...

keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute
..

फिर मैंने इसमें स्वैप किया ~/.Xmodmap:

keycode 121 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode 122 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode 123 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode 198 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
...


keycode 67 = XF86AudioMute NoSymbol XF86AudioMute
keycode 68 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 69 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 70 = XF86AudioMicMute NoSymbol XF86AudioMicMute
...

फिर प्रभावित रन लेने के लिए xmodmap ~/.Xmodmap


0

xevडेस्कटॉप वातावरण द्वारा कैप्चर की गई घटनाओं को नहीं दिखा सकते हैं। कुंजी का परीक्षण करने का एक बेहतर तरीका showkeyकमांड का उपयोग कर रहा है (लिनक्स कंसोल पर, एक्स 11 के अंदर नहीं)। मैं अनुमान लगा रहा हूँ कि OS वास्तव में Shift + Super + कुछ-कुंजी संयोजन प्राप्त कर रहा है।

हालाँकि, आप केवल एक एफ कुंजी के संयोजन की कल्पना कर सकते हैं, यह संभवतः परेशानी भरा होगा: आपको Shift कुंजी को "जारी" करना होगा (क्योंकि कीबोर्ड इसे दबाता है), और Shift + F1 कार्य करना और भी जटिल होगा , क्योंकि यह शिफ्ट कुंजी पहले नीचे आयोजित किया गया था, तो ट्रैकिंग की आवश्यकता होगी।

लैपटॉप पर यह समस्या बहुत आम है, जिसमें अक्सर मल्टीमीडिया हॉटकी को टॉगल करने के लिए एक महत्वपूर्ण संयोजन होता है, या उनके BIOS / फर्मवेयर में एक विकल्प होता है। लेकिन जैसा कि आपने बताया कि यह बाहरी कीबोर्ड के एक विशिष्ट मॉडल से संबंधित है, ऑनलाइन देख मुझे यह प्रोजेक्ट मिला:

https://github.com/milgner/k290-fnkeyctl

परियोजना के विवरण में कहा गया है कि यह "लॉजिटेक K290 कीबोर्ड के काम करने के तरीके को ठीक करता है", इसलिए यह एक कोशिश देने के लायक हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.