Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ linter:
- avoid_unused_constructor_parameters
- use_super_parameters

formatter:
page_width: 80

analyzer:
errors:
# Treat these as info/ignore for existing codebase compatibility
Expand Down
2 changes: 2 additions & 0 deletions lib/src/layouts/keyboard_layout_provider.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'keyboard_language.dart';
import 'languages/bengali.dart';
import 'languages/english.dart';
import 'languages/french.dart';

/// Manages keyboard languages and provides access to layouts.
///
Expand Down Expand Up @@ -102,4 +103,5 @@ void initializeKeyboardLayouts() {
final provider = KeyboardLayoutProvider.instance;
provider.registerLanguage(englishLanguage);
provider.registerLanguage(bengaliLanguage);
provider.registerLanguage(frenchLanguage);
}
299 changes: 299 additions & 0 deletions lib/src/layouts/languages/french.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,299 @@
import '../../enums.dart';
import '../../models.dart';
import '../keyboard_language.dart';

/// Standard AZERTY text layout - primary (letters).
final KeyboardLayout _textLayoutPrimary = [
[
VirtualKey.character(text: 'a'),
VirtualKey.character(text: 'z'),
VirtualKey.character(text: 'e'),
VirtualKey.character(text: 'r'),
VirtualKey.character(text: 't'),
VirtualKey.character(text: 'y'),
VirtualKey.character(text: 'u'),
VirtualKey.character(text: 'i'),
VirtualKey.character(text: 'o'),
VirtualKey.character(text: 'p'),
],
[
VirtualKey.character(text: 'q'),
VirtualKey.character(text: 's'),
VirtualKey.character(text: 'd'),
VirtualKey.character(text: 'f'),
VirtualKey.character(text: 'g'),
VirtualKey.character(text: 'h'),
VirtualKey.character(text: 'j'),
VirtualKey.character(text: 'k'),
VirtualKey.character(text: 'l'),
VirtualKey.character(text: 'm'),
],
[
VirtualKey.action(action: KeyAction.shift),
VirtualKey.character(text: 'w'),
VirtualKey.character(text: 'x'),
VirtualKey.character(text: 'c'),
VirtualKey.character(text: 'v'),
VirtualKey.character(text: 'b'),
VirtualKey.character(text: 'n'),
VirtualKey.character(text: "'"),
VirtualKey.action(action: KeyAction.backSpace),
],
[
VirtualKey.action(action: KeyAction.symbols, flex: 2),
VirtualKey.character(text: ','),
VirtualKey.action(action: KeyAction.space, flex: 4),
VirtualKey.character(text: '.'),
VirtualKey.action(action: KeyAction.enter, flex: 2),
],
];

/// Text layout - secondary (numbers & common symbols).
final KeyboardLayout _textLayoutSecondary = [
[
VirtualKey.character(text: '1'),
VirtualKey.character(text: '2'),
VirtualKey.character(text: '3'),
VirtualKey.character(text: '4'),
VirtualKey.character(text: '5'),
VirtualKey.character(text: '6'),
VirtualKey.character(text: '7'),
VirtualKey.character(text: '8'),
VirtualKey.character(text: '9'),
VirtualKey.character(text: '0'),
],
[
VirtualKey.character(text: '@'),
VirtualKey.character(text: '#'),
VirtualKey.character(text: '€'),
VirtualKey.character(text: '_'),
VirtualKey.character(text: '&'),
VirtualKey.character(text: '-'),
VirtualKey.character(text: '+'),
VirtualKey.character(text: '('),
VirtualKey.character(text: ')'),
VirtualKey.character(text: '/'),
],
[
VirtualKey.action(action: KeyAction.symbolsAlt),
VirtualKey.character(text: '*'),
VirtualKey.character(text: '"'),
VirtualKey.character(text: "'"),
VirtualKey.character(text: ':'),
VirtualKey.character(text: ';'),
VirtualKey.character(text: '!'),
VirtualKey.character(text: '?'),
VirtualKey.action(action: KeyAction.backSpace),
],
[
VirtualKey.action(action: KeyAction.symbols, flex: 2),
VirtualKey.character(text: ','),
VirtualKey.action(action: KeyAction.space, flex: 4),
VirtualKey.character(text: '.'),
VirtualKey.action(action: KeyAction.enter, flex: 2),
],
];

