pucchinglgl/src/keyPosition.ts

18 lines
563 B
TypeScript

/**
* キーボードの位置を返します
* @param layout 対応するレイアウト。空白 ` ` 区切りの文字列の配列
* @param key 入力。プロパティ `KeyboardEvent.key`
* @return 位置を配列 `[x, y]` で返します。見つからない場合、空 `[]`
*/
function keyPosition(
layout: readonly string[],
key: string
): [number, number] | [] {
const [x, y] = layout
.map((row) => row.split(" ").indexOf(key))
.flatMap((x, y) => (x >= 0 ? [x, y] : []));
return x >= 0 ? [x, y] : [];
}
export default keyPosition;