Clerics with certain domains get it.
Don't go crazy now. (we don't have those domains)
To state this is incorrect. Unless specified in any supplement handbook, if the text reads "Cleric X" then a Cleric capable of casting X spell level has access. Domain spells only come into play, as seen across all forms as documentation when specifically labelled as such.
To bring in some empirical examples:
Below is the 3.5e version of Mordenkainen's Disjunction (Mage's Disjunction).
Mage’s Disjunction
AbjurationLevel: Magic 9, Sor/Wiz 9
Components: V
Casting Time: 1 standard action
Range: Close (25 ft. + 5 ft./2 levels)
Area: All magical effects and magic items within a 40-ft.-radius burst
Duration: Instantaneous
Saving Throw: Will negates (object)
Spell Resistance: No
It's available to Clerics with the Magic Domain. As clearly seen in the text, it explicitly states
Magic 9, instead of
Cleric 9. This in turn means it is a
Domain Spell of 9th Level and only those with that Domain can access it. Moving on...
Blade Barrier
Evocation [Force]Level: Clr 6, Good 6, War 6
Components: V, S
Casting Time: 1 standard action
Range: Medium (100 ft. + 10 ft./level)
Effect: Wall of whirling blades up to 20 ft. long/ level, or a ringed wall of whirling blades with a radius of up to 5 ft. per two levels; either form 20 ft. high
Duration: 1 min./level (D)
Saving Throw: Reflex half or Reflex negates; see text
Spell Resistance: Yes
Blade Barrier is accessible to both the Good and War domain lists, as well as Cleric as clearly shown in the text. It is a spell available to
all clerics, however those with the Good and/or War domains, also have access to Blade Barrier as a Domain Spell slot.
With this in mind, Weapon of Impact is accessible to all clerics. By RAW and RAI. There is no other acceptable interpretation beyond that. To say otherwise is to deny what is blatantly before your own eyes.
[Edit] As for implementing Keen to affect all weapons, it can be done without haks or overrides. Simply modify a custom spell hook to apply the Keen 'property' (not the Keen Edge spell effect) to an item temporarily when 'Keen Edge' is cast.
You know, check for weapon in inventory (primary weapon slot): object oWeapon = GetItemInSlot(INVENTORY_SLOT_WEAPON, oPC);
Then apply ITEM_PROPERTY_KEEN with a DURATION_TYPE_TEMPORARY, add in a Caster Level check for duration purposes and voila! It's definitely not the cleanest script (I'm no scripter, so my actual knowledge on how this works is limited), but with a bit of refinement, it'll work without much issue.