/// Text layout - tertiary (more symbols).
final KeyboardLayout _textLayoutTertiary = [
[
VirtualKey.character(text: '~'),
VirtualKey.character(text: '`'),
VirtualKey.character(text: '|'),
VirtualKey.character(text: '•'),
VirtualKey.character(text: '√'),
VirtualKey.character(text: 'π'),
VirtualKey.character(text: '÷'),
VirtualKey.character(text: '×'),
VirtualKey.character(text: '§'),
VirtualKey.character(text: '∆'),
],
[
VirtualKey.character(text: '£'),
VirtualKey.character(text: '¥'),
VirtualKey.character(text: r'$'),
VirtualKey.character(text: '¢'),
VirtualKey.character(text: '^'),
VirtualKey.character(text: '°'),
VirtualKey.character(text: '='),
VirtualKey.character(text: '{'),
VirtualKey.character(text: '}'),
VirtualKey.character(text: r'\'),
],
[
VirtualKey.action(action: KeyAction.symbolsAlt),
VirtualKey.character(text: '%'),
VirtualKey.character(text: '©'),
VirtualKey.character(text: '®'),
VirtualKey.character(text: '™'),
VirtualKey.character(text: '✓'),
VirtualKey.character(text: '['),
VirtualKey.character(text: ']'),
VirtualKey.action(action: KeyAction.backSpace),
],
[
VirtualKey.action(action: KeyAction.symbols, flex: 2),
VirtualKey.character(text: '<'),
VirtualKey.action(action: KeyAction.space, flex: 4),
VirtualKey.character(text: '>'),
VirtualKey.action(action: KeyAction.enter, flex: 2),
],
];

/// Email keyboard - primary layout.
final KeyboardLayout _emailLayoutPrimary = [
[
VirtualKey.character(text: 'a'),
VirtualKey.character(text: 'z'),
VirtualKey.character(text: 'e'),
VirtualKey.character(text: 'r'),
VirtualKey.character(text: 't'),
VirtualKey.character(text: 'y'),
VirtualKey.character(text: 'u'),
VirtualKey.character(text: 'i'),
VirtualKey.character(text: 'o'),
VirtualKey.character(text: 'p'),
],
[
VirtualKey.character(text: 'q'),
VirtualKey.character(text: 's'),
VirtualKey.character(text: 'd'),
VirtualKey.character(text: 'f'),
VirtualKey.character(text: 'g'),
VirtualKey.character(text: 'h'),
VirtualKey.character(text: 'j'),
VirtualKey.character(text: 'k'),
VirtualKey.character(text: 'l'),
VirtualKey.character(text: 'm'),
],
[
VirtualKey.action(action: KeyAction.shift),
VirtualKey.character(text: 'w'),
VirtualKey.character(text: 'x'),
VirtualKey.character(text: 'c'),
VirtualKey.character(text: 'v'),
VirtualKey.character(text: 'b'),
VirtualKey.character(text: 'n'),
VirtualKey.character(text: ','),
VirtualKey.action(action: KeyAction.backSpace),
],
[
VirtualKey.action(action: KeyAction.symbols),
VirtualKey.character(text: '@'),
VirtualKey.action(action: KeyAction.space, flex: 3),
VirtualKey.character(text: '.'),
VirtualKey.character(text: '_'),
VirtualKey.character(text: '-'),
VirtualKey.action(action: KeyAction.done),
],
];

/// Email keyboard - secondary & tertiary layouts.
/// These can mirror the text layout secondary/tertiary or include French-specific symbols as needed.
final KeyboardLayout _emailLayoutSecondary = _textLayoutSecondary;
final KeyboardLayout _emailLayoutTertiary = _textLayoutTertiary;

/// URL keyboard - primary layout.
final KeyboardLayout _urlLayoutPrimary = [
[
VirtualKey.character(text: 'a'),
VirtualKey.character(text: 'z'),
VirtualKey.character(text: 'e'),
VirtualKey.character(text: 'r'),
VirtualKey.character(text: 't'),
VirtualKey.character(text: 'y'),
VirtualKey.character(text: 'u'),
VirtualKey.character(text: 'i'),
VirtualKey.character(text: 'o'),
VirtualKey.character(text: 'p'),
],
[
VirtualKey.character(text: 'q'),
VirtualKey.character(text: 's'),
VirtualKey.character(text: 'd'),
VirtualKey.character(text: 'f'),
VirtualKey.character(text: 'g'),
VirtualKey.character(text: 'h'),
VirtualKey.character(text: 'j'),
VirtualKey.character(text: 'k'),
VirtualKey.character(text: 'l'),
VirtualKey.character(text: 'm'),
],
[
VirtualKey.action(action: KeyAction.shift),
VirtualKey.character(text: 'w'),
VirtualKey.character(text: 'x'),
VirtualKey.character(text: 'c'),
VirtualKey.character(text: 'v'),
VirtualKey.character(text: 'b'),
VirtualKey.character(text: 'n'),
VirtualKey.character(text: ','),
VirtualKey.action(action: KeyAction.backSpace),
],
[
VirtualKey.action(action: KeyAction.symbols),
VirtualKey.character(text: '/'),
VirtualKey.character(text: '.'),
VirtualKey.action(action: KeyAction.space, flex: 2),
VirtualKey.character(text: '-'),
VirtualKey.character(text: ':'),
VirtualKey.action(action: KeyAction.go),
],
];

final KeyboardLayout _urlLayoutSecondary = _textLayoutSecondary;
final KeyboardLayout _urlLayoutTertiary = _textLayoutTertiary;

/// Number, signed number, and phone layouts remain the same as in English.
final KeyboardLayout _numberLayout = [
[VirtualKey.character(text: '1'), VirtualKey.character(text: '2'), VirtualKey.character(text: '3')],
[VirtualKey.character(text: '4'), VirtualKey.character(text: '5'), VirtualKey.character(text: '6')],
[VirtualKey.character(text: '7'), VirtualKey.character(text: '8'), VirtualKey.character(text: '9')],
[VirtualKey.character(text: '.'), VirtualKey.character(text: '0'), VirtualKey.action(action: KeyAction.backSpace)],
];

final KeyboardLayout _signedNumberLayout = [
[VirtualKey.character(text: '1'), VirtualKey.character(text: '2'), VirtualKey.character(text: '3')],
[VirtualKey.character(text: '4'), VirtualKey.character(text: '5'), VirtualKey.character(text: '6')],
[VirtualKey.character(text: '7'), VirtualKey.character(text: '8'), VirtualKey.character(text: '9')],
[VirtualKey.character(text: '-'), VirtualKey.character(text: '0'), VirtualKey.character(text: '.')],
[VirtualKey.action(action: KeyAction.backSpace, flex: 2), VirtualKey.action(action: KeyAction.done)],
];

final KeyboardLayout _phoneLayout = [
[VirtualKey.character(text: '1'), VirtualKey.character(text: '2'), VirtualKey.character(text: '3')],
[VirtualKey.character(text: '4'), VirtualKey.character(text: '5'), VirtualKey.character(text: '6')],
[VirtualKey.character(text: '7'), VirtualKey.character(text: '8'), VirtualKey.character(text: '9')],
[VirtualKey.character(text: '*'), VirtualKey.character(text: '0'), VirtualKey.character(text: '#')],
[
VirtualKey.character(text: '+'),
VirtualKey.action(action: KeyAction.backSpace),
VirtualKey.action(action: KeyAction.call),
],
];

/// French (AZERTY) keyboard language.
final KeyboardLanguage frenchLanguage = KeyboardLanguage(
code: 'fr',
name: 'French',
nativeName: 'Français',
textLayouts: KeyboardLayoutSet(
primary: _textLayoutPrimary,
secondary: _textLayoutSecondary,
tertiary: _textLayoutTertiary,
),
emailLayouts: KeyboardLayoutSet(
primary: _emailLayoutPrimary,
secondary: _emailLayoutSecondary,
tertiary: _emailLayoutTertiary,
),
urlLayouts: KeyboardLayoutSet(
primary: _urlLayoutPrimary,
secondary: _urlLayoutSecondary,
tertiary: _urlLayoutTertiary,
),
numberLayouts: KeyboardLayoutSet.single(_numberLayout),
numberSignedLayouts: KeyboardLayoutSet.single(_signedNumberLayout),
numberDecimalLayouts: KeyboardLayoutSet.single(_numberLayout),
phoneLayouts: KeyboardLayoutSet.single(_phoneLayout),
);
1 change: 1 addition & 0 deletions lib/src/layouts/languages/languages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ library;

export 'bengali.dart';
export 'english.dart';
export 'french.dart';
Loading
Loading