เปิด NumLock ไว้เสมอ


29

ฉันมีแป้นพิมพ์มาตรฐานพร้อมปุ่มตัวเลขทางด้านขวา (ฉันเดาว่ามันเรียกว่าแป้นพิมพ์ 104 คีย์) ฉันต้องการใช้ปุ่มตัวเลขเป็นปุ่มตัวเลขเท่านั้น นั่นหมายความว่าฉันไม่ต้องการNumLockเปิดและปิดปุ่มตัวเลข

อย่างไรก็ตามบางครั้งมันก็เกิดขึ้น (ฉันไม่รู้ว่าบางทีฉันกดปุ่มโดยไม่ตั้งใจNumLock) ว่า numlock ถูกปิดและฉันต้องกดอีกครั้ง มันน่ารำคาญอย่างยิ่ง

เป็นไปได้หรือไม่ที่จะปิดใช้งานการปิด numlock?

ในคำอื่น ๆ : ฉันต้องการปุ่มตัวเลขของฉันเสมอทำหน้าที่เป็นปุ่มตัวเลขและปิดการใช้งานสวิทช์ NumLock

ฉันใช้ Debian และ LXDE (Openbox)


มีกระทู้นี้: ubuntuforums.org/showthread.php?t=2138114
slm

@MartinVegter คุณต้องการที่จะโพสต์ที่นี่เนื้อหาของ~/.config/openbox/autostartและ~/.config/openbox/rc.xml?
Risto Salminen

ต้องการเหตุการณ์ซึ่งจะทำให้ Numlock ปิดอีกครั้งหากตรวจพบว่า Numlock เปิดอยู่ ปิดการใช้งาน NumLock xmodmapเป็นเรื่องง่ายดังกล่าวโดย คำถามเดียวที่เหลือคือวิธีการรับกิจกรรมนั้น ...... ?
SHW

คำตอบ:


7

หลังจากอ่านคำตอบทั้งหมดที่นี่ฉันรู้สึกประหลาดใจมากที่เห็นว่าคุณสามารถทำต่อไปนี้

<keybind key="Num_Lock">
  <action name="Execute">
    <command>numlockx on</command>
  </action>
</keybind>

ดังนั้นทุกครั้งที่คุณกดNumซึ่งจะเป็นการยกเลิกการล็อคหมายเลข มันจะดำเนินการnumlockx onซึ่งจะเปิดใช้งาน numlock

ชื่อมาจากผลลัพธ์ของฉันxevซึ่งให้รหัสคีย์ 77 กับชื่อฉันNum_Lock

ในกรณี @MartinVegters เขาต้องการที่จะรอไม่กี่วินาทีดังนั้นnumlockx onแน่นอนได้รับการดำเนินการหลังจากเหตุการณ์ของNumการจัดการ เนื่องจากมีการแย่งชิงระหว่างการจัดการของ NumLock ใน kernel numlockxและดำเนินการที่

สำหรับกรณีนี้คุณสามารถเขียนสคริปต์ขนาดเล็กdenumlock.shเช่น

#!/bin/sh

sleep "$1"
numlockx on

และใช้ในการรวมคีย์

<command>/bin/sh denumlock.sh 1</command>

มันสกปรก แต่ใช้งานได้

สิ่งที่ฉันแนะนำคือสิ่งต่อไปนี้ซึ่งฉันไม่สามารถทดสอบตัวเองได้ คุณควรทำตามคำตอบแรกที่แนะนำให้ใช้

xmodmap -e 'keycode 77 = Escape'

แต่สำหรับ LXDE คุณจำเป็นต้องใช้กลไก LXDE autostart ซึ่งจะแตกต่างจากวิธีที่ Openbox ~/.config/openbox/autostartของการแก้ไข

ใน LXDE คุณจำเป็นต้องแก้ไข~/.config/lxsession/LXDE/autostartหรือใช้ Lubuntu ~/.config/lxsession/Lubuntu/autostartซึ่งมีคำสั่งสำหรับการเริ่มต้น (ดูเอกสาร ArchและเอกสารLXDE ) คุณอาจต้องสร้างไฟล์นั้นและเพิ่มบรรทัดนี้

@xmodmap -e 'keycode 77 = Escape'

น่าเศร้าที่ฉันบอกว่าฉันไม่สามารถทดสอบว่าการทำงานนี้เพราะฉันมี VM ทำงานกับ LXDE


