Remove dependency on `package:charcode`.
diff --git a/pkgs/io/CHANGELOG.md b/pkgs/io/CHANGELOG.md
index bd92971..b43e242 100644
--- a/pkgs/io/CHANGELOG.md
+++ b/pkgs/io/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## 0.3.5-dev
 
 * Require Dart >=2.1
+* Remove dependency on `package:charcode`.
 
 ## 0.3.4
 
@@ -41,7 +42,7 @@
 main() async {
   // Prints the first line entered on stdin.
   print(await sharedStdIn.nextLine());
-  
+
   // Prints all remaining lines.
   await for (final line in sharedStdIn.lines) {
     print(line);
@@ -79,7 +80,7 @@
 
 - Added the `shellSplit()` function, which parses a list of arguments in the
   same manner as [the POSIX shell][what_is_posix_shell].
-  
+
 [what_is_posix_shell]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
 
 ## 0.2.0
diff --git a/pkgs/io/lib/src/charcodes.dart b/pkgs/io/lib/src/charcodes.dart
new file mode 100644
index 0000000..1bf9f55
--- /dev/null
+++ b/pkgs/io/lib/src/charcodes.dart
@@ -0,0 +1,36 @@
+// Copyright 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Generated using:
+//  pub global run charcode \$=dollar \'=single_quote \"=double_quote \
+//      \' '\\\n"$`# \t'
+
+/// "Horizontal Tab" control character, common name.
+const int $tab = 0x09;
+
+/// "Line feed" control character.
+const int $lf = 0x0a;
+
+/// Space character.
+const int $space = 0x20;
+
+/// Character `"`, short name.
+// ignore: constant_identifier_names
+const int $double_quote = 0x22;
+
+/// Character `#`.
+const int $hash = 0x23;
+
+/// Character `$`.
+const int $dollar = 0x24;
+
+/// Character "'".
+// ignore: constant_identifier_names
+const int $single_quote = 0x27;
+
+/// Character `\`.
+const int $backslash = 0x5c;
+
+/// Character `` ` ``.
+const int $backquote = 0x60;
diff --git a/pkgs/io/lib/src/shell_words.dart b/pkgs/io/lib/src/shell_words.dart
index 8e057d7..8b46d7a 100644
--- a/pkgs/io/lib/src/shell_words.dart
+++ b/pkgs/io/lib/src/shell_words.dart
@@ -4,9 +4,10 @@
 
 // ignore_for_file: comment_references
 
-import 'package:charcode/charcode.dart';
 import 'package:string_scanner/string_scanner.dart';
 
+import 'charcodes.dart';
+
 /// Splits [command] into tokens according to [the POSIX shell
 /// specification][spec].
 ///
diff --git a/pkgs/io/pubspec.yaml b/pkgs/io/pubspec.yaml
index 7bb19ba..2ec0d8e 100644
--- a/pkgs/io/pubspec.yaml
+++ b/pkgs/io/pubspec.yaml
@@ -9,7 +9,6 @@
   sdk: ">=2.1.0 <3.0.0"
 
 dependencies:
-  charcode: ^1.0.0
   meta: ^1.0.2
   path: ^1.5.1
   string_scanner: ">=0.1.5 <2.0.0"