Verifykeymaps 工具

Android 架構中有個名為 validatekeymaps 的小型工具,可用來驗證 輸入裝置設定檔案、金鑰版面配置檔案、按鍵字元的語法 對應檔案和虛擬鍵定義檔

編譯

如要編譯 validatekeymaps,請設定開發環境,請下載 Android 原始碼樹狀結構,加以編譯,然後執行:

mmm frameworks/base/tools/validatekeymaps

這項指令應將名為 Verifykeymaps 的主機工具編譯到 out/host/<os>/bin 目錄內。

用量

如果您執行 envsetup.sh 來設定開發環境,那麼 validatekeymaps 工具應該已在您的路徑上。您可以進行驗證 執行 validatekeymaps 即可。

validatekeymaps

您應該會看到下列輸出結果:

Keymap Validation Tool

Usage:
 validatekeymaps [*.kl] [*.kcm] [*.idc] [virtualkeys.*] [...]
   Validates the specified key layouts, key character maps, 
   input device configurations, or virtual key definitions.

接著只需執行 validatekeymaps,為其提供 一或多個檔案進行驗證。

validatekeymaps frameworks/base/data/keyboards/Generic.kl

例子:

Validating file 'frameworks/base/data/keyboards/Generic.kl'...
No errors.

Success.

如果發生錯誤...

validatekeymaps Bad.kl

例子:

Validating file 'Bad.kl'...
E/KeyLayoutMap(87688): Bad.kl:24: Expected keyword, got 'ke'.
Error -22 parsing key layout file.

Failed!

自動化

建議您在所有設定檔上執行 validatekeymaps 然後再安裝到裝置上

開發人員可以使用 指令碼或 makefile

下列範例 makefile 是根據 frameworks/base/data/keyboards/Android.mk

# This makefile performs build time validation of framework keymap files.

LOCAL_PATH := $(call my-dir)

# Validate all key maps.
include $(CLEAR_VARS)

validatekeymaps := $(HOST_OUT_EXECUTABLES)/validatekeymaps$(HOST_EXECUTABLE_SUFFIX)
files := MyKeyboard.kl MyKeyboard.kcm MyTouchScreen.idc

LOCAL_MODULE := validate_framework_keymaps
LOCAL_MODULE_TAGS := optional
LOCAL_REQUIRED_MODULES := validatekeymaps

validate_framework_keymaps: $(files)
    $(hide) $(validatekeymaps) $(files)

include $(BUILD_PHONY_PACKAGE)