1
ฉันได้ลองวิธีการแก้ปัญหาของคุณแล้ว<keybind key="Num_Lock">แต่น่าเสียดายที่มันไม่ทำงาน ขณะที่คำสั่งnumlockx onถูกเรียกใช้งาน <kbd> NumLock </kbd> ยังคงขายปลีกฟังก์ชันของมันเป็น numlock ดังนั้นฉันยังคงสามารถเปิด / ปิด Numlock ได้
Martin Vegter

สำหรับโซลูชันอื่น ๆ การใช้xmodmapเมื่อฉันลองใช้วิธีแก้ปัญหาที่แนะนำโดย Risto Salminen คำสั่งใช้งานได้ แต่ฉันทำการเชื่อมโยงคีย์ทั้งหมดของฉันหายไป
Martin Vegter

@MartinVegter Mhh คุณสามารถลองsleep 3; numlockx onผูกคีย์ได้ สำหรับวิธีที่สองคุณได้ลองกับ autostart หรือไม่?
Raphael Ahrens

ฉันไม่เข้าใจว่าทำไม แต่ถึงsleep 3; /usr/bin/numlockx onไม่ได้ผล NumLockยังคงทำหน้าที่เป็นสวิตช์เปิด / ปิด
Martin Vegter

@MartinVegter /usr/bin/numlockx onทำงานบนระบบของคุณหรือไม่
Raphael Ahrens

13

บางทีฉันอาจกดNumLockปุ่มไม่ได้

หากแป้นพิมพ์เป็นของคุณ (แทนที่จะเป็นตัวอย่างของนายจ้าง) ให้ลบออกจากแป้นพิมพ์ทางกายภาพ

คุณยังสามารถกดมันด้วยสิ่งที่แหลมถ้าคุณต้องการจริงๆ

enter image description here


4
ใช่ +1 เรียบง่ายสง่างาม
ypercubeᵀᴹ

