ホーム › UI.Input.GameInput › GameInputKeyboardInfo
GameInputKeyboardInfo
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| kind | GameInputKeyboardKind | 4 | +0 | +0 | キーボードの種別を示す値である。 |
| layout | DWORD | 4 | +4 | +4 | キーボードレイアウトの識別子である。 |
| keyCount | DWORD | 4 | +8 | +8 | キーの総数である。 |
| functionKeyCount | DWORD | 4 | +12 | +12 | ファンクションキーの数である。 |
| maxSimultaneousKeys | DWORD | 4 | +16 | +16 | 同時押し可能な最大キー数である。 |
| platformType | DWORD | 4 | +20 | +20 | プラットフォーム種別を示す値である。 |
| platformSubtype | DWORD | 4 | +24 | +24 | プラットフォームのサブ種別を示す値である。 |
| nativeLanguage | GameInputString* | 8/4 | +32 | +28 | ネイティブ言語名を示す文字列情報へのポインタである。 |
各言語での定義
#include <windows.h>
// GameInputKeyboardInfo (x64 40 / x86 32 バイト)
typedef struct GameInputKeyboardInfo {
GameInputKeyboardKind kind;
DWORD layout;
DWORD keyCount;
DWORD functionKeyCount;
DWORD maxSimultaneousKeys;
DWORD platformType;
DWORD platformSubtype;
GameInputString* nativeLanguage;
} GameInputKeyboardInfo;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GameInputKeyboardInfo
{
public int kind;
public uint layout;
public uint keyCount;
public uint functionKeyCount;
public uint maxSimultaneousKeys;
public uint platformType;
public uint platformSubtype;
public IntPtr nativeLanguage;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GameInputKeyboardInfo
Public kind As Integer
Public layout As UInteger
Public keyCount As UInteger
Public functionKeyCount As UInteger
Public maxSimultaneousKeys As UInteger
Public platformType As UInteger
Public platformSubtype As UInteger
Public nativeLanguage As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class GameInputKeyboardInfo(ctypes.Structure):
_fields_ = [
("kind", ctypes.c_int),
("layout", wintypes.DWORD),
("keyCount", wintypes.DWORD),
("functionKeyCount", wintypes.DWORD),
("maxSimultaneousKeys", wintypes.DWORD),
("platformType", wintypes.DWORD),
("platformSubtype", wintypes.DWORD),
("nativeLanguage", ctypes.c_void_p),
]#[repr(C)]
pub struct GameInputKeyboardInfo {
pub kind: i32,
pub layout: u32,
pub keyCount: u32,
pub functionKeyCount: u32,
pub maxSimultaneousKeys: u32,
pub platformType: u32,
pub platformSubtype: u32,
pub nativeLanguage: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type GameInputKeyboardInfo struct {
kind int32
layout uint32
keyCount uint32
functionKeyCount uint32
maxSimultaneousKeys uint32
platformType uint32
platformSubtype uint32
nativeLanguage uintptr
}type
GameInputKeyboardInfo = record
kind: Integer;
layout: DWORD;
keyCount: DWORD;
functionKeyCount: DWORD;
maxSimultaneousKeys: DWORD;
platformType: DWORD;
platformSubtype: DWORD;
nativeLanguage: Pointer;
end;const GameInputKeyboardInfo = extern struct {
kind: i32,
layout: u32,
keyCount: u32,
functionKeyCount: u32,
maxSimultaneousKeys: u32,
platformType: u32,
platformSubtype: u32,
nativeLanguage: ?*anyopaque,
};type
GameInputKeyboardInfo {.bycopy.} = object
kind: int32
layout: uint32
keyCount: uint32
functionKeyCount: uint32
maxSimultaneousKeys: uint32
platformType: uint32
platformSubtype: uint32
nativeLanguage: pointerstruct GameInputKeyboardInfo
{
int kind;
uint layout;
uint keyCount;
uint functionKeyCount;
uint maxSimultaneousKeys;
uint platformType;
uint platformSubtype;
void* nativeLanguage;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; GameInputKeyboardInfo サイズ: 32 バイト(x86)
dim st, 8 ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; kind : GameInputKeyboardKind (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; layout : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; keyCount : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; functionKeyCount : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; maxSimultaneousKeys : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; platformType : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; platformSubtype : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; nativeLanguage : GameInputString* (+28, 4byte) varptr(st)+28 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; GameInputKeyboardInfo サイズ: 40 バイト(x64)
dim st, 10 ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; kind : GameInputKeyboardKind (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; layout : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; keyCount : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; functionKeyCount : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; maxSimultaneousKeys : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; platformType : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; platformSubtype : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; nativeLanguage : GameInputString* (+32, 8byte) varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global GameInputKeyboardInfo
#field int kind
#field int layout
#field int keyCount
#field int functionKeyCount
#field int maxSimultaneousKeys
#field int platformType
#field int platformSubtype
#field intptr nativeLanguage
#endstruct
stdim st, GameInputKeyboardInfo ; NSTRUCT 変数を確保
st->kind = 100
mes "kind=" + st->kind