# Copyright 2010-2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
#     * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# The duration of showing each window in sec
ConversionWindowDurationMSec
PredictionWindowDurationMSec
SuggestionWindowDurationMSec
InfolistWindowDurationMSec

# The count of commit
Commit
# The count of commit from each state
CommitFromPrediction
CommitFromConversion
CommitFromComposition
CommitFromUnknown
# The count of commit special characters
CommitEmoji

# The count of commit from each state in Chrome Omnibox
CommitFromConversionInChromeOmnibox
CommitFromPredictionInChromeOmnibox
CommitFromCompositionInChromeOmnibox

# The count of commit from each state in Google search box
CommitFromConversionInGoogleSearchBox
CommitFromPredictionInGoogleSearchBox
CommitFromCompositionInGoogleSearchBox

# The number of the candidates committed from partial suggestion
# CommitPartialSuggestion and CommitAutoPartialSuggestion are exclusive.
CommitPartialSuggestion
CommitAutoPartialSuggestion

# The number of the commited Unicode/carrier emoji.
CommitUnicodeEmoji
CommitCarrierEmoji

# The count of all events
SessionAllEvent

# The elapsed time for processing the request
ElapsedTimeUSec

# The count of session creation
SessionCreated

# The count of SetConfig command call
SetConfig

# The total submitted length count
SubmittedTotalLength

# Following 3 stats are scaled by 1,000 to improve the accuracy of average
# values.
# The length of submitted segment.
# 猫を|飼う -> [2000, 2000]
SubmittedSegmentLengthx1000
# The count of submitted segment.
# 猫を|飼う -> 2000
SubmittedSegmentNumberx1000
# The length of submitted segment
# 猫を|飼う -> 4000
SubmittedLengthx1000

# The count of ascii/non-ascii typing input
ASCIITyping
NonASCIITyping

# The count that each candidate is selected from prediction
PredictionCandidates0
PredictionCandidates1
PredictionCandidates2
PredictionCandidates3
PredictionCandidates4
PredictionCandidates5
PredictionCandidates6
PredictionCandidates7
PredictionCandidates8
PredictionCandidates9
PredictionCandidatesGE10

# The count that each candidate is selected from conversion
ConversionCandidates0
ConversionCandidates1
ConversionCandidates2
ConversionCandidates3
ConversionCandidates4
ConversionCandidates5
ConversionCandidates6
ConversionCandidates7
ConversionCandidates8
ConversionCandidates9
ConversionCandidatesGE10

# The count that each candidate is selected from conversion and
# it was from transliteration
TransliterationCandidates0
TransliterationCandidates1
TransliterationCandidates2
TransliterationCandidates3
TransliterationCandidates4
TransliterationCandidates5
TransliterationCandidates6
TransliterationCandidates7
TransliterationCandidates8
TransliterationCandidates9
TransliterationCandidatesGE10

# The count of language aware suggestions are displayed and committed.
LanguageAwareSuggestionTriggered
LanguageAwareSuggestionCommitted

# The count of mouse selection command call
MouseSelect

# The time in msec of each session
SessionDurationMSec

# The time in msec of each preedit
PreeditDurationMSec

# The count of showing cascading window
ShowCascadingWindow

# The count of ShutDown command call
ShutDown

# The count of SendKey command, consumed or unconsumed
ConsumedSendKey
UnconsumedSendKey

# The count of clear personalization data command call
ClearUserHistory

# The count of clear all history command call
ClearUserPrediction

# The count of clear unused history command call
ClearUnusedUserPrediction

# The count of pressing BS just after commit command
BackSpaceAfterCommit

# Performed command names for sendkey command
Performed_Direct_IMEOn
Performed_Direct_InputModeHiragana
Performed_Direct_InputModeFullKatakana
Performed_Direct_InputModeHalfKatakana
Performed_Direct_InputModeFullAlphanumeric
Performed_Direct_InputModeHalfAlphanumeric
Performed_Direct_Reconvert

