I went through the process of creating a new module. That worked out nicely and was much easier to do than I thought, due to Steve's excellent docs!
Afterward, I experimented a bit more and discovered that I don't actually need the module at all. Instead, the following directives in fields.ini accomplish the same thing:
; display a numeric keypad
widget:atts:type = number
; restrict numeric keypad to only digits
widget:atts:pattern = '\d*'
; display a telephone dialer keypad
widget:atts:type = tel
This blog post provides good examples of how these keypads (and other input type elements) look on both iOS and Android devices:
http://blog.teamtreehouse.com/using-html5-input-types-to-enhance-the-mobile-browsing-experience
The date and time options are a bit more difficult to implement, since there are already custom widgets for these elements defined in QuickForm and Xataface. I am experimenting with some changes to those as well now so they appear properly in both a desktop and mobile browser.
Alan