diff --git a/CHANGELOG.md b/CHANGELOG.md
index b887dee..cf447ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 1.3.0
+
+* Add camelCase constant names as alternatives for current snake_case constants.
+  Example `$doubleQuote` as alternative to `$double_quote`.
+* Internal tweaks to flag parsing.
+* Switch to using `package:lints`.
+
 ## 1.2.0
 
 * Stable release for null safety.
diff --git a/README.md b/README.md
index a6951f0..23be3f0 100644
--- a/README.md
+++ b/README.md
@@ -38,14 +38,14 @@
 
 The `ascii.dart` library defines a symbolic name for each ASCII character.
 Some characters have more than one name. For example the common name `$tab`
-and the official abbreviation `$ht` for the horisontal tab.
+and the official abbreviation `$ht` for the horizontal tab.
 
 The `html_entity.dart` library defines a constant for each HTML 4.01 character
 entity using their standard entity abbreviation, including case.
 Examples: `$nbsp` for `&nbps;`, `$aring` for the lower-case `&aring;`
 and `$Aring` for the upper-case `&Aring;`.
 
-The HTML entities include all characters in the Latin-1 code page, greek
+The HTML entities include all characters in the Latin-1 code page, Greek
 letters and some mathematical symbols.
 
 The `charcode.dart` library exports both `ascii.dart` and
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 007066a..6d1ff7a 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -2,9 +2,4 @@
 # for details. All rights reserved. Use of this source is governed by a
 # BSD-style license that can be found in the LICENSE file.
 