Performed_Precomposition_IMEOff
Performed_Precomposition_IMEOn
Performed_Precomposition_InsertCharacter
Performed_Precomposition_InsertSpace
Performed_Precomposition_InsertAlternateSpace
Performed_Precomposition_InsertHalfSpace
Performed_Precomposition_InsertFullSpace
Performed_Precomposition_ToggleAlphanumericMode
Performed_Precomposition_InputModeHiragana
Performed_Precomposition_InputModeFullKatakana
Performed_Precomposition_InputModeHalfKatakana
Performed_Precomposition_InputModeFullAlphanumeric
Performed_Precomposition_InputModeHalfAlphanumeric
Performed_Precomposition_InputModeSwitchKanaType
Performed_Precomposition_LaunchConfigDialog
Performed_Precomposition_LaunchDictionaryTool
Performed_Precomposition_LaunchWordRegisterDialog
Performed_Precomposition_Revert
Performed_Precomposition_Undo
Performed_Precomposition_Cancel
Performed_Precomposition_CancelAndIMEOff
Performed_Precomposition_PredictAndConvert
Performed_Precomposition_CommitFirstSuggestion
Performed_Precomposition_Reconvert

Performed_Composition_IMEOff
Performed_Composition_IMEOn
Performed_Composition_InsertCharacter
Performed_Composition_Delete
Performed_Composition_Backspace
Performed_Composition_InsertSpace
Performed_Composition_InsertAlternateSpace
Performed_Composition_InsertHalfSpace
Performed_Composition_InsertFullSpace
Performed_Composition_Cancel
Performed_Composition_CancelAndIMEOff
Performed_Composition_Undo
Performed_Composition_MoveCursorLeft
Performed_Composition_MoveCursorRight
Performed_Composition_MoveCursorToBeginning
Performed_Composition_MoveCursorToEnd
Performed_Composition_Commit
Performed_Composition_CommitFirstSuggestion
Performed_Composition_Convert
Performed_Composition_ConvertWithoutHistory
Performed_Composition_PredictAndConvert
Performed_Composition_ConvertToHiragana
Performed_Composition_ConvertToFullKatakana
Performed_Composition_ConvertToHalfKatakana
Performed_Composition_ConvertToHalfWidth
Performed_Composition_ConvertToFullAlphanumeric
Performed_Composition_ConvertToHalfAlphanumeric
Performed_Composition_SwitchKanaType
Performed_Composition_DisplayAsHiragana
Performed_Composition_DisplayAsFullKatakana
Performed_Composition_DisplayAsHalfKatakana
Performed_Composition_DisplayAsHalfWidth
Performed_Composition_DisplayAsFullAlphanumeric
Performed_Composition_DisplayAsHalfAlphanumeric
Performed_Composition_ToggleAlphanumericMode
Performed_Composition_InputModeHiragana
Performed_Composition_InputModeFullKatakana
Performed_Composition_InputModeHalfKatakana
Performed_Composition_InputModeFullAlphanumeric
Performed_Composition_InputModeHalfAlphanumeric

Performed_Conversion_IMEOff
Performed_Conversion_IMEOn
Performed_Conversion_InsertCharacter
Performed_Conversion_InsertSpace
Performed_Conversion_InsertAlternateSpace
Performed_Conversion_InsertHalfSpace
Performed_Conversion_InsertFullSpace
Performed_Conversion_Cancel
Performed_Conversion_CancelAndIMEOff
Performed_Conversion_Undo
Performed_Conversion_SegmentFocusLeft
Performed_Conversion_SegmentFocusRight
Performed_Conversion_SegmentFocusFirst
Performed_Conversion_SegmentFocusLast
Performed_Conversion_SegmentWidthExpand
Performed_Conversion_SegmentWidthShrink
Performed_Conversion_ConvertNext
Performed_Conversion_ConvertPrev
Performed_Conversion_ConvertNextPage
Performed_Conversion_ConvertPrevPage
Performed_Conversion_PredictAndConvert
Performed_Conversion_Commit
Performed_Conversion_CommitOnlyFirstSegment
Performed_Conversion_ConvertToHiragana
Performed_Conversion_ConvertToFullKatakana
Performed_Conversion_ConvertToHalfKatakana
Performed_Conversion_ConvertToHalfWidth
Performed_Conversion_ConvertToFullAlphanumeric
Performed_Conversion_ConvertToHalfAlphanumeric
Performed_Conversion_SwitchKanaType
Performed_Conversion_ToggleAlphanumericMode
Performed_Conversion_DisplayAsHiragana
Performed_Conversion_DisplayAsFullKatakana
Performed_Conversion_DisplayAsHalfKatakana
Performed_Conversion_DisplayAsHalfWidth
Performed_Conversion_DisplayAsFullAlphanumeric
Performed_Conversion_DisplayAsHalfAlphanumeric
Performed_Conversion_InputModeHiragana
Performed_Conversion_InputModeFullKatakana
Performed_Conversion_InputModeHalfKatakana
Performed_Conversion_InputModeFullAlphanumeric
Performed_Conversion_InputModeHalfAlphanumeric
Performed_Conversion_ReportBug
Performed_Conversion_DeleteSelectedCandidate

