determine custom templates in custom module hook_preprocess_page function
function my_module_preprocess_page(&amp;$vars) {
$header = drupal_get_http_header('status');
if ($header == '404 Not Found') {
  $vars['theme_hook_suggestions'][] = 'page__404';
}
}


function my_module_theme() {
  return array(
    'page__404' =&gt; array(
      'template' =&gt; 'page__404',
      'variables' =&gt; array('xxx' =&gt; null), 
      'path' =&gt; drupal_get_path('module', 'my_module')
    ),
  );
}


thanks to sareed, drush vset theme_debug 1 allowed me to see :

&lt;!-- THEME DEBUG --&gt;
&lt;!-- CALL: theme('page') --&gt;
&lt;!-- FILE NAME SUGGESTIONS:
   * page--404.tpl.php
   * page--psnmssss.tpl.php
   * page.tpl.php
--&gt;
&lt;!-- BEGIN OUTPUT from 'my_module/page__404.tpl.php' --&gt;

&lt;!-- END OUTPUT from 'my_module/page__404.tpl.php' --&gt;


so i changed page--404 to page__404 and it worked

how could i restrict the template suggestion only for the content region of the page ?