如果无法关闭Num Lock键,是否可以一直打开Num Lock?


14

因此,此问题不是关于默认情况下是否启用num锁定。

是否可以打开数字锁定,并取消键盘上的数字锁定按钮影响该状态的功能?

编辑(因为):

在我的键盘上,该Home按钮确实靠近numlock。在工作中,我经常使用Homenumpad和numpad,但有时我也会不小心碰到它numlock。结果是我的数字键盘关闭了,当我必须键入很多数字时确实很烂,一段时间后,我意识到我没有输入任何数字,因为数字锁关闭了数字键盘。


5
取下数字锁定键,然后将开关环氧树脂置于打开位置,然后再弹回该键。
摩押

为什么你需要那?只是好奇
注册用户

@RegisteredUser看到我的编辑
Adam Varhegyi 2016年

Answers:


5

我使用CapShift,它是免费的:

https://www.donationcoder.com/Software/Skrommel/index.html#CAPshift

“ CAPshift通过放慢速度来扩展Caps Lock键...

  • 按住0.5秒钟以启用/禁用。
  • 按住1秒钟以显示菜单。
  • 右键单击任务栏图标以显示菜单。
  • 同时也会降低F1,Insert,NumLock和ScrollLock的速度。”

优点是:如果确实需要,您不会丢失更改NumLock的功能。


听起来不错,但安装程序无法在Windows 8.1上运行:[
Adam Varhegyi,2016年

5

物理删除NumLock键。当您的手指按下时,它就不会出现。


万无一失的解决方案。
罗希特·古普塔

5
这实际上不是万无一失的。某些软件(例如,HyperV)可以再次关闭numlock,并且当您从键盘(或使用的SharpKeys)上卸下键时,您必须四处闲逛并重新启动才能重新打开它。
StingyJack


1

也许不是您要找的答案,但是它为我解决了这个问题:

在Windows中激活锁定键的声音(在Windows 10中:控制面板\轻松访问\轻松访问中心\使键盘更易于使用\打开切换键)

这样,当您击打它时,它会发出蜂鸣声,并且您马上就意识到了。它实际上训练了我不要再打它了,因为信号在发生时是正确的。


好主意,使用内置功能!
奥利弗(Oliver)

1

如果使用自动快捷键,则可以将以下行添加到脚本中:

SetNumLockState, AlwaysOn

确保在热键之前放置此行。我将其放在脚本的开头,因此请确保它始终可以正常工作,如果将其放在脚本的中间或结尾,则可能无法正常工作。


0

BIOS可能具有禁用NumLock键的设置,但是我们需要了解您的计算机型号和BIOS版本才能更深入地讨论此问题。通常,一个进入BIOS并查找名为“ NumLock State”,“ Bootup NumLock State”或类似名称的项目,按Enter并使用箭头键选择“ Off”或“ Disabled”,然后按Enter。

对于Windows黑客,注册表中包含HKCU\Control Panel\Keyboard 一个名为InitialKeyboardIndicators的项目,该项目的未记录值是1用来禁用NumLock。根据Windows版本的不同,其有效性可能有所不同。

残酷的解决方案是弹出Numlock键帽,并在需要时使用笔更改其设置。该设置通常会保留下来,因为Windows XP和更高版本会在启动时记住其状态(除非BIOS或其他设置有干扰)。


0

步骤1

更改注册表以在启动时将NumLock的初始状态设置为打开:

HKEY_USERS\.DEFAULT\Control Panel\Keyboard\InitialKeyboardIndicators
  Set to Value to 2

第2步

添加一个AutoHotkey脚本来监视该密钥,并确保无法将其关闭。安装AutoHotkey,然后创建一个名为MyBestNumlockHack.ahk的新脚本。将此脚本放在C:\ Users \ {用户名} \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup目录中。

Numlock::
  if (!GetKeyState("NumLock", "T"))
    SetNumLockState, On
  return

0

创建一个计时器并将其命名为NumlOn。将间隔设置为100。

Public Const VK_NUMLOCK = &H90
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" _
(ByVal ByValnVirtKey As Integer) As Short
Dim NLKey as boolean

Private Sub me_keyDown(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.NumLock And Not NLKey Then
        If Not GetKeyState(VK_NUMLOCK) Then
            e.Handled = True
            NumlOn.Start()
            Exit Sub
        End If
    End If
End sub

Private Sub NumlOn_Tick(sender As Object, e As EventArgs) _ 
Handles NumlOn.Tick
    NLKey = True
    If Not GetKeyState(VK_NUMLOCK) Then numlockON()
    Application.DoEvents()
    NumlOn.Stop()
    NLKey = False
 End Sub

3
牛肉在哪里?我想您想使用此代码将其放入文件中。然后怎样呢?你如何使用它?它是如何工作的?请不要在评论中回复;编辑您的答案,使其更清晰,更完整。
斯科特(Scott)

0

忘了一个子...这是完全正常的

Public Const VK_NUMLOCK = &H90
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" _
(ByVal ByValnVirtKey As Integer) As Short

Private Sub numlockON()
    keybd_event(VK_NUMLOCK, 0, 0, 0) ' Press NUMLOCK key down
    keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0)
End Sub

Private Sub me_keyDown(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.NumLock And Not NLKey Then
        If Not GetKeyState(VK_NUMLOCK) Then
            e.Handled = True
            NumlOn.Start()
            Exit Sub
        End If
    End If
End sub

Private Sub NumlOn_Tick(sender As Object, e As EventArgs) Handles NumlOn.Tick
    NLKey = True
    If Not GetKeyState(VK_NUMLOCK) Then numlockON()
    Application.DoEvents()
    NumlOn.Stop()
    NLKey = False
End Sub

1
欢迎来到超级用户。无需发布多个答案,只需更正上一个答案并删除该答案即可;如果需要更改此答案,请删除该答案。另外,斯科特在其他答案中说了什么。
fixer1234 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.