# The count of some SessionCommands defined in session/commands.proto
SendCommand_Revert
SendCommand_Submit
SendCommand_SelectCandidate
SendCommand_HighlightCandidate
SendCommand_SwitchInputMode
SendCommand_GetStatus
SendCommand_SubmitCandidate
SendCommand_ConvertReverse
SendCommand_Undo
SendCommand_ResetContext
SendCommand_MoveCursor
SendCommand_SwitchInputFieldType
SendCommand_UsageStatsEvent
SendCommand_UndoOrRewind
SendCommand_ExpandSuggestion
SendCommand_SendCaretLocation
SendCommand_ObsoleteSendLanguageBarCommand
SendCommand_GetAsyncResult
SendCommand_CommitRawText
SendCommand_ConvertPrevPage
SendCommand_ConvertNextPage
SendCommand_TurnOnIme
SendCommand_TurnOffIme

# The count of revert in Chrome Omnibox or Google search box
SendCommand_RevertInChromeOmnibox
SendCommand_RevertInGoogleSearchBox

# The count of special keys input
NO_SPECIALKEY
DIGIT
ON
OFF
SPACE
ENTER
LEFT
RIGHT
UP
DOWN
ESCAPE
DEL
BACKSPACE
HENKAN
MUHENKAN
# VK_DBE_HIRAGANA(Win), kVK_JIS_Kana(Mac)
KANA
HOME
END
TAB
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
PAGE_UP
PAGE_DOWN
INSERT
F13
F14
F15
F16
F17
F18
F19
F20
F21
F22
F23
F24
# alphanumeric  VK_DBE_ALPHANUMERIC(Win), kVK_JIS_Eisu(Mac)
EISU
NUMPAD0
NUMPAD1
NUMPAD2
NUMPAD3
NUMPAD4
NUMPAD5
NUMPAD6
NUMPAD7
NUMPAD8
NUMPAD9
# Numpad [*]
MULTIPLY
# Numpad [+]
ADD
# Numpad [enter]
SEPARATOR
# Numpad [-]
SUBTRACT
# Numpad [.]
DECIMAL
# Numpad [/]
DIVIDE
# Numpad [=]
EQUALS
TEXT_INPUT
HANKAKU
KANJI
KATAKANA
CAPS_LOCK
# Unsupported keys (e.g. PrtSc, Pause) fall back to UNDEFINED_KEY.
UNDEFINED_KEY
# Numpad [,]
COMMA
# Numpad [5]
CLEAR
# Left/Right/Enter keys of software keyboard
VIRTUAL_LEFT
VIRTUAL_RIGHT
VIRTUAL_ENTER