1
น่าเศร้าที่สถานะเริ่มต้นของ NumLuck ของฉันคือผิด :(
MichaelChirico

6

บนแป้นพิมพ์แล็ปท็อปของฉัน (Ubuntu 10.04) ล็อคแป้นพิมพ์เปิดอยู่

$ xmodmap -pke|grep 77
keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="

Voila! ปิดใช้งาน numlock แล้ว

xmodmap -e "keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"

ทำให้มันกลับมาอีกครั้ง (บางทีการ greping สำหรับ Num_lock น่าจะเป็นความคิดที่ดีกว่า แต่คุณก็เข้าใจดี)

ตอบกลับความคิดเห็นของ @Martin Vegter

ตกลงในการตอบกลับความคิดเห็นของคุณ xmodmap ทำลายการผูกของคุณเข้าใจ

ฉันเพิ่งตรวจสอบเอกสาร Openbox

ลองดูใน ~ / .config / openbox / lxde-rc.xml

ls -l lxde-rc.xml (คุณมี rc.xml ด้วยหรือไม่โปรดตรวจสอบ)

นำสำเนาของมันมาเป็นข้อมูลสำรอง

(ใช้เครื่องมือแก้ไข) ค้นหาคำว่า numlock (อาจเป็น nmlk)

คุณเห็นอะไรเช่นนี้

<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>

ใส่ความคิดเห็นหรือเปลี่ยน keybind key-value เป็นทางเลือกเช่น Alt-Numlock เพื่อสลับ

key="A-Numlock"

เช่น

เพื่อแสดงความคิดเห็น

<!-Commented out from here
    <keybind key="Numlock">
    <action name="whatEverItSays"/>
    </keybind>
To Here -->

หรือ

เปลี่ยนเป็น Alt + Numlock toggle

<keybind key="A-Numlock">
  <action name="whatEverItSays"/>
</keybind>

บันทึกการเปลี่ยนแปลงและออกจากระบบ / เข้าสู่ระบบหรือรีสตาร์ท


ปัญหาคือxmodmapคำสั่งใด ๆ(เช่นxmodmap -e 'keycode 77 = Escape') ทำลายการเชื่อมโยงคีย์ที่มีอยู่ซึ่งกำหนดไว้ใน.config/openbox/lxde-rc.xml
มาร์ติน Vegter

1
ฉันได้ตอบกลับด้านบนเพื่อรับการจัดรูปแบบที่ดีขึ้น
X Tian

ขอบคุณสำหรับการตอบกลับของคุณ. อย่างไรก็ตามในฉัน.config/openbox/lxde-rc.xmlมีเส้นมีหรือNumlock Num_Lockเมื่อฉันสร้างขึ้นใหม่จะไม่มีผล: <keybind key = "Num_Lock"> <action name = "Execute"> <command> / bin / true </command> </action> </
keyand

1
จะต้องมีไฟล์กำหนดค่าอื่นที่อ่านอยู่ก่อนหน้านี้ในโฮมไดเร็กตอรี่ของคุณ ฉันขอแนะนำให้ค้นหาสองแห่ง / etc / xdg / openbox และ / usr / share / ... หากนี่ไม่ใช่ความช่วยเหลือฉันจะต้องยอมแพ้ - ขอโทษ
X Tian

จาก 3.4.7 บันทึกการเปลี่ยนแปลง (openbox) "แก้ไขการเชื่อมโยงคีย์หายไปหากไม่สามารถแปลการเชื่อมโยงหลายระดับในระดับเดียวกัน (แก้ไข VMWare ทำให้การกดปุ่ม Openbox หยุดทำงาน)"
X Tian

5

ค้นหา keycode NumLock xevของคุณด้วย ตัวอย่างเช่นที่นี่ Num_Lock คือ 77

ใช้ xmodmap เพื่อทำการแมปรหัสใหม่:

  • สำหรับการประชุม X xmodmap -e 'keycode 77 = 'ในปัจจุบันภายในเปลือกใช้
  • ทุกการประชุม X ในอนาคตภายในสถานที่~/.xprofilexmodmap -e 'keycode 77 = '

    แก้ไข: หมายเหตุ: ไม่ทำงานหากซอฟต์แวร์กำลังเปลี่ยนสถานะ Num Lock


1
คำสั่งที่xmodmap -e 'keycode 77 = 'ทำงาน แต่ก็ทำให้เกิดปัญหาร้ายแรงทุกคีย์ผูกของฉันหยุดทำงาน
มาร์ติน Vegter

คุณสามารถลองแมปกับรหัสที่ถูกต้องและไม่เป็นอันตรายได้ เช่นเดียวกับxmodmap -e 'keycode 77 = Escape'(YMMV ดูเหมือนว่า ESC จะปลอดภัยสำหรับฉัน) คุณมีไฟล์ ~ / .Xmodmap หรือไม่ ถ้าใช่แทนที่จะ~/.xprofileวางkeycode 77 = Escapeที่ส่วนท้ายของไฟล์นี้
emp.justine

1
ปัญหาคือxmodmapคำสั่งใด ๆ(เช่นxmodmap -e 'keycode 77 = Escape') ทำลายการเชื่อมโยงคีย์ที่มีอยู่ซึ่งกำหนดไว้ใน.config/openbox/lxde-rc.xml
มาร์ติน Vegter

4

เพียงลบการแมปคีย์ NumLock โดยการจับคู่กับสิ่งใด ๆ : เรียกใช้ครั้งแรก xevแล้วกด Num Lock (ซึ่งอาจจะพิมพ์ 77) จากนั้นเรียกใช้คำสั่ง:

xmodmap -e "keycode # = """

โดยที่ # คือรหัสของ NumLock

คุณต้องการให้สิ่งนี้~/.xprofileเป็นปิดการใช้งาน NumLock ในช่วง x


ในกรณีที่คำถามเดิมของฉันไม่ชัดเจน: ฉันไม่ต้องการปิด numlock ฉันต้องการสิ่งที่ตรงกันข้าม ฉันต้องการตรวจสอบให้แน่ใจว่ามันไม่สามารถปิดได้ (ฉันต้องการให้
Numlock

อาฉันเห็นได้ชัดว่ามีข้อผิดพลาดในความคิดของฉันขอบคุณที่แจ้งให้ฉันทราบ :) ฉันจะดูว่าฉันสามารถปรับปรุงคำตอบของฉัน
Risto Salminen

นี้มีผลกระทบในระบบของฉัน:xmodmap -e "remove Lock = Num_Lock"
มาร์ติน Vegter

ตอนนี้คำสั่งใช้งานได้ แต่มันทำลายการผูกคีย์ของฉันทั้งหมด การเชื่อมโยงคีย์ทั้งหมดหยุดทำงาน
Martin Vegter


4

pic of keyboard optionsด้วย LinuxMint 17.2 และฉันจินตนาการว่าอูบุนตูรุ่นอื่น ๆ คุณสามารถไปที่การตั้งค่า KEYBOARD ของคุณและ LAYOUTS บนหน้านั้นคุณจะพบปุ่ม "ตัวเลือก" ขนาดเล็ก

จากนั้นไปที่ "ตัวเลือกอื่น ๆ ที่เข้ากันได้" และทำเครื่องหมาย "คีย์ตัวเลขป้อนตัวเลขเสมอ"

นี่คือผู้ช่วยชีวิตสำหรับฉัน มันบั๊ก heck จากฉันเพื่อพิมพ์ตัวเลขและย้ายไปที่อื่นในหน้า ไชโย! ;)