-include: package:pedantic/analysis_options.1.9.0.yaml
-analyzer:
-  errors:
-    annotate_overrides: ignore
-    prefer_single_quotes: ignore
-    use_function_type_syntax_for_parameters: ignore
+include: package:lints/recommended.yaml
diff --git a/bin/charcode.dart b/bin/charcode.dart
index 02ae2a4..3acadb4 100644
--- a/bin/charcode.dart
+++ b/bin/charcode.dart
@@ -70,7 +70,7 @@
     ..add(FlagConfig("?", null, "help",
         description: "Display this usage information"))
     ..add(FlagConfig.optionalParameter("p", "p", "prefix", "",
-        description: "Sets prefix for later generated constants",
+        description: "Sets prefix for later generated constants.",
         valueDescription: "PREFIX"))
     ..add(FlagConfig.requiredParameter("o", "o", "output",
         description: "Write generated code to file instead of stdout",
@@ -84,7 +84,7 @@
 
   for (var arg in parseFlags(flags, args, stderr.writeln)) {
     var key = arg.key;
-    if (key == null) {
+    if (!arg.isFlag) {
       // Not a flag, value is command line argument.
       declarations.parse(arg.value!);
     } else {
@@ -178,8 +178,8 @@
     output.writeln("const int $prefix$name = 0x$hex;");
   }
 
-  /// Orders entries by [charCode] first, then by
-  /// prefixed and name.
+  /// Orders entries by [charCode] first, then by prefixed and name.
+  @override
   int compareTo(Entry other) {
     var delta = charCode - other.charCode;
     if (delta == 0) {
@@ -886,25 +886,32 @@
     ..rename(0x2666, "diams", "black diamond suit ('♦')");
 }
 
+/// Usage string printed if the `--help` or `-?` flags are passed.
+///
+/// Flag definitions are appended after the text.
 const String usageString = r"""
 Usage:
   charcode [-h] [-oFILE] (<character-range> | <rename> | -pPREFIX | -fFILE)*
 
+  Emits constant declarations for the characaters specified by character ranges.
+  The constants use the pre-defined names and descriptions for ASCII characters.
+
   A <character-range> is either
-   - A literal character,
-   - An escaped character `\n`, `\r`, `\t`, `\xhh`, `\uhhhh` or `\dd*`,
-       where `h` is a hexadecimal digit and `d` is a decimal digit.
-   - Two characters separated by `-`,
-   - The `\d`, `\w` or `\s` escapes, or
+   - a literal character,
+   - an escaped character `\n`, `\r`, `\t`, `\xHH`, `\uHHHH` or `\DD*`,
+       where `H` is a hexadecimal digit and `D` is a decimal digit.
+   - two such characters separated by `-`,
+   - The `\d` (`0-9`), `\w` (`a-zA-Z0-9$_`) or `\s` (`\x20\t\r\n`) escapes, or
    - A sequence of character ranges.
   Examples: `a`, `a-z`, `\da-fA-F`, `\x00-\uFFFF`.
 
   A <rename> declaration is a single or escaped character, a `=` and an
   identifier name, optionally followed by a `:` and a description
   Example:  x=cross:\"a cross product.\"
-  The declaration names or renames the character and adds or changes
-  the associated description, but will not add the character to the output.
-  Following occurrences of the character will use the new name.
+  The declaration names or renames the character, and adds or changes
+  the associated description, but will not emit the character to the output.
+  Following occurrences of the character in character ranges
+  will use the new name.
   Example: `charcode y y=why x-z` will generate `$y` for the character
     code of "y", then `$x`, `$why` and `$z` as well.
 
diff --git a/bin/src/uflags.dart b/bin/src/uflags.dart
index b261cc3..2a0c6e7 100644
--- a/bin/src/uflags.dart
+++ b/bin/src/uflags.dart
@@ -36,10 +36,11 @@
 /// It has a default value to use if the parameter is omitted.
 ///
 /// An unrecognized or malformed flag is reported using the [warn]
-/// function.
+/// function. If omitted, the [warn] function defaults to printing
+/// using the [print] function.
 Iterable<CmdLineArg<T>> parseFlags<T>(
     Flags<T> flags, Iterable<String> arguments,
-    [void warn(String warning)?]) sync* {
+    [void Function(String warning)? warn]) sync* {
   warn ??= _printWarning;
   var args = arguments.iterator;
   while (args.moveNext()) {
@@ -356,15 +357,29 @@
   }
 }
 
+/// Converts names to canonical form.
+///
+/// Canonical form consists of only *lower case ASCII letters*,
+/// *decimal digits* and single *dash* characters (`-`) separating letter/digit
+/// sequences.
+///
+/// All upper-case letters are made lower-case.
+/// If the input-name contains sequences of non-letter, non-digit characters,
+/// each sequence is replaced by a single `-`.
+/// Leading and trailing `-`s are then ignored
+/// if the result contains anything other than `-`.
 String? canonicalizeName(String? name) {
   if (name == null) return name;
   const $dash = 0x2d;
   var wasDash = false;
   var i = 0;
+  var upperCase = 0x20;
   while (i < name.length) {
     var char = name.codeUnitAt(i++);
-    if (char ^ 0x30 <= 9 || char >= 0x61 && char <= 0x7b) {
+    var lcChar = char | 0x20;
+    if (char ^ 0x30 <= 9 || lcChar >= 0x61 && lcChar <= 0x7b) {
       wasDash = false;
+      upperCase &= char;
       continue;
     }
     if (char == $dash && !wasDash) {
@@ -375,27 +390,21 @@
     var bytes = Uint8List(name.length);
     var j = 0;
     for (; j < i - 1; j++) {
-      bytes[j] = name.codeUnitAt(j);
+      bytes[j] = name.codeUnitAt(j) | 0x20;
     }
 
     // Convert all letters to lower-case, all non letter/digits to a single `-`.
     outer:
     do {
-      if (char >= 0x41 && char <= 0x5b) {
-        bytes[j++] = char | 0x20;
-        i++;
-        wasDash = false;
-      } else {
-        if (!wasDash) {
-          bytes[j++] = $dash;
-          i++;
-          wasDash = true;
-        }
+      if (!wasDash) {
+        bytes[j++] = $dash;
+        wasDash = true;
       }
       while (i < name.length) {
         char = name.codeUnitAt(i++);
-        if (char ^ 0x30 <= 9 || char >= 0x61 && char <= 0x7b) {
-          bytes[j++] = char;
+        var lcChar = char | 0x20;
+        if (char ^ 0x30 <= 9 || lcChar >= 0x61 && lcChar <= 0x7b) {
+          bytes[j++] = lcChar;
           wasDash = false;
           continue;
         }
@@ -408,9 +417,17 @@
       }
       break;
     } while (true);
-    return String.fromCharCodes(bytes);
+    var start = 0;
+    var end = j;
+    if (end > start + 1) {
+      // Omit leading/trailing dashes.
+      if (bytes[start] == $dash) start++;
+      if (bytes[end - 1] == $dash) end--;
+    }
+    return String.fromCharCodes(
+        Uint8List.sublistView(bytes, start, end));
   }
-  return name;
+  return upperCase == 0 ? name.toLowerCase() : name;
 }
 
 void _printWarning(String message) {
diff --git a/lib/ascii.dart b/lib/ascii.dart
index 319ab73..8da5b8b 100644
--- a/lib/ascii.dart
+++ b/lib/ascii.dart
@@ -17,12 +17,14 @@
 /// For less common symbols, a selection of common names are used.
 ///
 /// For parenthetical markers, there is both a short name, [$lparen]/[$rparen],
-/// and a long name, [$open_paren]/ [$close_paren].
+/// and a long name, [$openParen]/ [$closeParen].
 ///
 /// For common HTML entities, the entity names are also usable as symbolic
 /// names: [$apos], [$quot], [$lt], [$gt], and [$amp].
 library charcode.ascii.dollar_lowercase;
 
+// ignore_for_file: constant_identifier_names
+
 // Control characters.
 
 /// "Null character" control character.
@@ -132,377 +134,419 @@
 /// Space character.
 const int $space = 0x20;
 
-/// Character '!'.
+/// Character `!`.
 const int $exclamation = 0x21;
 
-/// Character '"', short name.
+/// Character `"', short nam`.
 const int $quot = 0x22;
 
-/// Character '"'.
+/// Character `"`.
 const int $quote = 0x22;
 
-/// Character '"'.
+/// Character `"`.
 const int $double_quote = 0x22;
 
-/// Character '"'.
+/// Character `"`.
+const int $doubleQuote = 0x22;
+
+/// Character `"`.
 const int $quotation = 0x22;
 
-/// Character '#'.
+/// Character `#`.
 const int $hash = 0x23;
 
-/// Character '$'.
+/// Character `$`.
 const int $$ = 0x24;
 
-/// Character '$'.
+/// Character `$`.
 const int $dollar = 0x24;
 
-/// Character '%'.
+/// Character `%`.
 const int $percent = 0x25;
 
-/// Character '&', short name.
+/// Character `&`, short name.
 const int $amp = 0x26;
 
-/// Character '&'.
+/// Character `&`.
 const int $ampersand = 0x26;
 
-/// Character "'".
+/// Character `'`.
 const int $apos = 0x27;
 
-/// Character '''.
+/// Character `'`.
 const int $apostrophe = 0x27;
 
-/// Character '''.
+/// Character `'`.
 const int $single_quote = 0x27;
 
-/// Character '('.
+/// Character `'`.
+const int $singleQuote = 0x27;
+
+/// Character `(`.
 const int $lparen = 0x28;
 
-/// Character '('.
+/// Character `(`.
 const int $open_paren = 0x28;
 
-/// Character '('.
+/// Character `(`.
+const int $openParen = 0x28;
+
+/// Character `(`.
 const int $open_parenthesis = 0x28;
 
-/// Character ')'.
+/// Character `(`.
+const int $openParenthesis = 0x28;
+
+/// Character `)`.
 const int $rparen = 0x29;
 
-/// Character ')'.
+/// Character `)`.
 const int $close_paren = 0x29;
 
-/// Character ')'.
+/// Character `)`.
+const int $closeParen = 0x29;
+
+/// Character `)`.
 const int $close_parenthesis = 0x29;
 
-/// Character '*'.
+/// Character `)`.
+const int $closeParenthesis = 0x29;
+
+/// Character `*`.
 const int $asterisk = 0x2A;
 
-/// Character '+'.
+/// Character `+`.
 const int $plus = 0x2B;
 
-/// Character ','.
+/// Character `,`.
 const int $comma = 0x2C;
 
-/// Character '-'.
+/// Character `-`.
 const int $minus = 0x2D;
 
-/// Character '-'.
+/// Character `-`.
 const int $dash = 0x2D;
 
-/// Character '.'.
+/// Character `.`.
 const int $dot = 0x2E;
 
-/// Character '.'.
+/// Character `.`.
 const int $fullstop = 0x2E;
 
-/// Character '/'.
+/// Character `/`.
 const int $slash = 0x2F;
 
-/// Character '/'.
+/// Character `/`.
 const int $solidus = 0x2F;
 
-/// Character '/'.
+/// Character `/`.
 const int $division = 0x2F;
 
-/// Character '0'.
+/// Character `0`.
 const int $0 = 0x30;
 
-/// Character '1'.
+/// Character `1`.
 const int $1 = 0x31;
 
-/// Character '2'.
+/// Character `2`.
 const int $2 = 0x32;
 
-/// Character '3'.
+/// Character `3`.
 const int $3 = 0x33;
 
-/// Character '4'.
+/// Character `4`.
 const int $4 = 0x34;
 
-/// Character '5'.
+/// Character `5`.
 const int $5 = 0x35;
 
-/// Character '6'.
+/// Character `6`.
 const int $6 = 0x36;
 
-/// Character '7'.
+/// Character `7`.
 const int $7 = 0x37;
 
-/// Character '8'.
+/// Character `8`.
 const int $8 = 0x38;
 
-/// Character '9'.
+/// Character `9`.
 const int $9 = 0x39;
 
-/// Character ':'.
+/// Character `:`.
 const int $colon = 0x3A;
 
-/// Character ';'.
+/// Character `;`.
 const int $semicolon = 0x3B;
 
-/// Character '<'.
+/// Character `<`.
 const int $lt = 0x3C;
 
-/// Character '<'.
+/// Character `<`.
 const int $less_than = 0x3C;
 
-/// Character '<'.
+/// Character `<`.
+const int $lessThan = 0x3C;
+
+/// Character `<`.
 const int $langle = 0x3C;
 
-/// Character '<'.
+/// Character `<`.
 const int $open_angle = 0x3C;
 
-/// Character '='.
+/// Character `<`.
+const int $openAngle = 0x3C;
+
+/// Character `=`.
 const int $equal = 0x3D;
 
-/// Character '>'.
+/// Character `>`.
 const int $gt = 0x3E;
 
-/// Character '>'.
+/// Character `>`.
 const int $greater_than = 0x3E;
 
-/// Character '>'.
+/// Character `>`.
+const int $greaterThan = 0x3E;
+
+/// Character `>`.
 const int $rangle = 0x3E;
 
-/// Character '>'.
+/// Character `>`.
 const int $close_angle = 0x3E;
 
-/// Character '?'.
+/// Character `>`.
+const int $closeAngle = 0x3E;
+
+/// Character `?`.
 const int $question = 0x3F;
 
-/// Character '@'.
+/// Character `@`.
 const int $at = 0x40;
 
-/// Character 'A'.
+/// Character `A`.
 const int $A = 0x41;
 
-/// Character 'B'.
+/// Character `B`.
 const int $B = 0x42;
 
-/// Character 'C'.
+/// Character `C`.
 const int $C = 0x43;
 
-/// Character 'D'.
+/// Character `D`.
 const int $D = 0x44;
 
-/// Character 'E'.
+/// Character `E`.
 const int $E = 0x45;
 
-/// Character 'F'.
+/// Character `F`.
 const int $F = 0x46;
 
-/// Character 'G'.
+/// Character `G`.
 const int $G = 0x47;
 
-/// Character 'H'.
+/// Character `H`.
 const int $H = 0x48;
 
-/// Character 'I'.
+/// Character `I`.
 const int $I = 0x49;
 
-/// Character 'J'.
+/// Character `J`.
 const int $J = 0x4A;
 
-/// Character 'K'.
+/// Character `K`.
 const int $K = 0x4B;
 
-/// Character 'L'.
+/// Character `L`.
 const int $L = 0x4C;
 
-/// Character 'M'.
+/// Character `M`.
 const int $M = 0x4D;
 
-/// Character 'N'.
+/// Character `N`.
 const int $N = 0x4E;
 
-/// Character 'O'.
+/// Character `O`.
 const int $O = 0x4F;
 
-/// Character 'P'.
+/// Character `P`.
 const int $P = 0x50;
 
-/// Character 'Q'.
+/// Character `Q`.
 const int $Q = 0x51;
 
-/// Character 'R'.
+/// Character `R`.
 const int $R = 0x52;
 
-/// Character 'S'.
+/// Character `S`.
 const int $S = 0x53;
 
-/// Character 'T'.
+/// Character `T`.
 const int $T = 0x54;
 
-/// Character 'U'.
+/// Character `U`.
 const int $U = 0x55;
 
-/// Character 'V'.
+/// Character `V`.
 const int $V = 0x56;
 
-/// Character 'W'.
+/// Character `W`.
 const int $W = 0x57;
 
-/// Character 'X'.
+/// Character `X`.
 const int $X = 0x58;
 
-/// Character 'Y'.
+/// Character `Y`.
 const int $Y = 0x59;
 
-/// Character 'Z'.
+/// Character `Z`.
 const int $Z = 0x5A;
 
-/// Character '['.
+/// Character `[`.
 const int $lbracket = 0x5B;
 
-/// Character '['.
+/// Character `[`.
 const int $open_bracket = 0x5B;
 
-/// Character '\'.
+/// Character `[`.
+const int $openBracket = 0x5B;
+
+/// Character `\`.
 const int $backslash = 0x5C;
 
-/// Character ']'.
+/// Character `]`.
 const int $rbracket = 0x5D;
 
-/// Character ']'.
+/// Character `]`.
 const int $close_bracket = 0x5D;
 
-/// Character '^'.
+/// Character `]`.
+const int $closeBracket = 0x5D;
+
+/// Character `^`.
 const int $circumflex = 0x5E;
 
-/// Character '^'.
+/// Character `^`.
 const int $caret = 0x5E;
 
-/// Character '^'.
+/// Character `^`.
 const int $hat = 0x5E;
 
-/// Character '_'.
+/// Character `_`.
 const int $_ = 0x5F;
 
-/// Character '_'.
+/// Character `_`.
 const int $underscore = 0x5F;
 
-/// Character '_'.
+/// Character `_`.
 const int $underline = 0x5F;
 
-/// Character '`'.
+/// Character `` ` ``.
 const int $backquote = 0x60;
 
-/// Character '`'.
+/// Character `` ` ``.
 const int $grave = 0x60;
 
-/// Character 'a'.
+/// Character `a`.
 const int $a = 0x61;
 
-/// Character 'b'.
+/// Character `b`.
 const int $b = 0x62;
 
-/// Character 'c'.
+/// Character `c`.
 const int $c = 0x63;
 
-/// Character 'd'.
+/// Character `d`.
 const int $d = 0x64;
 
-/// Character 'e'.
+/// Character `e`.
 const int $e = 0x65;
 
-/// Character 'f'.
+/// Character `f`.
 const int $f = 0x66;
 
-/// Character 'g'.
+/// Character `g`.
 const int $g = 0x67;
 
-/// Character 'h'.
+/// Character `h`.
 const int $h = 0x68;
 
-/// Character 'i'.
+/// Character `i`.
 const int $i = 0x69;
 
-/// Character 'j'.
+/// Character `j`.
 const int $j = 0x6A;
 
-/// Character 'k'.
+/// Character `k`.
 const int $k = 0x6B;
 
-/// Character 'l'.
+/// Character `l`.
 const int $l = 0x6C;
 
-/// Character 'm'.
+/// Character `m`.
 const int $m = 0x6D;
 
-/// Character 'n'.
+/// Character `n`.
 const int $n = 0x6E;
 
-/// Character 'o'.
+/// Character `o`.
 const int $o = 0x6F;
 
-/// Character 'p'.
+/// Character `p`.
 const int $p = 0x70;
 
-/// Character 'q'.
+/// Character `q`.
 const int $q = 0x71;
 
-/// Character 'r'.
+/// Character `r`.
 const int $r = 0x72;
 
-/// Character 's'.
+/// Character `s`.
 const int $s = 0x73;
 
-/// Character 't'.
+/// Character `t`.
 const int $t = 0x74;
 
-/// Character 'u'.
+/// Character `u`.
 const int $u = 0x75;
 
-/// Character 'v'.
+/// Character `v`.
 const int $v = 0x76;
 
-/// Character 'w'.
+/// Character `w`.
 const int $w = 0x77;
 
-/// Character 'x'.
+/// Character `x`.
 const int $x = 0x78;
 
-/// Character 'y'.
+/// Character `y`.
 const int $y = 0x79;
 
-/// Character 'z'.
+/// Character `z`.
 const int $z = 0x7A;
 
-/// Character '{'.
+/// Character `{`.
 const int $lbrace = 0x7B;
 
-/// Character '{'.
+/// Character `{`.
 const int $open_brace = 0x7B;
 
-/// Character '|'.
+/// Character `{`.
+const int $openBrace = 0x7B;
+
+/// Character `|`.
 const int $pipe = 0x7C;
 
-/// Character '|'.
+/// Character `|`.
 const int $bar = 0x7C;
 
-/// Character '}'.
+/// Character `}`.
 const int $rbrace = 0x7D;
 
-/// Character '}'.
+/// Character `}`.
 const int $close_brace = 0x7D;
 
-/// Character '~'.
+/// Character `}`.
+const int $closeBrace = 0x7D;
+
+/// Character `~`.
 const int $tilde = 0x7E;
diff --git a/pubspec.yaml b/pubspec.yaml
index 96063f6..fcfbb91 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: charcode
-version: 1.2.0
+version: 1.3.0
 repository: https://github.com/lrhn/charcode
 description: >-
   Constants for ASCII and common non-ASCII character codes.
@@ -9,4 +9,4 @@
 
 dev_dependencies:
   test: ^1.16.0-nullsafety
-  pedantic: ^1.10.0-nullsafety
+  lints: ^1.0.0
diff --git a/test/charcode_test.dart b/test/charcode_test.dart
index 04cb557..014c84c 100644
--- a/test/charcode_test.dart
+++ b/test/charcode_test.dart
@@ -30,7 +30,7 @@
     expect(output, contains(r"int $a = 0x61"));
     expect(output, isNot(contains(r"int $b = 0x62")));
     expect(output, contains(r"int $bee = 0x62"));
-    expect(output, contains(r"int Explanation!"));
+    expect(output, contains(r"Explanation!"));
     expect(output, contains(r"int $c = 0x63"));
   });
 
@@ -38,7 +38,7 @@
     expect(count(output, r"$"), 2);
     expect(output, contains(r"int $b = 0x62"));
     expect(output, contains(r"int $bee = 0x62"));
-    expect(output, contains(r"int Explanation!"));
+    expect(output, contains(r"Explanation!"));
   });
 
   testOutput(["a-c"], (output) {
