第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JNA KeyboardUtils.isPressed 不能使用箭頭鍵

JNA KeyboardUtils.isPressed 不能使用箭頭鍵

catspeake 2023-06-08 20:08:51
我正在嘗試創(chuàng)建一個調(diào)用 JNA 的KeyboardUtils類來檢查 Windows 上的關(guān)鍵狀態(tài)的示例(類似于 Win32 的GetAsyncKeyState())。這是我的代碼:package com.foo;import com.sun.jna.platform.KeyboardUtils;import java.awt.event.KeyEvent;public class Main {? ? public static void main(String[] args) {? ? ? ? new Thread() {? ? ? ? ? ? @Override? ? ? ? ? ? public void run() {? ? ? ? ? ? ? ? System.out.println("Watching for Left/Right/Up/Down or WASD.? Press Shift+Q to quit");? ? ? ? ? ? ? ? while (true) {? ? ? ? ? ? ? ? ? ? try? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? Thread.sleep(10);? ? ? ? ? ? ? ? ? ? ? ? if (KeyboardUtils.isPressed(KeyEvent.VK_DOWN) || KeyboardUtils.isPressed(KeyEvent.VK_S) )? ? ? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("Down");? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? if (KeyboardUtils.isPressed(KeyEvent.VK_UP) || KeyboardUtils.isPressed(KeyEvent.VK_W) )? ? ? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("Up");? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? if (KeyboardUtils.isPressed(KeyEvent.VK_LEFT) || KeyboardUtils.isPressed(KeyEvent.VK_A) )? ? ? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("Left");? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? if (KeyboardUtils.isPressed(KeyEvent.VK_RIGHT) || KeyboardUtils.isPressed(KeyEvent.VK_D) )? ? ? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("Right");? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? if (KeyboardUtils.isPressed(KeyEvent.VK_Q) && KeyboardUtils.isPressed(KeyEvent.VK_SHIFT) )? ? ? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? break;? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? catch(Exception e)? ? ? ? ? ? ? ? ? ? { }? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? System.exit(0);? ? ? ? ? ? }? ? ? ? }.start();? ? }}這工作正常并檢測 WASD 鍵,以及 Shift+Q。但是,永遠(yuǎn)不會檢測到左/右/上/下箭頭鍵。將代碼轉(zhuǎn)換為 C++ 并調(diào)用 Win32GetAsyncKeyState()確實可以使用箭頭鍵。根據(jù)網(wǎng)絡(luò),值KeyEvent.VK_DOWN匹配Win32 定義(40)。知道為什么 JNA 沒有正確檢測到箭頭鍵嗎?
查看完整描述

1 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊

KeyboardUtils在任何平臺上根本不支持方向鍵。

KeyboardUtils僅適用于 3 種鍵盤平臺 - Windows、Mac 和 Linux。

在 Mac 上,isPressed()根本沒有實現(xiàn)并為所有鍵代碼返回 false,并在初始化UnsupportedOperationException時拋出an。KeyboardUtils

在 Windows 和 Linux 上,KeyboardUtils支持以下鍵:

  • VK_A?-?VK_Z

  • VK_0-VK_9

  • VK_SHIFT

  • VK_CONTROL

  • VK_ALT

  • VK_META(僅限 Linux)

在 Windows 上,將鍵碼KeyboardUtils.isPressed()轉(zhuǎn)換KeyEvent為 Win32 虛擬鍵碼 (in?W32KeyboardUtils.toNative()) 并將它們傳遞給GetAsyncKeyState()(in?W32KeyboardUtils.isPressed())。但是箭頭鍵未被處理并被轉(zhuǎn)換為虛擬鍵碼 0,這不是有效的鍵碼。

與 Linux 鍵碼類似。

因此,要檢測 Windows 上的箭頭鍵,您必須調(diào)用GetAsyncKeyState()自己,正如您已經(jīng)發(fā)現(xiàn)的那樣。


查看完整回答
反對 回復(fù) 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號