尝试使用JAVA读取Scroll Lock状态

2024-01-30

我有以下代码行,我正在尝试读取滚动锁的状态。

当我的程序启动时,我得到滚动锁定的状态。 不过我愿意实时获取状态。 请指导以下内容

package assignment;

import java.awt.Toolkit;
import java.awt.event.KeyEvent;

import org.omg.PortableServer.THREAD_POLICY_ID;

public class ScrollLockOnOff {

    public static void main(String[] args) throws InterruptedException 
    {
        while(true)
        {
            Thread.sleep(1000);
            Toolkit toolkit=Toolkit.getDefaultToolkit();
            System.out.println(toolkit.getLockingKeyState(KeyEvent.VK_SCROLL_LOCK));
        }
    }

}


这是一个有趣的行为,正确报告初始状态,但依赖后续事件处理(具有聚焦的顶级窗口或托盘图标)进行更新。

如果我们有办法将 AWT 重置为其初始状态,应该可以解决该问题。如果我们没有找到这种可能性,直接的解决方法就是运行一个新的 JVM。由于具有相同属性的新 JVM 将使用缓存甚至共享内存中的资源,因此开销实际上要小得多。每秒执行一次该操作没有问题:

public class ScrollLockOnOff {
    public static void main(String[] args)
                       throws InterruptedException, AWTException, IOException {

        if(args.length == 1 && args[0].equals("VK_SCROLL_LOCK")) {
            System.exit(Toolkit.getDefaultToolkit()
                .getLockingKeyState(KeyEvent.VK_SCROLL_LOCK)? KeyEvent.VK_SCROLL_LOCK: 0);
            return;
        }

        ProcessBuilder b = new ProcessBuilder(
            Paths.get(System.getProperty("java.home"), "bin", "java").toString(),
            "-classpath", System.getProperty("java.class.path"),
            ScrollLockOnOff.class.getName(), "VK_SCROLL_LOCK"
        ).inheritIO();

        while(true) {
            Thread.sleep(1000);
            int state = b.start().waitFor();
            if(state != 0 && state != KeyEvent.VK_SCROLL_LOCK) {
                System.err.println("failed");
                break;
            }
            System.out.println(state == KeyEvent.VK_SCROLL_LOCK);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用JAVA读取Scroll Lock状态 的相关文章

随机推荐

  • Python3 SMTP ValueError:server_hostname 不能为空字符串或以前导点开头

    import smtplib smtp smtplib SMTP smtp connect smtp gmail com 587 220 b smtp gmail com ESMTP h15 v6sm187291iog 48 gsmtp s
  • @IdClass 使用 JPA 和 Hibernate 生成“实例的标识符已更改”

    对于使用不区分大小写的数据库架构的 JPA 实体模型 当我使用 IdClass 注释时 我始终会收到 实例的标识符已更改 异常 对于具有 字符串 主键的对象 当数据库中存在一种大小写的字符串并且使用仅大小写不同的相同字符串执行查询时 会发生
  • Jquery live() 与 delegate() [重复]

    这个问题在这里已经有答案了 我在这里和网上其他地方读过一些关于两者之间差异的帖子live and delegate 但是我还没有找到我正在寻找的答案 如果这是一个骗局 请告诉我 我知道之间的区别live and delegate就是它liv
  • FTP获取所有文件

    我已使用 PHP 成功连接到 FTP 并且可以使用以下命令查看所有文件 ftp nlist 但是 有没有一种简单的方法可以下载当前目录中的所有这些文件 我找不到任何关于如何执行此操作的示例 Thanks 另一个简单的解决方案是 列出数组中的
  • 有没有办法在 d3 中向饼图添加突出显示?

    我希望我使用了正确的术语 但基本上我试图在 D3 中的饼图顶部创建突出显示 我见过很多添加阴影的东西 但一直无法使其成为高光 因此 我尝试在图表顶部添加弧线并为其添加高斯模糊 但它有两个问题 它不会与图表的其余部分一起过渡 并且突出显示会延
  • OpenStreetMap:从地址获取坐标

    OpenStreetMap 中是否有任何函数可以为您提供地址坐标 就像是 http router project osrm org locate request GetGeocoding nbaddresses 1 outputFormat
  • 在 R 或 ggplot2 中向多图输出添加徽标

    我试图将徽标添加到从 grid arrange 或rangeGrob 派生的输出中 我有以下代码 库 ggplot2 p1 lt ggplot ChickWeight aes x Time y weight colour Diet grou
  • 如何在QT中设计自定义形状的按钮

    I am trying to desing in Qt a sequence of custom buttons with arrow shape but I could not find the way I need something
  • OSX GCC如何指定sfml库源?

    我正在尝试编译一个使用的项目sfml我安装了sfml 2 1通过homebrew像下面这样 unknown542696d2a12b keeperrl kevzettler brew list sfml usr local Cellar sf
  • Rails ActiveRecord:三个表 has_many 通过:关联

    我正在尝试构建一个表来处理某个营销活动已设置为的位置和类别 并具有以下模型关联 class Campaign lt ActiveRecord Base has many campaign category metro bids depend
  • Git 用于 Windows 分页

    每当我执行git log命令无法终止 如果我执行 Ctrl C 它会退出分页环境 但如果我开始输入任何内容 它就会启动git log再次命令 正如已经提到的 git log X会将您的输出限制为最后 X 次提交 Git log 和其他 gi
  • SQL Server 2014中一个外键引用多个主键

    我的数据库中有三个表 医疗测试 MedicalTestID PK 运动测试 运动测试IDPK 一般需求 通用需求ID PK Inside GeneralNeeds有ProcessID需要保留哪些MedicalTestID and Sport
  • 我需要在 Windows 上的 Perl 脚本中包含 #!/usr/bin/perl 行吗?

    我刚刚在Windows上安装了ActivePerl并开始学习Perl 在我正在读的书中 第一个代码示例是这样的 usr bin perl use 5 010 say Hello world 由于我使用的是 Windows 我想知道是否需要包
  • 404 标头响应,但页面显示正常?

    我不是相关 PHP 网站的开发人员 而且我根本不会 PHP 但我被要求调查这个问题 基本上 当使用 Live HTTP Headers Firefox Addon 和我们的一些报告工具等工具时 我们网站之一上的大量页面似乎会返回 404 标
  • div 中的输入复选框在 Firefox 上跳转到页面顶部 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I use div over label and input type checkbox 我这样做是为了让复选框看起来像一个按钮 这是我的
  • IE7 中 DHTML 更改后如何强制重排?

    我有一个页面 用户可以在其中动态添加文件上传框 添加框会更改它们所在的 div 的高度 但其下方的 div 的某些元素保持在同一位置 因此它们开始与新的 DOM 元素重叠 这在 IE8 Firefox Chrome 中可以正常工作 如何强制
  • migratordotnet - 从应用程序内部运行迁移(无需构建或构建)

    有没有办法从应用程序本身运行迁移 Thanks 我实例化 Migrator 类的实例 然后您可以调用成员方法 例如MigrateToLastVersion or MigrateTo long versionnr Migrator Migra
  • 从 Cygwin 启动 python IDLE 时 Tkinter 中出现 tcl_error

    我尝试启动IDLE来自 cygwin 我收到以下错误 Traceback most recent call last File usr bin idle line 5 in
  • 使用 msiexec 卸载特定功能

    我安装了一个具有两个功能 FirstFeature 和 SecondFeature 的测试应用程序 我只想从应用程序中删除一项功能 SecondFeature 我尝试在命令行中使用 REMOVE 属性 这是用于删除 SecondFeatur
  • 尝试使用JAVA读取Scroll Lock状态

    我有以下代码行 我正在尝试读取滚动锁的状态 当我的程序启动时 我得到滚动锁定的状态 不过我愿意实时获取状态 请指导以下内容 package assignment import java awt Toolkit import java awt