1
คำตอบนี้ควรมีคะแนนมากขึ้น!
Carlos Gant

ซึ่งสามารถทำได้จากบรรทัดคำสั่งโดยsetxkbmap -option numpad:macหรือโดยการตั้งค่าในOption "XkbOptions" "numpad:mac" xorg.conf
j123b567

2

คำตอบอื่น ๆ ที่นี่แนะนำให้ใช้numlockx onกับxmodmap -e 'keycode 77 ='แต่numlockx onจะไม่ทำงานบนระบบของฉันพร้อมกับxmodmapคำสั่งนั้นแสดงข้อความข้อผิดพลาด:

$ numlockx on
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  132 (XTEST)
  Minor opcode of failed request:  2 (X_XTestFakeInput)
  Value in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20

และยังมีการตั้งค่าxmodmap -e 'keycode 77 ='จะด้วยเหตุผลบางอย่างเอา keybindings xbindkeysของฉันทั้งหมดทำด้วย

อย่างไรก็ตามคำตอบของคำถามที่คล้ายกันนี้ช่วยฉันได้อย่างไร ส่วนหนึ่งของฉัน~/.xinitrc:

numlockx on
xmodmap -e 'keycode 77 = NoSymbol Num_Lock'

วิธีนี้ NumLock ไม่ทำอะไรเลยด้วยตัวเอง แต่ถ้ากดด้วยกะจะทำหน้าที่เดิม (ไร้ประโยชน์ส่วนใหญ่) วัตถุประสงค์และที่สำคัญที่สุดก็ไม่ได้ป้องกันnumlockx onจากการทำงานในระบบของฉันหรือเลอะของฉันxbindkeysผูกที่สำคัญ


1

อีกวิธีหนึ่งถ้าคุณต้องการปิดการnumlockใช้งานคีย์ปิดการใช้งานอย่างถาวร คุณสามารถทำได้โดยการแก้ไขไฟล์ keymap ปัจจุบันของคุณโดยการแก้ไข keycode 77

ตั้งค่านี้เป็น "none" ดังนั้นการกดปุ่มโดยไม่ตั้งใจจะไม่ทำอะไรเลย

ใช้numlockxในการบูตเครื่องที่จะเริ่มต้นและใช้ไฟล์รูปแบบแป้นปรับเปลี่ยนในหนึ่งของการเริ่มต้นเช่นสคริปต์หรือ~/.bashrc/etc/profile

หมายเหตุ:ฉันยังไม่ได้ทดสอบสิ่งนี้ แต่ควรใช้งานได้


1

ใน OpenSuse 13.x กับ KDE สิ่งนี้ใช้ได้กับฉัน:

  • ติดตั้ง numlockx
  • เพิ่มทางลัดที่กำหนดเอง:
    • ทางลัดที่กำหนดเอง -> แก้ไข -> ใหม่ -> ทางลัดทั่วโลก -> คำสั่ง / URL:
    • ชื่อการกระทำ: NumLockOn
    • ความคิดเห็น: เก็บ numlock ไว้
    • Trigger: ตั้งค่าเป็น NumLockk
    • การดำเนินการ -> คำสั่ง / URL: sh -c 'sleep 0.5; numlockx on'
    • กดใช้
    • (ทำ)

หาก NumLock % numlockx onจะต้องมีการเปิดใช้งานเพราะปิดการใช้งานเพียงแค่


