import OrderedCollections

extension InputTables {
    static let defaultKanaUSPieceMap = InputTables.Helper.constructPieceMap([
        // 数字キー
        "1": "ぬ",
        "2": "ふ",
        "3": "あ",
        "4": "う",
        "5": "え",
        "6": "お",
        "7": "や",
        "8": "ゆ",
        "9": "よ",
        "0": "わ",

        // シフト列
        "＃": "ぁ",
        "＄": "ぅ",
        "％": "ぇ",
        "＾": "ぉ",
        "＆": "ゃ",
        "＊": "ゅ",
        "（": "ょ",
        "）": "を",

        // 文字キー（第1列）
        "q": "た",
        "w": "て",
        "e": "い",
        "r": "す",
        "t": "か",
        "y": "ん",
        "u": "な",
        "i": "に",
        "o": "ら",
        "p": "せ",
        "』": "ー",
        "」": "む",
        "＼": "へ",

        // Shift
        "E": "ぃ",

        // 文字キー（第2列）
        "a": "ち",
        "s": "と",
        "d": "し",
        "f": "は",
        "g": "き",
        "h": "く",
        "j": "ま",
        "k": "の",
        "l": "り",

        // 文字キー（第3列）
        "z": "つ",
        "x": "さ",
        "c": "そ",
        "v": "ひ",
        "b": "こ",
        "n": "み",
        "m": "も",

        // Shift
        "Z": "っ",

        // 記号キー
        "ー": "ほ",
        "；": "れ",
        "’": "け",
        "、": "ね",
        "。": "る",
        "・": "め",
        "”": "ろ",

        // Shift
        "＋": "「",
        "『": "」",
        "＜": "、",
        "＞": "。",
        "？": "・",

        // 濁点
        "「": "゛",
        "う「": "ゔ",

        "か「": "が",
        "き「": "ぎ",
        "く「": "ぐ",
        "け「": "げ",
        "こ「": "ご",

        "さ「": "ざ",
        "し「": "じ",
        "す「": "ず",
        "せ「": "ぜ",
        "そ「": "ぞ",

        "た「": "だ",
        "ち「": "ぢ",
        "つ「": "づ",
        "て「": "で",
        "と「": "ど",

        "は「": "ば",
        "ひ「": "び",
        "ふ「": "ぶ",
        "へ「": "べ",
        "ほ「": "ぼ",

        // 半濁点
        "＝": "゜",
        "は＝": "ぱ",
        "ひ＝": "ぴ",
        "ふ＝": "ぷ",
        "へ＝": "ぺ",
        "ほ＝": "ぽ"
    ], additionalMapping: [
        [.piece(.compositionSeparator)]: []
    ])
}