# Stats for config
# Keymap style
ConfigSessionKeymap
# Input mode
ConfigPreeditMethod
# Costom roman table
ConfigCustomRomanTable
# Punctuation style
ConfigPunctuationMethod
# Symbol style
ConfigSymbolMethod
# Adjust conversion based on previous input
ConfigHistoryLearningLevel
# Date/time conversion
ConfigUseDateConversion
# Single kanji dictionary
ConfigUseSingleKanjiConversion
# Symbol dictionary
ConfigUseSymbolConversion
# Special number conversion
ConfigUseNumberConversion
# Emotion conversion
ConfigUseEmoticonConversion
# Calculator conversion
ConfigUseCalculator
# T13n conversion
ConfigUseT13nConversion
# Zip code conversion
ConfigUseZipCodeConversion
# Spelling correction
ConfigUseSpellingCorrection
# Emoji conversion
ConfigUseEmojiConversion
# Secret mode
ConfigIncognito
# Selection shortcut
ConfigSelectionShortcut
# Use input history
ConfigUseHistorySuggest
# Use system dictionary
ConfigUseDictionarySuggest
# Use realtime conversion
ConfigUseRealtimeConversion
# Maximum number of suggestions
ConfigSuggestionsSize
# Automatically switch to halfwidth
ConfigUseAutoIMETurnOff
# Use cascanding window
ConfigUseCascadingWindow
# Composition Editor's behavior with Shift key
ConfigShiftKeyModeSwitch
# Numpad character style
ConfigNumpadCharacterForm
# Use auto conversion
ConfigUseAutoConversion
# Auto conversion key
ConfigAutoConversionKey
# Yen sign character
ConfigYenSignCharacter
# Use Japanese layout
ConfigUseJapaneseLayout
# Space input style
ConfigSpaceCharacterForm
# Allow cloud handwriting
ConfigAllowCloudHandwriting
# Use local usage dictionary
ConfigUseLocalUsageDictionary
# Prelauncher is enabled or not
PrelauncherEnabled
# Use Mode Indicator
ConfigUseModeIndicator

# Need to show the help page after install (TSF is disabled)
PostInstallShowPageRequired
# Need to logoff after install (CUAS is disabled)
PostInstallLogoffRequired
# Need to do nothing after install
PostInstallNothingRequired
# Set Mozc as default on install
PostInstallSetDefault
# Do not set Mozc as default on install
PostInstallNotSetDefault
# Push OK button
PostInstallOkButton
# Push Logoff Now button
PostInstallLogoffNowButton
# Push Logoff Later button
PostInstallLogoffLaterButton
# Push reject (x) button
PostInstallRejectButton

# Whether the user customed keybindings for IME activation
IMEActivationKeyCustomized

# Number of user registered dictionary word
UserRegisteredWord
# Number of user history entries for UserHistoryPredictor
UserHistoryPredictorEntrySize
# Number of user history entries for UserBoundaryHistoryRewriter
UserBoundaryHistoryEntrySize
# Number of user history entries for UserSegmentHistoryRewriter
UserSegmentHistoryEntrySize
# (Android Only) API Level
AndroidApiLevel
# Total memory in MB
TotalPhysicalMemory

# The count of the handwriting tool opened
HandwritingOpen
# The count of the commit from the handwriting tool
HandwritingCommit
# The count of the character palette opened
CharacterPaletteOpen
# The count of the commit from the character palette
CharacterPaletteCommit
# Selected software keyboard layout for landscape.
SoftwareKeyboardLayoutLandscape
# Selected software keyboard layout for portrait.
SoftwareKeyboardLayoutPortrait
# The count of submitted candidate in n-th row (0-origin)
SubmittedCandidateRow0
SubmittedCandidateRow1
SubmittedCandidateRow2
SubmittedCandidateRow3
SubmittedCandidateRow4
SubmittedCandidateRow5
SubmittedCandidateRow6
SubmittedCandidateRow7
SubmittedCandidateRow8
SubmittedCandidateRow9
SubmittedCandidateRowGE10
# The count of the fold/expand keyboard event.
KeyboardFoldEvent
KeyboardExpandEvent

# for windows

# 64 bit
WindowsX64
# Msctf version
MsctfVerMajor
MsctfVerMinor
MsctfVerBuild
MsctfVerRevision
# CUAS status
CuasEnabled
# Windows 8
PerUserInputSettingsEnabled

# Virtual keyboard touch event stats
VirtualKeyboardStats
VirtualKeyboardMissStats

# Big dictionary stats
BigDictionaryState

# usage stats
UsageStatsUploadFailed
