-(define-key function-key-map [kp-home] [home])
-(define-key function-key-map [kp-left] [left])
-(define-key function-key-map [kp-up] [up])
-(define-key function-key-map [kp-right] [right])
-(define-key function-key-map [kp-down] [down])
-(define-key function-key-map [kp-prior] [prior])
-(define-key function-key-map [kp-next] [next])
-(define-key function-key-map [M-kp-next] [M-next])
-(define-key function-key-map [kp-end] [end])
-(define-key function-key-map [kp-begin] [begin])
-(define-key function-key-map [kp-insert] [insert])
+;; Currently we add keypad key combinations with basic modifiers
+;; (to complement plain bindings in "Keypad support" section in simple.el)
+;; Until [*-kp-home] is implemented, for more modifiers we could also use:
+;; (todo-powerset '(control meta shift hyper super alt)) (Bug#14397)
+(let ((modifiers '(nil (control) (meta) (control meta) (shift)
+ (control shift) (meta shift) (control meta shift)))
+ (keys '((kp-delete delete) (kp-insert insert)
+ (kp-end end) (kp-down down) (kp-next next)
+ (kp-left left) (kp-begin begin) (kp-right right)
+ (kp-home home) (kp-up up) (kp-prior prior)
+ (kp-enter enter) (kp-decimal ?.)
+ (kp-0 ?0) (kp-1 ?1) (kp-2 ?2) (kp-3 ?3) (kp-4 ?4)
+ (kp-5 ?5) (kp-6 ?6) (kp-7 ?7) (kp-8 ?8) (kp-9 ?9)
+ (kp-add ?+) (kp-subtract ?-) (kp-multiply ?*) (kp-divide ?/))))
+ (dolist (pair keys)
+ (dolist (mod modifiers)
+ (define-key function-key-map
+ (vector (append mod (list (nth 0 pair))))
+ (vector (append mod (list (nth 1 pair))))))))
+