字符选取器
用于可视化浏览和选择字符的UI组件(原生或网页版),移动端的表情符号选取器是最常见的例子。
What is a Character Picker?
A character picker is a UI widget or interface component — either in an operating system, application, or web page — that allows users to browse and select special characters for insertion into text. Character pickers are the graphical, interactive counterpart to keyboard shortcuts: where shortcuts reward memorization, pickers reward discoverability. They are particularly common for emoji selection, symbol insertion in document editors, and mathematical notation input.
Types of Character Pickers
OS-Level Pickers
Windows Emoji & Symbols (Win + . or Win + ;): A floating panel with tabs for emoji, GIF, kaomoji, and symbols. Searchable, with recently used characters. Available in any text field system-wide.
macOS Character Viewer (Ctrl + Cmd + Space): A richer panel with full Unicode category browsing, search, recent/favorites. Can be expanded to a full Character Viewer window.
iOS/Android keyboard: The globe/emoji key opens a full-screen picker with scrollable categories and search.
Application-Level Pickers
Word processors (Google Docs: Insert → Special characters; Microsoft Word: Insert → Symbol) include their own character pickers, often with better search and categorization than OS-level tools.
Code editors and IDEs: Some (like VS Code with extensions) include Unicode character pickers accessible by command.
Web-Based Pickers
Many web applications implement in-page character pickers as <input> overlays or modal dialogs, typically using JavaScript to insert the selected character at the cursor position:
// Insert character at cursor in a textarea
function insertAtCursor(textarea, char) {
const start = textarea.selectionStart;
const end = textarea.selectionEnd;
const value = textarea.value;
textarea.value = value.slice(0, start) + char + value.slice(end);
// Move cursor after inserted character
textarea.selectionStart = textarea.selectionEnd = start + char.length;
textarea.focus();
}
// Usage
document.querySelector('#insert-btn').addEventListener('click', () => {
insertAtCursor(document.querySelector('textarea'), '→');
});
Emoji Picker as Special Case
The emoji keyboard/picker has become the most widely used character picker in consumer software. Its design patterns have influenced character picker UX broadly:
- Category tabs with icon navigation (smileys, animals, food, activities, etc.)
- Search by keyword ("heart," "star," "thumbs")
- Skin tone modifier selection (for applicable emoji)
- Recently used section for fast repeat access
- Grid layout with hover/tap preview
Design Considerations for Web Pickers
Building an accessible, performant character picker for a web app involves:
- Virtualized grid: Rendering all 154,998 Unicode characters at once is impractical. Virtualize the list using intersection observer or a library like
react-window. - Search indexing: Pre-build a search index of character names for fast lookup.
- ARIA roles: Use
role="grid"for the character grid,role="gridcell"for each character, andaria-labelwith the character name for screen readers. - Keyboard navigation: Arrow keys to move focus, Enter to select, Escape to dismiss.
- Focus management: Return focus to the triggering element after selection.
<div role="grid" aria-label="Character picker">
<div role="row">
<button role="gridcell" aria-label="Em dash U+2014" data-char="—">—</button>
<button role="gridcell" aria-label="En dash U+2013" data-char="–">–</button>
<!-- ... -->
</div>
</div>
Quick Facts
| Property | Value |
|---|---|
| Windows OS picker | Win + . (Emoji & Symbols) |
| macOS OS picker | Ctrl + Cmd + Space (Character Viewer) |
| iOS/Android | Globe/emoji key in keyboard |
| Web insertion API | textarea.setRangeText() or selection API |
| Accessibility role | role="grid" / role="gridcell" |
| Key UX features | Search, categories, recent, favorites |
| Performance technique | Virtualized rendering for large character sets |
| Google Docs picker | Insert → Special characters (with drawing search) |
相关术语
输入法 中的更多内容
Windows输入法,通过Alt+数字键盘数字按代码页编号输入字符(Alt+0169 → ©,Alt+0176 → °),仅限代码页1252中的字符。
A system-level tool for browsing and inserting Unicode characters. macOS Character Viewer …
通过Unicode码位输入字符的任何方法:十六进制输入(Mac)、Ctrl+Shift+U输入U+XXXX(Linux)或Alt+X(Windows应用程序)。
通过输入十六进制值直接输入Unicode码位的方法。Mac:按住Option+十六进制值+松开;Windows:在Word/WordPad中输入十六进制后按Alt+X。
用于浏览和插入Unicode字符的图形工具。Windows:charmap.exe;Mac:字符查看器(Control+Command+Space);Linux:gucharmap。
按下后不立即输出但会修饰下一次击键的按键,用于输入变音符号:按下`再按e可输入è,常见于欧洲键盘布局。
启动多键组合序列的按键(通常为右Alt或自定义映射),是Linux/Unix功能:Compose + a + e → æ,可通过XCompose配置。
通过拼音或字形匹配将按键序列转换为字符的软件组件,使用户能够用标准键盘输入复杂字符(如CJK、韩文等)。