นี่คือสิ่งที่ฉันต้องการ ทำงานบน Xubuntu 16.04
kodmanyagha


0

อาจไม่ใช่วิธีที่ดีที่สุด แต่วิธีนี้ใช้ได้สำหรับฉัน:

stdbuf -oL xinput test 11 | mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' | bash

ที่ 11 คือรหัสของคีย์บอร์ดของคุณ ทำxinputรายการเพื่อกำหนดรหัสคีย์บอร์ดของคุณ (ในกรณีของฉันคือ 11):

user@host:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                           id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

เห็นได้ชัดว่าnumlockxจะต้องติดตั้งเพื่อให้สามารถใช้งานได้

คำอธิบาย:

  • stdbuf -oL แก้ไขการดำเนินการบัฟเฟอร์ของสตรีมเอาต์พุตเป็นบัฟเฟอร์บรรทัด
  • xinput test 11 พิมพ์ปุ่มกดเพื่อ stdout
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}'สำหรับทุกบรรทัดที่พิมพ์และมี 77 (ปุ่ม numlock) สร้างคำสั่ง/usr/bin/numlockx on...
  • | bash ... และไปป์เพื่อทุบตีเพื่อดำเนินการ

คุณสามารถแทรก oneliner นี้ในสคริปต์เริ่มต้นของสภาพแวดล้อมเดสก์ท็อปหรือรันในพื้นหลัง


0

ฉันต้องการให้ปุ่มตัวเลขเป็นตัวเลขเสมอไม่ใช่ของ KP _...

โซลูชันของฉันเป็นส่วนหนึ่งของRemapping Apple Keyboard สำหรับใช้กับ Linux repo

โดยพื้นฐานแล้วเพียงทำการแมป Num_Lock ใหม่เป็น F20 และตัวเลขก็เหมือนกัน

วิธีการแก้ปัญหานี้ให้ผลลัพธ์ที่ต้องการเสมอและมีปุ่มฟังก์ชั่นพิเศษเป็นประโยชน์เพิ่มเติม


-1

สร้างสคริปต์ต่อไปนี้และทำให้สามารถเรียกทำงานได้ chmod +x <filename>

#!/bin/bash
if [ -x /usr/bin/numlockx ];then
/usr/bin/numlockx on
fi

ใส่เส้นทางของไฟล์ .config/openbox/autostart

หรือวางไว้เป็นงาน cron ที่ตรวจสอบทุกสองสามนาทีและเรียกใช้สคริปต์ถ้า numlocks ถูกปิด

crontab -e 
*/1 * * * * <path-to-file>

หรือเพียงแค่เรียกใช้สคริปต์ในวง

#!/bin/bash
  x=0
  while [ x -eq 0 ];do
    if [ -x /usr/bin/numlockx ];then
    /usr/bin/numlockx on
    fi
  done

หากคุณไม่มี numlockx คุณควรจะได้มันมาด้วย sudo apt-get install numlockx


ไม่นี่ไม่ใช่ทางออกที่ดีอย่างแน่นอน ขออภัย
Martin Vegter

1
คุณอธิบายได้ไหมว่าทำไมไม่
Jeight

1
ดีเพราะมันเป็นวิธีแก้ปัญหาที่สกปรกมาก มันไม่ได้แก้ไขปัญหาพื้นฐานมันเพียงกวาดอาการภายใต้พรม
Martin Vegter

น่าเสียดายที่ถ้า xmodmap ไม่ทำงานคุณไม่มีตัวเลือกอื่น ๆ การเขียนสคริปต์เพื่อตรวจสอบและเปิดใช้งาน numlock ไม่ได้เป็นการกวาดล้างปัญหาภายใต้พรมปูพื้น คิดว่ามันเป็นเครื่องตรวจสอบและถ่วงดุลสำหรับนิ้วอ้วนที่สำคัญ ไม่มีผลข้างเคียงและสคริปต์สามารถหยุด / เริ่มต้นได้อย่างง่ายดายทุกเวลา จริงๆมันไม่ได้เป็นที่สกปรกของวิธีแก้ปัญหา ฉันเคยเห็นว่าทำได้แย่ลงมากในซอร์สโค้ดจริงของโปรแกรมที่คุณใช้ทุกวัน
Jeight

คุณแน่ใจได้อย่างไรว่าฉันไม่มีตัวเลือกอื่น ๆ ?
Martin Vegter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.