Thank you for considering contributing to Phone Keyboard! We welcome contributions from the community and appreciate your interest in improving this project.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Reporting Bugs
- Suggesting Features
By participating in this project, you agree to maintain a respectful and inclusive environment. Be kind, professional, and considerate in all interactions.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/blukey.git cd blukey - Add the upstream repository:
git remote add upstream https://github.com/ORIGINAL-OWNER/blukey.git
- Node.js (v14 or higher)
- Python and build tools for robotjs compilation
- macOS, Windows, or Linux operating system
macOS:
xcode-select --installWindows:
npm install --global windows-build-toolsLinux (Ubuntu/Debian):
sudo apt-get install libxtst-dev libpng++-devnpm installnpm startWe welcome various types of contributions:
- Bug fixes
- Feature implementations
- Documentation improvements
- Performance optimizations
- Test coverage improvements
- UI/UX enhancements
- Platform-specific improvements
- Check the Issues page
- Look for issues labeled
good first issueorhelp wanted - Comment on an issue to let others know you're working on it
-
Create a new branch for your feature or fix:
git checkout -b feature/your-feature-name
or
git checkout -b fix/your-bug-fix
-
Make your changes following the coding standards below
-
Test your changes thoroughly:
- Test on your target platform
- Verify existing functionality still works
- Test edge cases
-
Commit your changes with clear, descriptive commit messages:
git commit -m "Add feature: description of what you added"or
git commit -m "Fix: description of what you fixed" -
Keep your fork up to date:
git fetch upstream git rebase upstream/main
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request with:
- A clear title describing the change
- A detailed description of what changed and why
- References to any related issues (e.g., "Fixes #123")
- Screenshots or GIFs for UI changes
-
Respond to feedback during the review process
- Use meaningful variable and function names
- Add comments for complex logic
- Follow consistent indentation (2 or 4 spaces)
- Use ES6+ features where appropriate
- Handle errors gracefully
- Use semantic HTML elements
- Keep CSS organized and maintainable
- Ensure responsive design works on various screen sizes
- Test on different mobile browsers
- Keep functions small and focused
- Avoid unnecessary dependencies
- Ensure cross-platform compatibility when possible
- Write self-documenting code
When reporting bugs, please include:
- Clear title describing the issue
- Steps to reproduce the bug
- Expected behavior vs actual behavior
- Environment details:
- Operating system and version
- Node.js version
- Phone OS and browser
- Error messages or console output
- Screenshots if applicable
Example:
Title: Connection drops after 5 minutes on iOS Safari
Description:
When using the phone keyboard on iOS Safari, the connection
consistently drops after approximately 5 minutes of inactivity.
Steps to reproduce:
1. Connect phone to server
2. Wait 5 minutes without typing
3. Try to type - connection is lost
Expected: Connection should remain active
Actual: Connection drops and requires page refresh
Environment:
- macOS 13.0
- Node.js v18.0.0
- iOS 16.1, Safari
We love new ideas! When suggesting features:
- Check existing issues to avoid duplicates
- Describe the feature clearly and concisely
- Explain the use case - why is this useful?
- Provide examples if applicable
- Consider alternatives you've thought about
Example:
Title: Add customizable keyboard layouts
Description:
Allow users to customize the layout of special keys
and create shortcuts for frequently used commands.
Use case:
Developers working in different languages might want
different special characters readily available.
Possible implementation:
- JSON config file for layout customization
- UI for arranging buttons
- Preset layouts for common use cases
Before submitting a PR, please test:
- Basic typing functionality
- Special keys (Enter, Tab, Escape, Backspace)
- Modifier keys (Ctrl, Alt, Shift, Cmd)
- Connection stability
- Reconnection behavior
- Different screen sizes on mobile
If you have questions about contributing, feel free to:
- Open an issue with the
questionlabel - Reach out to the maintainers
Thank you for contributing to Phone Keyboard for VS Code!